Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

License

Notifications You must be signed in to change notification settings

inngest/stepkit

StepKit logo

Documentation · Community · Roadmap / RFCs


StepKit lets you write durable workflows using the standard steps API and deploy to multiple drivers 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 for local dev or production. In-Memory/FileSystem for testing

npm i @stepkit/inngest
# npm i @stepkit/local
  1. Write your first durable workflow
import { z } from "zod";
import { Client } from "@stepkit/inngest";
// 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

Contributors 9

AltStyle によって変換されたページ (->オリジナル) /