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
| pulse | sam local | |
|---|---|---|
| Runs the whole app continuously | ✓ API + queues + workers + tables | ✗not available |
| Cold start to working | ~100 ms | container per invoke |
| Code change | save → done | mostly re-invoke |
| Queue → worker → DLQ loop | ✓ out of the box | ✗not available |
| Event replay & request stories | ✓ built in | ✗ |
| Deploys to AWS | no — by design, keep sam deploy | ✓ its real job |
| Requirements | one 20 MB binary | Docker |
| Data persists across restarts | ✓ free, default | ✗n/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/pulsethen run pulse tour — five minutes, hands-on, nothing simulated