- Diagrams
- Architecture
- Multi-Node Cluster
Multi-Node Cluster
Ironflow supports horizontal scaling via external NATS JetStream and PostgreSQL. A cluster requires PostgreSQL, external NATS and a shared s3:// blob URL (IRONFLOW_BLOB_URL); SQLite supports single-node crash-resume only. Each node is stateless — all coordination happens through NATS (event distribution, cron history, SQL-projection ownership through a pinned consumer) and PostgreSQL (state persistence, atomic cron-slot admission, job dispatch, distributed locking via SKIP LOCKED). Pull workers long-poll GET /api/v1/workers/{id}/jobs over HTTP and can take jobs from any node, heartbeating every 30s. The stale-claim sweep runs every 60s and reclaims a claim after IRONFLOW_STALE_CLAIM_THRESHOLD (default 2m) — keep that threshold above the heartbeat interval plus margin.