an honest comparison

pulse vs sam local

They do different jobs — and you'll likely keep both. SAM is a deployment toolchain whose local mode spins up a Docker container per invocation. pulse is a long-lived local cloud: your API answers, SQS queues deliver to workers, DynamoDB tables persist — continuously, natively, with hot reload and event replay. Build against pulse all day; ship with sam deploy, unchanged.

choose pulse if…

  • you want the whole app running locally — API + queues + workers + tables, not one invoke at a time
  • you want the SQS → worker → dead-letter-queue loop, which sam local can't run
  • you want instant hot reload instead of container spin-up per invocation
  • you want to replay yesterday's exact event against today's code
  • you want to peek queues and browse tables without the AWS console

choose sam local if…

  • you're deploying — that's SAM's actual job, and pulse never replaces it
  • you're validating template.yaml / CloudFormation behavior
  • per-invoke container parity matters more to you than iteration speed
  • an occasional single `sam local invoke` covers your workflow

feedback after a code change

pulse17 ms invoke
sam localcontainer per invoke

memory while developing

pulse~50 MB
sam local100s of MB

bars drawn to linear scale — the sliver is the point

pulsesam local
Runs the whole app continuously API + queues + workers + tablesnot available
Cold start to working~100 mscontainer per invoke
Code changesave → donemostly re-invoke
Queue → worker → DLQ loop out of the boxnot available
Event replay & request stories built in
Deploys to AWSno — by design, keep sam deploy✓ its real job
Requirementsone 20 MB binaryDocker
Data persists across restarts free, defaultn/a
The honest version: pulse and SAM aren't rivals — they're two halves of one workflow. pulse is the dev server for the five hundred iterations between idea and staging; SAM is how the result ships. Your handlers are plain AWS SDK code with zero pulse imports, so `sam deploy` takes exactly what ran locally. Nothing to remove, nothing to translate.

try the fast half

Your local cloud, one command away

macOS · recommended
$brew install --cask geetnsh2k1/pulse/pulse

then run pulse tour — five minutes, hands-on, nothing simulated