Workflows Live

Durable workflows.
Every node is code.

Design workflows on a canvas where every node is a real Python file with typed ports. Runs execute durably on Cloudflare Workflows — per-node retries, approvals, and full playback on the canvas.

Relpin workflow canvas — a Python workflow with trigger, branch, approval, and delay nodes and a live run overlay
The Canvas Live

Five node kinds.
One of them is yours.

The canvas is a projection of the code. Wire branch, loop, delay, and approval nodes around your Python — every port is typed, and the graph validates against the running code via live schema discovery.

code A real Python file — @node decorator, typed pydantic Input/Output models.
branch Route on a condition — eq, gt, truthy and friends, with true/false exits.
loop Fan a list through a sub-path — up to 1,000 iterations per run.
delay Durable sleep from 1 second to 30 days — no compute burned while waiting.
approval Pause for a human decision, with a timeout up to 30 days.
A selected Python node on the canvas beside the project explorer and its @node-decorated source file with typed pydantic models.
Typed ports · Live schema discovery · Graph validated fail-closed at save and build
Triggers Live

Four ways in.
Every one governed.

However a run starts, it is authenticated, permission-checked, and audited — scoped to your organization and environment.

manual run permission in Studio started by a person
webhook rotatable signed token started by an external system
schedule cron expression, validated at save started on a cadence
app app-scoped invocation started by one of your apps
Authenticated · Permission-checked · Audited per organization and environment
Workflow Engine Live

Durable execution.
Governed triggers.

Every workflow is an ordinary codebase: nodes are Python files with typed pydantic ports, the graph is a diffable JSON file, and the canvas is a projection of the code — never a separate source of truth. Runs execute durably through the same governed release lanes as apps.

01
Every node is a Python file

Code nodes are real Python with an @node decorator and typed pydantic input/output models. Branch, loop, delay, and approval nodes wire around them — the graph itself is a diffable, agent-editable repo file.

02
Durable runs with retries

Runs execute on Cloudflare Workflows as durable steps: per-node retries with backoff, timeouts, and approval waits up to 30 days. Run state survives restarts and deploys.

03
Triggers, governed

Manual, webhook, cron schedule, and app triggers. Every run is authenticated, permission-checked, and audited — scoped to your organization and environment.

The Workflow runs panel in Studio showing succeeded manual runs with per-run status.
Run history, replayed on the canvas

Every run records a graph snapshot and per-node status. Watch live runs move across the canvas, or replay finished ones — timings, retries, and approvals included.

Run playback — watch live runs and replay historical ones directly on the canvas
Live schema discovery — node ports validate against the actual running code
Schema snapshots at save — builds validate without a running container
Same promotion lanes — workflows deploy content-addressed, DEV → TEST → PROD with approvals
Engine live · Python nodes · Durable runs · Governed triggers
Approval Gates Live

Approvals are live.
In the release pipeline.

Workflows ship through the same governed release machinery as apps: approval gates with separation of duties, approvals bound to the exact artifact, and buildable approval-queue apps.

01
Release approval gates

TEST requires 1 approval, PROD requires 2 with separation of duties — the requester cannot self-approve. Enforced by the platform, not by convention.

02
Approvals bound to the artifact

Every approval is bound to the exact artifact hash. Re-planning invalidates prior approvals — nobody approves a moving target.

03
Buildable approval queues

Approval-queue apps are a buildable pattern today: real TypeScript on governed SQL, row-level audit on every decision, and governed Slack notifications.

TEST gate: 1 approval. PROD gate: 2 approvals with separation of duties.
Approvals bound to the exact artifact hash — re-planning invalidates them
Row-level audit captures every approval decision with actor and before/after diffs
Slack notifications run through the governed connector — idempotent and audited
Approval gates live · Row-level audit live · Slack connector live See the approval-queue pattern →
Workflows

The engine is live.
So are the gates.

Draw the workflow on the canvas, keep every node as real Python, and ship it through governed releases. Durable runs, retries, and playback included.

Open beta · Engine live · Durable runs on Cloudflare

Python nodes · Durable runs · Run playback · Governed triggers