Configuration
bro.config.ts (preferred) or bro.config.json in the repo root.
Everything is optional — missing keys and wrong-type values fall back
to per-section defaults instead of crashing. (A syntactically broken
file is different — bro setup will tell you to fix it.)
// bro.config.ts — plain default export; every key optionalexport default { personality: 'terse', stores: ['jsonl', 'beads'], debt: { dir: '.agents/review-debt' }, sync: { ref: 'refs/bro/data', remote: 'origin' }, act: { ignoreChecks: ['kilo'], maxRounds: 3 }, plugins: ['./my-plugin.ts'],}The config file is written per-clone by bro setup and gitignored on
purpose — store choices are machine-local.
Sections
Section titled “Sections”stores
Section titled “stores”Artifact backends. jsonl is the evidence ledger — always written.
beads is on by default (auto-inits .beads stealth when missing) and
projects debt into bd. gitref pushes artifact dirs to the data ref.
Explicit "stores": ["jsonl"] is the beads opt-out.
| Key | Default | What |
|---|---|---|
dir |
.agents/review-debt |
Ledger directory (BRO_DEBT_DIR env wins) |
| Key | Default | What |
|---|---|---|
ref |
refs/bro/data |
Data ref — outside refs/heads, never a branch |
remote |
origin |
Remote the data ref pushes/pulls |
| Key | Default | What |
|---|---|---|
ignoreChecks |
[] |
Check-name substrings excluded from the exit gate — for chronically flaky external reviewers |
maxRounds |
3 |
Inline fix-round cap. Past it, remaining threads must defer to debt beads. 0 disables |
plugins
Section titled “plugins”External plugin specifiers — relative paths (contained to the repo) or
package names, imported at startup. Each module’s default export must be
a BroPlugin. See Plugins.