EventFlow runs multi-step backend jobs as directed acyclic graphs across distributed workers — with retries, dead-letter recovery, immutable versioning, and live execution monitoring. Infrastructure software, not an automation clone.
Long-running work — API calls, waits, branching, transforms, webhooks — outlives the HTTP request/response lifecycle it's often trapped in.
When a step fails, you need to know exactly which one, why, how many times it retried, and whether it was recovered or abandoned.
Tools like Airflow and Temporal are powerful but heavy. Spinning them up to run a five-node job is disproportionate.
EventFlow keeps the serious parts — distributed execution, retries, DLQ, crash recovery, live state — in a small, legible core.
Six stages, each with explicit, auditable state. The engine assumes jobs may run more than once and is built around idempotency and recovery.
Author a workflow as a JSON DAG. The backend validates nodes, edges, executor types, and rejects cycles.
A validated definition is stored as an immutable version, ready to execute repeatedly and reproducibly.
Start an execution. Root nodes become execution records; ready nodes publish to Redis Streams.
Workers consume jobs through a consumer group, run the matching executor, and transition state in PostgreSQL.
Successful nodes unlock downstream nodes. Failures retry per policy, then dead-letter. Crashed workers are recovered.
Every transition is auditable and streamed live over WebSocket to the dashboard.
Nodes run across multiple worker processes coordinated through Redis Streams consumer groups. Scale out by starting more workers.
Per-node retry policies with exponential backoff. Exhausted failures move to a dead-letter queue for inspection and manual replay.
Worker heartbeats and stuck-job claiming mean a killed worker mid-job is recovered by another. At-least-once delivery by design.
Every saved workflow becomes an immutable version. Running executions never change when a definition is edited.
WebSocket-driven execution detail. Watch node state transitions, logs, and worker activity stream in as the system operates.
HTTP, delay, condition, transform, and webhook nodes ship built-in. New node types register through a small executor registry — no arbitrary code.
A small set of primitives composes into reliable, observable automation.
Connect your instance with an API key and start orchestrating distributed jobs with full visibility into every node transition.