baro
Plan. Parallelize. Review. Ship.
Type a goal. Get a PR.
Not a pipeline. A bus.
baro is built on the Mozaik agentic environment. The Conductor has no run() method. Every participant subscribes to event types and emits others — spawning a story, evaluating a turn, replanning the DAG are all reactions, not steps in a loop.
// the usual orchestrator async function run(prd) { for (const level of prd.levels) { const results = await Promise.all( level.stories.map(s => runStory(s)) ) if (anyFailed(results)) { const fixes = await reviewer(results) await Promise.all(fixes.map(runStory)) } } await commitAndPush() await openPR() }
// baro on the Mozaik bus class Conductor extends Participant { onContextItem(item: ContextItem) { if (item.type === "RunStartRequest") this.emit(LevelComputeRequest()) if (item.type === "StoryResult") this.checkLevel(item) if (item.type === "LevelCompleted") this.emit(this.nextLevelOrFinish()) // no run(), no while, no Promise.all } }
- ArchitectDesigns the DAG up front — runs once before any story spawns (0.25)
- ConductorOrchestration state machine — drives the run by reacting
- StoryFactorySpawns Story Agents on each StorySpawnRequest
- StoryAgentRuns one story via Claude CLI, with retries and timeout
- LibrarianCross-agent memory — indexes outputs of exploration tools
- SentryFlags overlapping file writes across concurrent stories
- CriticPer-turn acceptance-criteria evaluator (opt-in)
- SurgeonEmits DAG replans when a story fails terminally (opt-in)
- FinalizerCommits the run, pushes the branch, opens the PR
- OperatorBridges external commands (TUI, web UI) into bus events
- AuditorJSONL log of every event on the bus
- CartographerTranslates bus events into UI frames for the Rust TUI
Six things that earn it the orchestrator name.
- ◆
Parallel DAG executor
Topological sort with level grouping and cycle detection. Independent stories run simultaneously, dependents wait their turn.
- ◆
Claude or GPT, one flag
`--llm claude` shells out to Claude Code on your Max subscription. `--llm openai` calls GPT-5.5 natively through Mozaik. Routed defaults per phase on both — Architect plans, Story Agent executes, Critic reviews — with per-phase overrides for everything.
- ◆
Review agent
After every level, a review agent checks work against acceptance criteria. Spawns fix stories automatically when something is off.
- ◆
Live TUI
Story status, agent logs, DAG view, stats. Nothing happens behind your back — every event lands in the dashboard in real time.
- ◆
Resume incomplete runs
Plans persist as prd.json. If a run is interrupted or you started with --dry-run, pass --resume to continue with the same DAG.
- ◆
PR with full summary
On a feature branch, never on main. PR body includes the story table, build stats, time saved vs sequential, and review notes.
We wrote up the full engineering story — Getting the maximum out of my Claude Code subscription→
Install. Point. Ship.
- Basic — give it a goal, walk away (Claude Code under the hood)
$ baro "Add JWT authentication with role-based access control"
- Route every phase through GPT-5.5 instead
$ OPENAI_API_KEY=sk-... baro --llm openai "Refactor the database layer"
- Limit parallelism on big plans
$ baro --parallel 3 "Refactor the database layer"
- Dry-run first, run later
$ baro --dry-run "Add WebSocket support" baro --resume
- Pin a single model across every phase
$ baro --llm openai --model gpt-5.4 "Add WebSocket support"
Untranslatable. Approximated by cool, sharp, the real thing — but if any of those were enough, the word would not exist. Its negation carries the weight: when something is not baro, it isn't merely uncool, it is actively, irredeemably wrong.
npm i -g baro-ai
Type a goal. Get a PR.