Execution

How workflows run — from validation to completion, with parallel processing and live updates.

Execution flow

  1. Validation — DAG check (no cycles), all required ports connected
  2. Credit check — estimated cost vs your balance
  3. WorkflowRun created — persisted in database with status running
  4. Topological sort — determines execution order by dependency level
  5. Level-by-level execution — nodes at each level run in parallel (max 5 concurrent)
  6. Data passing — each node's output is passed to downstream nodes' inputs
  7. Artifact storage — generated content saved to object storage (MinIO/GCS)
  8. Completion — WorkflowRun marked as completed or failed

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 nodes

Real-time updates

The frontend receives WebSocket events during execution:

EventWhen
workflow_execution_startExecution begins
node_execution_startEach node starts processing
node_execution_completeEach node finishes (includes artifact data)
workflow_execution_completeAll nodes done
workflow_execution_failedA 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

    Execution | Zephly