Reliable workflows, without lock‑in.
Production‑ready orchestration with adapters. Keep your code. Swap infrastructure. Trust it in prod for the long haul.
import { defineWorkflow } from '@zeroflow/core';
export default defineWorkflow('processOrder', ({ exec, wait }) => {
const receipt = exec.python('tasks/charge_customer.py');
const status = wait.event('order.confirmed');
return { receipt, status };
});5‑minute setup
From install to first run in minutes.
No vendor lock‑in (MIT)
Open source core with adapters.
Production‑ready
Retries, backoff, tracing, and audit.
Reliability by Design
Built to be dependable in production — today and years from now.
Execution guarantees
Deterministic runs, idempotency, backpressure, exponential backoff.
Durability & visibility
Centralized logs, metrics, traces; event history and audit trails.
Long‑term stability
Semantic versioning, adapter compatibility contract, guided migrations.
Example: retry with exponential backoff
try {
await exec.node('tasks/charge.ts')
} catch (e) {
await wait.backoff({ strategy: 'exponential', maxRetries: 6 })
}Architecture — adapters at the core
Your code targets a stable adapter contract. Swap orchestrators, executors, and storage with configuration — workflows stay the same.
- Adapter API v1.x (stable) with versioned capabilities
- Current: Azure Durable • Coming: Temporal, Local dev
- Executors: Docker, Kubernetes, Native
- Storage: Postgres, Mongo, S3
How Zeroflow works
Design workflows with familiar code
TypeScript-first DX, Python/Node/Bash execution.
import { defineWorkflow } from '@zeroflow/core';
export default defineWorkflow('processOrder', ({ exec, wait }) => {
const receipt = exec.python('tasks/charge_customer.py');
const status = wait.event('order.confirmed');
return { receipt, status };
});Quickstart
Install
docker run -d -p 3000:3000 zeroflow/zeroflow
Create
npx zeroflow init
Run
zeroflow run hello
Ship reliable automation without lock‑in.
Build today, swap infrastructure tomorrow — your workflows stay.