https://useworkflow.dev/ Workflow * Docs * Examples Search... [?]K * HomeDocs Getting Started Next.jsNitro Foundations Workflows and StepsControl Flow PatternsErrors & RetryingHooks & WebhooksSerialization Observability Deploying Errors API Reference Search [?]K HomeDocs Workflow DevKit is in beta Make any TypeScript Function Durable use workflow brings durability, reliability, and observability to async JavaScript. Build apps and AI Agents that can suspend, resume, and maintain state with ease. Get Started npm i workflow Reliability-as-code Move from hand-rolled queues and custom retries to durable, resumable code with simple directives. With Workflow DevKitWith WDKWithout Workflow DevKitWithout WDK export async function welcome(userId: string) { "use workflow"; const user = await getUser(userId); const { subject, body } = await generateEmail({ name: user.name, plan: user.plan }); const { status } = await sendEmail({ to: user.email, subject, body, }); return { status, subject, body }; } Queueing the getUser step... Effortless setup With a simple declarative API to define and use your workflows. Creating a workflow import { sleep } from "workflow"; import { createUser, sendWelcomeEmail, sendOneWeekCheckInEmail } from "./steps" export async function userSignup(email) { "use workflow"; // Create the user and send the welcome email const user = await createUser(email); await sendWelcomeEmail(email); // Pause for 7 days // without consuming any resources await sleep("7 days"); await sendOneWeekCheckInEmail(email); return { userId: user.id, status: "done" }; } Defining steps import { Resend } from 'resend'; import { FatalError } from 'workflow'; export async function sendWelcomeEmail(email) { "use step" const resend = new Resend('YOUR_API_KEY'); const resp = await resend.emails.send({ from: 'Acme ', to: [email], subject: 'Welcome!', html: `Thanks for joining Acme.`, }); if (resp.error) { throw new FatalError(resp.error.message); } }; // Other steps... Observability. Inspect every run end-to-end. Pause, replay, and time-travel through steps with traces, logs, and metrics automatically. workflow()100ms process() parse() transform() enrich() validate() Universally compatible. Works with the frameworks you already use with more coming soon. Available now Coming soonClick on a framework to request support for itClick a framework to request support Reliability, minus the plumbing Start with plain async code. No queues to wire, no schedulers to tune, no YAML. Best-in-class DX that compiles reliability into your app with zero config. See every step, instantly Inspect every run end-to-end. Pause, replay, and time-travel through steps with traces, logs, and metrics automatically captured -- no extra services or setup. A versatile paradigm Workflows can power a wide array of apps, from streaming realtime agents, to CI/CD pipelines, or multi day email subscriptions workflows. Run anywhere, no lock-in The same code runs locally on your laptop, in Docker, on Vercel or any other cloud. Open source and portable by design. export async function welcome(userId: string) { "use workflow"; const user = await getUser(userId); const { subject, body } = await generateEmail({ name: user.name, plan: user.plan }); const { status } = await sendEmail({ to: user.email, subject, body, }); return { status, subject, body }; } Build anything with[] Build reliable, long-running processes with automatic retries, state persistence, and observability built in. export async function aiAgentWorkflow(query: string) { "use workflow"; // Step 1: Generate initial response const response = await generateResponse(query); // Step 2: Research and validate const facts = await researchFacts(response); // Step 3: Refine with fact-checking const refined = await refineWithFacts(response, facts); return { response: refined, sources: facts }; } Get started quickly See Workflow DevKit in action with one of our templates. Story Generator Slack Bot Slackbot that generates children's stories from collaborative input. Story Generator Slack Bot Flight Booking App Use Workflow to make AI agents more reliable and production-ready. Flight Booking App Natural Language Image Search A free, open-source template for building natural language image search. Natural Language Image Search Create your first workflow today. Get started