A graph you can reason about.
Express branches, parallel work, loops, and human approvals in inspectable JSON.
Explore the workflow DSLA self-hosted workflow orchestration engine that runs on Postgres alone.
Durable workflows, workers in any language, and just one dependency.
Validate an order, charge and reserve in parallel, then bring it all together.Illustrative execution · no server required
One worker protocol. Endless possibilities.
From a simple sequence to a sprawling graph, the same clear model takes you from definition to execution.
Express branches, parallel work, loops, and human approvals in inspectable JSON.
Explore the workflow DSLDurable state, task leases, and configurable retries keep distributed work moving.
Understand executionFollow execution history, inspect task outputs, and retry from the point that matters.
Take control of a runQueues, timers, workflow state, and the outbox. All backed by Postgres. One transactional foundation for the whole system.
Bring up Postgres, the server, and the dashboard with Docker Compose.
Describe your tasks in JSON. Register the definition with the API.
Lease a task, execute your logic, and report the result.
docker compose -f docker/docker-compose.yml upPostgresready
Node Flow server:3000
Dashboard:3100
From a local stack to a completed run. Follow the code, step by step.
QuickstartBranches, parallel tasks, waits, retries, and the complete workflow DSL.
Workflow guideEndpoints, schemas, and executable requests. Powered by Scalar.
API referenceDeploy, monitor, secure, and operate your own workflow infrastructure.
Self-hostingSame JSON model and a compatible API — without Redis or Elasticsearch.
node-flow vs Netflix ConductorRBAC, SSO and AI tasks, self-hosted and free to run commercially.
node-flow vs Orkes ConductorWorkflows as readable data, workers without determinism rules.
node-flow vs TemporalWorkers in any language, running on compute you already have.
node-flow vs Trigger.devPull-based workers and server-side flow control on Postgres.
node-flow vs InngestA focused orchestrator for the services you already run.
node-flow vs iiiJSON workflows anywhere, with no per-transition bill.
node-flow vs AWS Step FunctionsConductor OSS, Temporal, Airflow, Hatchet and more, side by side.
node-flow vs Open-source enginesNode Flow (node-flow) is a self-hosted workflow orchestration engine. You describe a process as a declarative JSON DAG, workers in any language poll for the steps they own, and the engine makes every step run, retry, time out and compensate as defined — across restarts, deploys and failures. PostgreSQL 18 is its only infrastructure dependency.
Yes. Node Flow follows Conductor’s workflow model and serves a Conductor-compatible REST API at /conductor/api, so supported Conductor SDKs and workers connect with a base-URL change. It replaces Conductor’s Redis, persistence and Elasticsearch stack with a single Postgres database.
Temporal and Trigger.dev make code durable: the workflow is a function in an SDK. Node Flow makes the workflow a JSON document the engine runs, and workers in any language implement individual steps. That suits processes that cross teams, services and languages, and that operators need to see and act on.
Only PostgreSQL 18. Workflow state, task queues, timers, the transactional outbox and search all live in Postgres. There is no Redis, Cassandra, Elasticsearch or Kafka to run.
Any. The worker protocol is plain HTTP — lease a task, heartbeat, report a result. There is a TypeScript SDK and generated clients for Python, Go, Java and TypeScript.
Node Flow is free to run, including commercially and inside products you sell. It is source available rather than OSI open source: the code is public and may be redistributed unmodified, but modified versions may not be distributed.
Your next workflow starts with a single step.
Start building with Node Flow
Built with curiosity. Shared with the world.