THE [ OPEN ]
WORKFLOW SDK

STEPKITis an open source SDK for building production ready durable workflows. Write code that survives failures, runs anywhere, and never loses progress.

About StepKit

StepKit is an open source SDK built on top of the explicit step standard. This format was pioneered by Inngest as a method for building workflows with the most flexibility and least infrastructure overhead.

By using IDs for every step, functions remain stable and observable regardless of how your code evolves. StepKit was built for iteration.

This means you can:

  1. 01

    Choose any orchestration provider or language

  2. 02

    Deploy durable workflows anywhere

  3. 03

    Suspend and resume long running flows

  4. 04

    Safely refactor without breaking

  5. 05

    Mock and test workflows before deployment

1client.workflow({ id: "ai-code-review" }, async ({ input }, step) => {
2  // AI analyzes the pull request
3  const analysis = await step.run("ai-analyze-pr", async () => {
4    return await llm.chat({
5      model: "claude-3-5-sonnet",
6      prompt: `Review PR #${input.prNumber} for security issues`
7    });
8  });
9
10  // Run security scan based on AI findings
11  if (analysis.hasConcerns) {
12    await step.run("security-scan", async () => {
13      return await snyk.scan(input.repo, analysis.files);
14    });
15  }
16
17  // Suspend and wait for human approval
18  const decision = await step.waitForSignal("await-approval", {
19    signal: "pr/review.approved",
20    timeout: "24h"
21  });
22
23  // Auto-merge if approved
24  if (decision.approved) {
25    await step.run("merge-pr", async () => {
26      await github.mergePR(input.prNumber);
27    });
28  }
29});

Why use the StepKit SDK

001

PLATFORM, LANGUAGE &
ARCHITECTURE AGNOSTIC

Write (and re-write) functions that maintain durability through code, language, and platform changes without impacting long running functions. Use with different architecture patterns including event-driven, queue-based, or RPC.

READ DOCS

002

Simple, unified
explicit DX

A simple step design eliminates infrastructure complexity, no matter how code changes. Steps create traces with the same IDs as steps, making it incredibly easy to debug, test, and mock steps without breaking or migrating long-running code.

READ DOCS

003

OPEN &
EXTENISBLE

StepKit is designed to be extensible, with pluggable drivers for different orchestration backends. Drivers enable StepKit to work on top of existing orchestration platforms and also enable developers to write their own.

READ DOCS

Run workflows on any infrastructure

Run functions on any cloud provider,
using drivers for orchestration.

[] Server

[] Serverless

[] Containers & K8S

Build reliable workflows

StepKit allows you to effortlessly build reliable workflows without worrying about queues, state, or infrastructure. It runs on any platform, without requiring bundler or runtime support.

01 - Durable steps02 - Sleep03 - Retries04 - Suspend & Resume05 - Parallelism06 - AI Agents

01Durable steps

Build workflows using simple steps, with automatic retries, state, and observability built in.

1// Payment processing survives failures
2const payment = await step.run('charge-card', async () => {
3  const charge = await stripe.charges.create({
4    amount: 2999,
5    currency: 'usd',
6    customer: customerId
7  });
8  return charge;
9});
10
11// If workflow fails here, charge won't be retried
12await step.run('update-database', async () => {
13  await db.orders.create({
14    userId,
15    paymentId: payment.id,
16    status: 'completed'
17  });
18});
 ■  BUILD  ■  ITERATE  ■  EXTEND  ■  BUILD  ■  ITERATE  ■  EXTEND  ■  BUILD  ■  ITERATE  ■  EXTEND  ■  BUILD  ■  ITERATE  ■  EXTEND  ■  BUILD  ■  ITERATE  ■  EXTEND  ■  BUILD  ■  ITERATE  ■  EXTEND  ■  BUILD  ■  ITERATE  ■  EXTEND  ■  BUILD  ■  ITERATE  ■  EXTEND 

How it works

STEP — 01

Choose your driver

Your driver determines how to handle infrastructure and where to persist state—queues, retries, persistence. Not sure what to choose? StepKit makes it possible to switch between any supported drivers without changing workflow code.

READ DOCS
STEP — 02

Write steps with IDs

Every step gets an identifier that becomes your workflow's source of truth, so functions remain stable and observable as your code evolves. The driver you choose will use these IDs to track progress through sleeps, waits, and retries.

READ DOCS
STEP — 03

Run + observe locally

Steps create traces that survive refactors, correlate across multiple languages, and even follow workflows across platforms. Because these traces carry the same IDs as your code, it’s incredibly easy to debug, test, and mock steps before you deploy.

READ DOCS
STEP — 04

Refactor without breaking

Update your code, test locally with mocked steps, and ship to production without breaking or migrating long-running code. Query by step name, replay, and debug easily—all because step identity is clear from the start.

READ DOCS
STEP — 05

Extend anywhere

Extend workflows with custom middleware for logging, tracing, metrics, and/or security features. Fit your existing stack, or build for new use cases.

READ DOCS

Why we built StepKit

Code is being written and re-written
faster than ever.

Other workflows weren't built to
expect this pace of change.

[   01  ]     →

BUILD

Choose any orchestration provider or language

[   02  ]     →

ITERATE

Deploy durable workflows anywhere, in seconds

[   03  ]     →

EXTEND

Suspend and resume long running workflows

StepKit

For an increasingly AI-dependent world, flexibility and iteration is paramount. We built StepKit to give developers the peace of mind they need to deploy quickly, refactor fearlessly, and most importantly—change languages, or re-write entire workflows without breaking or migrating code. No language lock-in. No vendor lock-in.


One open source foundation for every engineer.

Inngest.com | ©2025