The workflow
parallel.fabro
Fan-out with the fork node
Thefork node has shape=component, making it a parallel fan-out node. Every outgoing edge becomes a concurrent branch:
Fan-in with the merge node
Themerge node has shape=tripleoctagon, making it a merge (fan-in) node. It receives every branch’s status and context updates in parallel.results and synthesizes them with its prompt:
parallel.results is runtime context, not a parallel_results.json file in the checkout. Fan-in never selects a branch’s files or changes workspace state; every branch has already worked in the same checkout. The downstream report node writes the synthesis produced by fan-in as the final report.
Concurrency control
By default, Fabro runs up to 4 parallel branches simultaneously. Control this withmax_parallel:
What you’ve learned
- Fan-out nodes (
shape=component) spawn concurrent branches and wait for all of them - Parallel branches share one checkout, so workflows must prevent or tolerate file races
- Fan-in nodes (
shape=tripleoctagon) can synthesizeparallel.resultswith a prompt - Fan-in never selects or restores workspace state, and no results file is created
Next
Multi-Model Routing
Assign different models to different workflow nodes using stylesheets.