Deterministic Execution
Workflows run as structured programs. Every step, decision, and failure is explicit.
Execution Is a Program
Every workflow run becomes a Task. Tasks execute like deterministic programs — not probabilistic chats. Each step is ordered, observable, and final.
Strict Step Order
Steps execute sequentially. No future access. No branching unless explicitly defined.
Immutable Outputs
Once a step completes, its output is frozen and permanently recorded.
Fail-Fast Semantics
Execution stops immediately on failure. No hidden retries or silent recovery.
Explicit Re-runs
Re-running a workflow creates a new task. History is never mutated.
Execution Flow
- Task Creation — Trigger creates a Task with steps, edges, and context.
- Task Claiming — Worker atomically marks task as RUNNING.
- Context Init — Execution context is built from workflow input and variables.
- Step Execution — Steps run sequentially or in parallel, with distributed locks for safety.
- Result Persistence — Step results and logs are written to MongoDB.
- Completion — Task reaches terminal state: completed, failed, pending_approval, or rejected.
Parallel & Join Execution
Parallel nodes fan out execution into concurrent branches. Join nodes synchronize branches back together. MongoDB-backed distributed locks ensure safe execution across multiple workers.
Retry & Resume
Steps support configurable retry policies with exponential backoff. Failed steps can be rerun without re-executing successful predecessors. Approval nodes pause execution for human review, and resumable tasks continue from the next step upon approval.