Inngest is the conductor, not the orchestra: your functions run on your own hosting, and Inngest stores the events and step results, then calls your endpoint for each step. Each step's result is saved, and a failure retries only that step, the same replay model as Lambda durable functions.
Two things it does better than durable functions, and I say so: flow control per tenant (concurrency per key, throttling, debounce, batching, priority) and a real dashboard with bulk replay. If your app isn't on AWS, it's a strong pick. For my clients it's a skip: durable functions do the same job inside their AWS account, with IAM, the VPC, Pulumi and their data in Sydney, for less. It's open source and can be self-hosted.
Use it when
- The app isn't on AWS (Next.js on Vercel, a Worker, a plain server) and needs durable multi-step jobs.
- Per-tenant fairness matters: concurrency per key, throttling, rate limits, debounce, batching and priority are built in, so one big customer can't take every slot.
- You want a dashboard with traces and bulk replay of failed runs, without building it.
Don't use it when
- An AWS client: event data and step results are stored in Inngest's cloud, in regions it doesn't publish.
- A single-step job: a queue and one function are cheaper and simpler.
Pricing
Free: 50,000 executions a month. Pro from $99 a month for 1M executions, then tiered from $0.000050 down to $0.000015 each. Every run counts one execution, plus one per step. Trace history 24 hours (Free) to 90 days (Enterprise).
Gotchas, with fixes
Gotcha: Replay runs the function again from the top on every step, like durable functions: code outside steps runs again, and renaming a step breaks runs in flight.
Fix: Keep everything non-deterministic inside steps, and add new steps instead of renaming old ones.
Gotcha: Inngest calls your code over HTTP, so your endpoint must be reachable from its cloud.
Fix: Protect the endpoint with the SDK's signing key, or use its always-connected workers instead of a public endpoint.
Provisioning
No provider · No Terraform provider
No Pulumi or Terraform provider. Functions are served from your own app through its SDK.
Use instead
Lambda durable functions, which do the same inside the client's AWS account, with IAM, the VPC and Pulumi.
Alternatives
- Lambda durable functions The same model inside AWS.
- Amazon SQS Simple one-step jobs.
Decision guides
Sources
Last reviewed by Nicolas Dao