> ## Documentation Index > Fetch the complete documentation index at: https://openworkflow.dev/llms.txt > Use this file to discover all available pages before exploring further. # The open source workflow engine > OpenWorkflow is an open-source durable workflow engine for TypeScript, powered by PostgreSQL or SQLite. ```bash npm theme={null} npx @openworkflow/cli init ``` ```bash pnpm theme={null} pnpx @openworkflow/cli init ``` ```bash bun theme={null} bunx @openworkflow/cli init ``` OpenWorkflow Dashboard ## What is OpenWorkflow? OpenWorkflow is a TypeScript framework that makes multi-step operations durable. Wrap each operation in a step, and OpenWorkflow remembers which steps already finished. If anything crashes, the workflow picks up right where it left off — completed steps are never re-run. ```ts theme={null} import { defineWorkflow } from "openworkflow"; export const processOrder = defineWorkflow( { name: "process-order" }, async ({ input, step }) => { // if the server crashes after this step, the card is NOT charged again await step.run({ name: "charge-card" }, async () => { await payments.charge(input.orderId); }); await step.run({ name: "send-confirmation" }, async () => { await emails.send({ to: input.email, subject: "Order confirmed!" }); }); }, ); ``` ## Features
**Durable** - Workflows survive process restarts and server crashes. Completed steps are never repeated.
**Resumable** - After a crash or deploy, workflows pick up from the last completed step automatically.
**Pausable** - Workflows can sleep for seconds or months without tying up resources.
**Type Safe** - First-class TypeScript support for inputs and outputs.
## Get Started Build your first workflow in 5 minutes. Understand the core concepts: workflows, steps, and workers.