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.
- 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- 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);
});
}
);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.
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!