baro
A CLI that turns a goal into a pull request - and a sandbox for testing concurrent AI coding agents on the Mozaik runtime.
Links
README
From the repo.
baro
Type a goal in your repo. Walk away. Come back to a verified pull request.
baro is an autonomous software factory. It compiles your goal into a machine-checkable contract, splits it into a DAG of stories, builds them in parallel across isolated git worktrees, and blocks every merge behind fail-closed gates — declared tests, build, an evidence critic, write-surface ownership. You review a PR the gates already accepted.
One prompt → a 33-story plan → 808 passing tests → a PR, in 71 minutes. See a real run.
Install
npm install -g baro-ai
Needs Node 20+, git, and at least one backend: the claude CLI (default), codex,
or any OpenAI-compatible endpoint. baro --doctor checks your setup.
Use
cd your-repo
baro "Add JWT authentication with role-based access control"
That opens the TUI: intake asks only what matters, you confirm the plan, the fleet runs.
For automation, detach and follow from anywhere:
baro --headless --detach --goal-file goal.txt # prints a run id, returns immediately
baro watch <run-id> # follow milestone events
baro logs <run-id> --follow # tail the raw log
baro runs # list live runs
baro stop <run-id> # stop one
Commands
| Command | What it does |
|---|---|
baro "<goal>" | run a goal in the current repo (TUI) |
baro --goal-file <path> | read the goal from a file |
baro --headless --detach ... | background run for CI/automation; prints the run id |
baro watch <run-id> | follow a live run's milestones |
baro logs <run-id> [--follow] | print or tail a run's log |
baro runs / baro stop <id> | list / stop live runs |
baro --resume | resume an interrupted run from prd.json — never re-plans |
baro --continue | follow-up on the current branch — always re-plans |
baro --doctor | self-diagnostic: backends, auth, gh, permissions |
baro login | browser sign-in for baro cloud |
baro connect [--install-service] | attach this machine as a cloud runner |
The flags that matter
--llm claude|codex|openai|opencode|pi|hybrid|jigjoy # backend for all phases
-m opus|sonnet|haiku # model override (verbatim pass-through on other backends)
--effort low..max # thinking per turn (default: high)
--parallel N # max parallel story agents (0 = unlimited)
--mode focused|sequential|parallel # force an execution mode (default: intake proposes)
--quick # trivial goals: one story, no architect/critic/surgeon
--local-only # no pushes, no PRs — hard isolation
--shell-budget <seconds> # per-command budget for story shell tools
--openai-base-url <url> # any OpenAI-compatible provider (OpenRouter, vLLM, Ollama…)
--tier-map "light=openai:MiniMax-M3,heavy=claude:opus" # mix backends per story tier
Per-phase overrides (--architect-llm, --story-model, …), .barorc, and everything
else: docs.baro.rs
How it works

- Contract first. An architect turns the goal into invariants and obligations that are machine-checkable — before any code is written.
- A collective, not a coordinator. Story agents are peers on an event bus: they see the events that concern them, exchange notes, and suspend/resume on each other's work. There is no single context window everything must squeeze through.
- Gates, not vibes. Declared tests, build-before-commit, an evidence critic that judges captured command output, and write-surface ownership — fail-closed, blocking every merge. The human reviews a PR the gates already accepted.
- A live plan. The plan is a DAG the run negotiates with: runtime replanning adds and rewires stories mid-run, and a failed gate can spawn its own remediation story.
Drive it with Claude Code
baro pairs well with a coding agent in the driver's seat. Paste this into Claude Code inside your repo:
Install baro (npm install -g baro-ai) and run `baro --doctor` to verify the setup.
Then drive it for me:
1. Write my task as an evidence-rich goal file: name the exact files and line numbers
the change touches, state the constraints, and say which tests must prove it.
2. Launch it detached: `baro --headless --detach --goal-file goal.txt`, note the run id.
3. Follow it with `baro watch <run-id>`; if it stalls, read `baro logs <run-id>`.
4. When the pull request opens, review the diff against the goal, run the project's
test suite yourself, and report back: what shipped, what the gates proved, and
anything that needs my eyes. Merge only if everything is green.
Keep goals narrow — one concern per run. If the run fails, read why, tighten the goal
with the new evidence, and launch again.
Cloud
No machine, or no Claude/Codex subscription? Run the same fleet on
app.baro.jigjoy.ai — nothing to install, isolated
sandboxes, our keys. Or keep your own hardware in the pool: baro login, then
baro connect --install-service.
Docs: docs.baro.rs · Issues: github.com/jigjoy-ai/baro/issues · Twitter: @lotus_sbc
Collected info
- ★ 112 stars
- ⎇ 10 forks
- Language: TypeScript
- Source updated: 8/15/2026
Config for your environment
Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.
Tool
OS
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"url": "{MCP_ENDPOINT_URL}"
}
}
}Paste into mcpServers in the config file. Restart Cursor after saving.
If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.