fabro-workflow-factory
Skill for using Fabro, the open source AI coding workflow orchestrator that lets you define agent pipelines as Graphviz DOT graphs with human gates, multi-model routing, and cloud sandboxes.
By reason-machines · 1,230 installs
npx skills add reason-machines/trending-skills --skill fabro-workflow-factory
Source repository · Upstream listing
Fabro Workflow Factory
Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
Fabro is an open source AI coding workflow orchestrator written in Rust. It lets you define agent pipelines as Graphviz DOT graphs — with branching, loops, human approval gates, multi model routing, and cloud sandbox execution — then run them as a persistent service. You define the process; agents execute it; you intervene only where it matters.
Installation
After installation, run one time setup and per project initialization:
Key CLI Commands
Workflow Definition (Graphviz DOT)
Workflows are .dot files using the Graphviz DOT language with Fabro specific attributes.
Node Types
Shape Meaning
Mdiamond Start node
Msquare Exit node
rectangle (default) Agent node (LLM turn)
hexagon Human gate (pauses for approval)
Minimal Hello World
Multi Model Routing with Stylesheets
Fabro uses CSS like model stylesheet declarations on the graph to route nodes to models. Use classes to target groups of nodes.
Supported Model Stylesheet Properties
Human Gates (Approval Nodes)
Use shape=hexagon to pause execution for human approval. Transitions are labeled with [A] (approve) and [R] (revise/reject).
Approve or reject from the CLI:
Loops and Fix Cycles
Use labeled transitions to build automatic retry/fix loops:
Parallel Nodes
Run multiple agent nodes concurrently by forking edges from a single source:
Variables and Dynamic Prompts
Use {variable} interpolation in prompts. Pass variables at run time:
Cloud Sandboxes (Daytona)
To run agents in isolated cloud VMs instead of locally, configure a Daytona sandbox:
Then add sandbox config to your workflow graph:
Git Checkpointing
Fabro automatically commits code changes and execution metadata to Git branches at each stage. To inspect or resume:
Retrospectives
After every run, Fabro generates a retrospective with cost, duration, files changed, and an LLM written narrative:
Example output:
REST API and SSE Streaming
Fabro runs an API server for programmatic use:
Trigger a run via API
Stream run events via SSE
Approve a gate via API
Environment Variables
Project Structure Convention
Common Patterns
Pattern: Spec driven implementation
Pattern: Cheap draft, expensive refine
Troubleshooting
fabro: command not found
Re run the install script and ensure ~/.local/bin (or the install prefix) is on your $PATH .
Try source ~/.bashrc or source ~/.zshrc after installation.
Agent gets stuck in a loop
Add a maximum iteration guard: use a counter variable and a conditional transition to force exit after N iterations.
Check your prompt — ambiguous exit conditions cause looping.
Human gate never pauses
Confirm the node uses shape=hexagon , not just a label containing "approve".
Check fabro runs show <run id to confirm the run reached that node.
Sandbox fails to start
Verify DAYTONA API KEY is set and valid.
Run fabro config to confirm sandbox.provider is set to daytona .
Check fabro runs show <run id for sandbox error details.
Model not found / API error
Ensure the correct provider API key is exported ( ANTHROPIC API KEY , OPENAI API KEY , etc.).
Check the model: value in your stylesheet matches the provider's exact model ID.
Run exits immediately without doing work
Verify the DOT file has a valid path from start ( shape=Mdiamond ) to exit ( shape=Msquare ).
Run dot Tsvg workflow.dot o workflow.svg to visually inspect the graph for disconnected nodes.
Resources
[Documentation](https://docs.fabro.sh)
[Why Fabro](https://docs.fabro.sh/getting started/why fabro)
[DOT Language Reference](https://docs.fabro.sh/reference/dot language)
[API Reference](https://docs.fabro.sh/api reference/overview)
[Tutorials](https://docs.fabro.sh/tutorials/hello world)
[Bug Reports](https://github.com/fabro sh/fabro/issues)
[Feature Requests](https://github.com/fabro sh/fabro/discussions)