Durable Workflows

Write complex workflows as code and let Inngest handle the rest. Inngest manages state, retries, logging and observability for you.

Create complex workflows with simple primitives

Inngest SDKs enable you to create complex workflows in any language. We created step.run to make writing durable code easier than ever before.

Chain steps that automatically retry

Decouple logic into steps that are retried automatically and cached.

Long running, durable workflows

Trigger workflows with events and pause functions for hours or days.

Wait for additional events

Pause your workflow and resume with events for simple, decoupled systems.

export const processVideo = inngest.createFunction(
  {
    name: "Process video upload", id: "process-video",
  },
  { event: "video.uploaded" },
  async ({ event, step }) => {
    // Steps that are prone to failure are automatically retried
    // Successful steps are cached and never re-run if a following step fails
    const transcript = await step.run('transcribe-video', async () => {
      return deepgram.transcribe(event.data.videoUrl);
    });
    const summary = await step.run('summarize-transcript', async () => {
      return llm.createCompletion({
        model: "gpt-3.5-turbo",
        prompt: createSummaryPrompt(transcript),
      });
    });
    await step.run('write-to-db', async () => {
      await db.videoSummaries.upsert({
        videoId: event.data.videoId,
        transcript,
        summary,
      });
    });
  }
)

Durable workflow engine, out-of-the-box

Avoid months of development time building a workflow engine from scratch. Build on top of Inngest's SDKs and primitives to offer endless options for customizable workflows to your users.

Run steps in series or parallel

Easily run parts of your workflow code in parallel, event on serverless. Always retried automatically on error.

Graphic of Run steps in series or parallel

Pause functions for additional input

Use step.waitForEvent() to pause your function until another event is received. Create human-in the middle workflows or communicate between long running jobs with events.

Graphic of Pause functions for additional input

Durable sleep for hours or weeks

Pause your function and schedule to resume it after a specific period of time. Your code stops running and Inngest resumes it when the time is right.

Graphic of Durable sleep for hours or weeks

Declarative job cancellation

Cancel jobs just by sending an event. No need to keep track of running jobs, Inngest can automatically match long running functions with cancellation events to kill jobs declaratively.

Graphic of Declarative job cancellation

Automatic retries

Every step of your function is retried whenever it throws an error. Customize the number of retries to ensure your functions are reliably executed.

Graphic of Automatic retries

Replay workflow functions

Forget dead letter queues. Fix your issues then replay a failed function in a single click.

Graphic of Replay workflow functions

Visual debugging and observability

Our visual function timeline UI makes debugging easier than ever. See exactly what happened in your function, and when without grepping logs.

Use the same tools from your local-first development server to the Inngest platform.

One of my goals was to simplify a complex workflow in a cloud world. If the abstractions exist, let's use them so engineers can focus on the business problem, not the not the infrastructure-as-code and primitives problem. The best infrastructure is the one you don't have to manage.

Image of Matthew Drooker
Matthew Drooker
CTO, SoundCloud

Start building today

Dive into our resources and learn how Inngest is the best solution for durable workflows.

Guide: Steps & Workflows

Learn how to use steps as building blocks for creating reliable workflows that run for hours and recover from failures.

View documentation

What are Durable Functions? A visual primer

An article with animated illustrations to cover the inner workings of Durable Functions

Read article

Running tasks in parallel

True workflow step parallelization on servers or serverless.

View documentation