Skip · Inngest · Durable workflows, any host

Inngest

Durable steps for code that runs on your own hosting. The same model as Lambda durable functions, with better flow control and a better dashboard.

In The Stack Weekly: W45: Lambda durable functions telemetry exporter, next to Temporal on Lambda, worth a pilot

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

Decision guides

Sources

Last reviewed by Nicolas Dao

Want this stack in your AWS account?

Cloudless Labs is a Sydney consultancy. We migrate on-premises systems to AWS, build serverless apps on this stack, and coach teams to ship with Claude Code and Codex.

Talk to us

Contact Us

For general inquiries, please contact us at:

For e-learning capabilities, please contact: