Skip to content
Source available. Built on Postgres.

Complex workflows.
Beautifully orchestrated.

Turn distributed work into a flow you can follow.
Durable execution, workers in any language, and just one dependency.

Source available Self-hostable Postgres-powered
Workflows /fulfil_orderv1
Interactive demo
SIMPLEValidate orderRunningSIMPLECharge paymentQueuedSIMPLEReserve stockQueuedJOINJoin resultsQueuedSIMPLESend receiptQueuedSIMPLEValidate orderRunningSIMPLECharge paymentQueuedSIMPLEReserve stockQueuedJOINJoin resultsQueuedSIMPLESend receiptQueued
Running: Validate order0 / 5 tasks complete

Validate an order, charge and reserve in parallel, then bring it all together.Illustrative execution · no server required

YOUR LOGIC. YOUR LANGUAGE.
TypeScriptPythonGoJavaRustHTTP

One worker protocol. Endless possibilities.

01 / THE DEVELOPER EXPERIENCE

You write the work.
Node Flow connects it.

From a simple sequence to a sprawling graph, the same clear model takes you from definition to execution.

DECLARE

A graph you can reason about.

Express branches, parallel work, loops, and human approvals in inspectable JSON.

Explore the workflow DSL
EXECUTE

Built for the unexpected.

Durable state, task leases, and configurable retries keep distributed work moving.

Understand execution
OBSERVE

Every run tells a story.

Follow execution history, inspect task outputs, and retry from the point that matters.

Take control of a run
02 / RADICALLY SIMPLE INFRASTRUCTURE

Big workflows.
Small footprint.

Queues, timers, workflow state, and the outbox. All backed by Postgres. One transactional foundation for the whole system.

One required infrastructure dependency Pure, deterministic decision engine Scale API, decider, and poller independently
Go inside the architecture
03 / A SHORT PATH TO YOUR FIRST RUN

Less setup.
More shipping.

1

Start your local stack

Bring up Postgres, the server, and the dashboard with Docker Compose.

2

Define the workflow

Describe your tasks in JSON. Register the definition with the API.

3

Connect a worker. Watch it flow.

Lease a task, execute your logic, and report the result.

Follow the complete quickstart
YOUR TERMINAL
# From a checkout of the repository
$docker compose -f docker/docker-compose.yml up

Postgresready

Node Flow server:3000

Dashboard:3100

$
Example output · Docker Compose starts three services
THE NEXT STEP IS YOURS

Built for builders.
Documented for humans.

All documentation
YOUR INFRASTRUCTURE. YOUR RULES.

Let it flow.

Your next workflow starts with a single step.

Start building with Node Flow
Dwaipayan Sardar
BEHIND THE FLOW

Dwaipayan Sardar

Built with curiosity. Shared with the world.

Meet the builderdwaipayan.in (opens in a new tab)