Architecture
Cloudflare AI Flows is a monorepo with four packages. The frontend (React + React Flow) is served as Worker static assets. The API Worker (Hono) handles REST routes and WebSocket upgrades. The execution engine runs flows as Cloudflare Dynamic Workflows — durable, retriable, step-by-step. The node library is self-registering: adding a new node type is one file with no changes to the engine or canvas.
┌─────────────────────────────────────────────────────────┐
│ Frontend (React + React Flow SPA) │
│ Deployed as Worker static assets │
├─────────────────────────────────────────────────────────┤
│ API Worker (Hono) — REST + WebSocket routing │
├─────────────────────────────────────────────────────────┤
│ Execution Engine │
│ Dynamic Workflows · ExecutionRelay Durable Object │
├─────────────────────────────────────────────────────────┤
│ Node Library — self-registering NodeDefinition │
├─────────────────────────────────────────────────────────┤
│ Storage — D1 · KV · R2 · Vectorize · Secrets Store │
└─────────────────────────────────────────────────────────┘
Durable execution
Every flow runs as a Cloudflare Dynamic Workflow. Steps are logged and replayable, so a flow survives crashes and retries. The ExecutionRelay Durable Object streams progress to the canvas over WebSocket, lighting up nodes as they run.
Self-registering nodes
Create packages/nodes/src/{category}/{name}.node.ts, implement the NodeDefinition interface (config schema, input/output schemas, execute()), then register it. No changes to the engine, API, or canvas required — the config schema drives the settings panel UI automatically. (This site’s feature list is generated from exactly those definitions.)