Architecture
Argyll combines Raft consensus with event-sourced state so every node follows the same committed execution history.
Cluster
Argyll nodes share state through Raft consensus. Clients route writes to the leader and may read projected state—the current state derived from committed events—from any node. GET /health returns X-Argyll-Raft-State, allowing a load balancer to identify the leader.
State
Two Raft-backed Timebox stores separate cluster-wide engine state from Flow execution state:
- EngineStore: Step catalog and per-node health
- FlowStore: Flow event streams, projections, and indexes
Each node derives current state by applying committed events. That projection drives planning, Work Item dispatch, result recording, and every subsequent Flow decision.
Service Boundary
Argyll invokes HTTP services and in-engine scripts. Matching Attribute names carry data between Steps while each service remains independently deployable. Every HTTP invocation includes Flow, Step, and receipt-token headers; async invocations also include a webhook URL.
The receipt token identifies one Work Item and supports idempotent external effects. HTTP Steps defines the wire contract and Event Sourcing explains committed execution.