fabro run.
Anatomy of a workflow
Every workflow is adigraph with a goal, a start node, an exit node, and one or more processing nodes connected by edges:
my-workflow.fabro
goal attribute describes what the workflow accomplishes. Fabro uses it to guide agent behavior and generate retrospectives.
Key node types
Each node’s Graphviz shape determines how it executes. The three most important types are: Agents (defaultbox shape) run an LLM with access to tools — bash, file editing, sub-agents — looping autonomously until the task is complete:
parallelogram) run shell scripts and capture output for downstream nodes:
hexagon) pause the workflow and wait for a person to choose a path. Edge labels define the options:
Branching and loops
max_visits on a node to prevent infinite loops:
Parallel execution
Goal gates
Mark critical nodes withgoal_gate=true. The workflow fails if any goal gate doesn’t succeed — even if execution reaches the exit node:
Running a workflow
From the CLI:


