fabro/docs/public/getting-started/why-fabro.mdx
Bryan Helmkamp 5fc9157017
refactor(workflow): remove retro stage (#230)
## Summary

Removes Fabro's automatic retro generation stage so workflow runs go
directly from execution to finalization and optional PR creation. This
drops the retro-specific crate, events, projection fields, config/API
knobs, and user-facing docs in favor of the existing durable run
observability surfaces.

## What Changed

- Deleted the `fabro-retro` crate and the workflow `retro` pipeline
phase, with finalization now consuming `Executed` state directly.
- Removed retro configuration and API surface area, including
`--no-retro`, `[run.execution].retros`, manifest `no_retro`,
`features.retros`, and run projection `retro*` fields.
- Retired typed `retro.*` events while keeping historical event logs
readable by deserializing retired retro event names as `Unknown`.
- Stopped appending retro sections to generated PR bodies and updated
docs, marketing copy, screenshots, and navigation to point users toward
observability/event-stream inspection.

## Testing

Not run during PR creation; this branch already contained the
implementation commit.

---

[![Compound
Engineering](https://img.shields.io/badge/Compound_Engineering-6366f1)](https://github.com/EveryInc/compound-engineering-plugin)
🤖 Generated with GPT-5 (unknown context, reasoning unspecified) via
[Codex](https://openai.com/codex)
2026-05-09 10:18:20 -04:00

85 lines
4.8 KiB
Text

---
title: "Why Fabro?"
description: "The problems Fabro solves for AI-assisted software teams"
---
Fabro is the open source dark software factory for small teams of expert engineers. It replaces the prompt-wait-review loop with version-controlled workflow graphs that orchestrate AI agents, shell commands, and human decisions into repeatable, long-horizon coding processes.
## The problem
AI coding agents have transformed software engineering productivity, but the surrounding toolchain hasn't kept up:
- **Developers work for the agents.** The prompt-wait-review loop idles engineers while agents run, then demands constant babysitting to course-correct.
- **Unpredictable agents force oversight.** Non-deterministic guardrails create an explosion of failure modes. Engineers compensate by watching every step.
- **Verification is overwhelmed.** Agent throughput exceeds human review capacity. CI pipelines designed for pass/fail signals can't keep pace with the volume or nuance of AI-generated code.
- **Token costs are primed to explode.** ROI per token diverges wildly across tasks, models, and harnesses. Every unnecessary frontier token is one that can't be spent where it matters.
- **The continuous improvement loop broke.** Data is lost at every sub-process boundary. Organizations can't train LLMs the way they train people, and memory files make no guarantees.
<img src="/images/run-detail.png" alt="Fabro run detail view showing verifications for a pipeline event types change, including Traceability, Readability, Reliability, Code Coverage, and more" />
## How Fabro solves this
Fabro gives you a deterministic harness around non-deterministic AI. You define **workflow graphs** in Graphviz files that specify exactly what happens, in what order, with which models, and where humans weigh in. Fabro handles orchestration, parallelism, model routing, verification, and observability.
<Columns cols={2}>
<Card title="Version-controlled workflows" icon="diagram-project">
Define workflows as code in Graphviz. Nodes are agents, shell commands, or human input gates. Fan out, loop, branch, and resume — all traceable and repeatable.
</Card>
<Card title="Multi-model orchestration" icon="microchip">
Route tasks to the right model using CSS-like stylesheets. Cross-critique with fresh eyes, delegate simple tasks to fast models, and fail over automatically when providers go down.
</Card>
<Card title="Human-in-the-loop" icon="hand">
Steer while the agent runs, not after. Approval gates, interviews, and steering let you intervene at the right moments without waiting for a pull request.
</Card>
<Card title="Adaptive verification" icon="shield-check">
Combine LLM-as-judge, test suites, third-party tools, and human review. Verifications act as an eval suite tailored to your organization, building confidence over time.
</Card>
<Card title="Observability" icon="magnifying-glass-chart">
Every tool call, agent turn, and shell command is captured in a unified event stream. Query run data with SQL via DuckDB and inspect the full execution trail.
</Card>
<Card title="Open source" icon="code-branch">
Licensed under MIT. Written in Rust with minimal dependencies. Runs on a single node with no databases to set up.
</Card>
</Columns>
<img src="/images/workflow-example.png" alt="Fabro workflow diagram for Fix Build showing stages from Start through Analyze Build Errors, Diagnose Root Cause, Validate Build, and Review Changes to Exit" />
## What a workflow looks like
Workflows are defined in Graphviz, a simple graph description language. Here's a plan-approve-implement workflow and its Graphviz source:
<Frame>
<img src="/images/plan-implement-workflow.svg" alt="Plan-Implement workflow graph" />
</Frame>
```dot title="plan-implement.fabro"
digraph PlanImplement {
graph [goal="Plan, approve, implement, and simplify a change"]
start [shape=Mdiamond, label="Start"]
exit [shape=Msquare, label="Exit"]
plan [label="Plan", prompt="Analyze the goal and codebase. Write a step-by-step plan.", reasoning_effort="high"]
approve [shape=hexagon, label="Approve Plan"]
implement [label="Implement", prompt="Read plan.md and implement every step."]
simplify [label="Simplify", prompt="Review the changes for clarity and correctness."]
start -> plan -> approve
approve -> implement [label="[A] Approve"]
approve -> plan [label="[R] Revise"]
implement -> simplify -> exit
}
```
This workflow plans a change, asks a human to approve it, implements the plan, and simplifies the result. If the human rejects the plan, the agent revises it. The entire process is version-controlled, repeatable, and resumable.
## Next steps
<Card
title="Quick Start"
icon="rocket"
href="/getting-started/quick-start"
horizontal
>
Install Fabro and run your first workflow in minutes.
</Card>