workflow
Version:
Workflow SDK - Build durable, resilient, and observable workflows
105 lines (76 loc) • 4.08 kB
Markdown
<div align="center">
<a href="https://workflow-sdk.dev">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://workflow-sdk.dev/workflow-circle-symbol-dark.svg">
<img alt="Workflow SDK logo" src="https://workflow-sdk.dev/workflow-circle-symbol-light.svg" height="128">
</picture>
</a>
<h1>Workflow SDK</h1>
<a href="https://vercel.com"><img alt="Vercel logo" src="https://img.shields.io/badge/MADE%20BY%20Vercel-000000.svg?style=for-the-badge&logo=Vercel&labelColor=000"></a>
<a href="https://www.npmjs.com/package/workflow"><img alt="npm version" src="https://img.shields.io/npm/v/workflow?style=for-the-badge&labelColor=000000"></a>
<a href="https://github.com/vercel/workflow/blob/main/LICENSE.md"><img alt="License" src="https://img.shields.io/npm/l/workflow.svg?style=for-the-badge&labelColor=000000"></a>
<a href="https://github.com/vercel/workflow/discussions"><img alt="Join the community on GitHub" src="https://img.shields.io/badge/Join%20the%20community-blueviolet.svg?style=for-the-badge&logo=GitHub&labelColor=000000&logoWidth=20"></a>
</div>
[Workflow SDK](https://workflow-sdk.dev) makes TypeScript and JavaScript
functions durable. It persists workflow progress, retries failed steps, and
provides built-in observability. Workflows can suspend without using compute
while they wait.
## Quick start
Install the SDK in an existing project:
```bash
npm install workflow
```
Configure the integration for your framework. For example, with Next.js:
```ts
// next.config.ts
import { withWorkflow } from 'workflow/next';
export default withWorkflow({});
```
Then start a workflow from an API route, Server Action, or other server-side
code:
```ts
import { start } from 'workflow/api';
import { onboardUser } from './workflows/onboard-user';
await start(onboardUser, ['hello.com']);
```
Run your app, then open the local observability UI in another terminal:
```bash
npm run dev
```
```bash
npx workflow web
```
Choose your framework in the
[getting-started guides](https://workflow-sdk.dev/docs/getting-started).
> [!NOTE]
> The `workflow` package includes its full documentation, so coding agents can
> read version-matched guides locally from `node_modules/workflow/docs`.
## Run anywhere
For application-level completion and failure reporting, `registerLifecycleHooks`
from `workflow/api` registers handlers in the workflow executor's host startup.
Calling it inside a workflow or step throws. Check the
[lifecycle hooks guide](https://workflow-sdk.dev/v5/docs/observability/lifecycle-hooks)
for supported framework/deployment combinations and stream cleanup requirements.
Local development uses the bundled backend with no configuration. Deploy to
Vercel for managed storage, queuing, scaling, and observability. To self-host,
use the Postgres backend or implement a custom
[World](https://workflow-sdk.dev/docs/deploying).
The [Worlds page](https://workflow-sdk.dev/worlds) lists maintainer-curated
third-party Worlds, including self-hosted and managed options. Submit your World
by updating the [Worlds Manifest](https://github.com/vercel/workflow/blob/main/worlds-manifest.json).
## Community
The Workflow SDK community lives on
[GitHub Discussions](https://github.com/vercel/workflow/discussions), where you
can ask questions, share ideas, and show what you have built.
## Contributing
Contributions are welcome. Use
[issues](https://github.com/vercel/workflow/issues) and
[discussions](https://github.com/vercel/workflow/discussions) to collaborate
with the team and wider community. By participating, you agree to our
[Code of Conduct](https://github.com/vercel/workflow/blob/main/CODE_OF_CONDUCT.md).
## Security
If you find a security vulnerability in Workflow SDK, **_disclose it responsibly instead of opening a public issue_**.
To participate in our Open Source Software Bug Bounty program, please email
[responsible.disclosure.com](mailto:responsible.disclosure.com).
We will add you to the program and provide further instructions for submitting
your report.