Skip to content

inngest/stepkit

StepKit logo

Documentation  ·  Community  ·  Roadmap / RFCs


StepKit lets you write durable workflows using the standard steps API and deploy to multiple drivers (Inngest, Cloudflare, Netlify) without refactoring.

StepKit's steps bring:

  • 🦾 Durability: write unbreakable code that automatically retries without any state loss
  • 🕑 Suspend and Resume: write code that can pause for weeks without using compute
  • 📊 Observability: each workflow step becomes a live trace with detailed logs and metadata
  • 🪝 Native webhooks and "Human in the Loop": make your workflow wait for an external event

Visit the step.run documentation for guides and examples.

Get started

  1. Install StepKit with your preferred driver

Inngest, Cloudflare, Netlify for local dev and deployment, or In-Memory/FileSystem for testing

npm i @stepkit/inngest

# npm i @stepkit/cloudflare
# npm i @stepkit/local
  1. Write your first durable workflow
import { z } from "zod";
import { Client } from "@stepkit/inngest";
// import { Client } from "@stepkit/cloudflare";
// import { FileSystemClient as Client } from "@stepkit/local";

import { emailTemplates, sendEmail } from "./email-service";

export const client = new Client({ id: "readme-example" });

export const onboardingWorkflow = client.workflow(
  {
    id: "onboarding-workflow",
    inputSchema: z.object({
      userId: z.string(),
      email: z.email(),
      userName: z.string(),
    }),
  },
  async ({ input }, step) => {
    const { userId, email, userName } = input.data;

    // DAY 1: Welcome Email
    await step.run("send-welcome-email", async () => {
      const template = emailTemplates.welcome(userName);
      return await sendEmail(email, template);
    });

    // Wait 3 days
    await step.sleep("wait-for-day-3", 3600 * 24 * 3)

    // DAY 3: Feedback Email
    await step.run("send-feedback-request", async () => {
      const template = emailTemplates.feedbackRequest(userName, 7);
      return await sendEmail(email, template);
    });
  }
);

Community

Welcome to the StepKit community!

Whether you’re here to ask questions, share ideas, or collaborate on code, you’ll find all the action is happening in the GitHub Discussions.

Please take a moment to review our Code of Conduct to understand our shared values and the standards of behavior that help keep our community safe and respectful for everyone.

Contributing

If you're new to contributing, you will find all the essential information (architecture overview, etc) in the "Welcome to the StepKit Community!" discussion thread before getting started.

We encourage you to open issues and submit pull requests!

License

Apache 2.0

About

StepKit is an open source SDK for building production ready durable workflows.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published