Execution
How workflows run — from validation to completion, with parallel processing and live updates.
Execution flow
- Validation — DAG check (no cycles), all required ports connected
- Credit check — estimated cost vs your balance
- WorkflowRun created — persisted in database with status
running - Topological sort — determines execution order by dependency level
- Level-by-level execution — nodes at each level run in parallel (max 5 concurrent)
- Data passing — each node's output is passed to downstream nodes' inputs
- Artifact storage — generated content saved to object storage (MinIO/GCS)
- Completion — WorkflowRun marked as
completedorfailed
Parallel processing
Independent nodes (no dependency between them) run simultaneously. Example:
Level 0: TextInput (instant)
Level 1: Gemini (text gen) — runs alone, depends on TextInput
Level 2: NanoBanana + ElevenLabs — run IN PARALLEL (both depend on Gemini)
Level 3: Instagram (publish) — waits for both Level 2 nodesReal-time updates
The frontend receives WebSocket events during execution:
| Event | When |
|---|---|
workflow_execution_start | Execution begins |
node_execution_start | Each node starts processing |
node_execution_complete | Each node finishes (includes artifact data) |
workflow_execution_complete | All nodes done |
workflow_execution_failed | A node failed, execution stopped |
Error handling
If a node fails:
- The node turns red with an error message
- Downstream nodes are skipped (they can't run without the failed node's output)
- Parallel branches that don't depend on the failed node continue running
- Credits are only charged for nodes that actually executed
Execution history
Every run is saved. You can view past executions from the execution panel at the bottom of the editor. Each run shows:
- Start time and duration
- Credits consumed
- Per-node status and artifacts
- Error messages (if any)
Last updated: 2026-03-27