All mechanics live in the bro CLI. This skill is policy only.
The three process roles, never conflated:
| Role | Command | Lifetime |
|---|---|---|
| Owner | bro fleet daemon up — spawns daemon run (the bro review drive --every loop) detached |
long-lived, until down |
| Observer | bro review watch --every N --for S |
bounded window, dies on its own |
| UI | bro fleet serve |
a debug surface, not orchestration |
The daemon holds drive.lock (one supervisor per repo) and owns the
drive pass: act gates → fixer spawns → merges. Task agents are spawned
through the registry as detached peers — killing the daemon never kills
in-flight agents, and killing a watch window never touches either.
Commands
bro fleet daemon up [--every SEC]— orchestrator-only. Spawns the supervisor detached, records the armer in<git-common>/bro/daemon.json, logs to<git-common>/bro/daemon.log. Idempotent: a live holder (even a rawbro review drive --every) reportsalready, never doubles.bro fleet daemon status— lock holder + armer record + log path; an armedbro/drive.jsonshows· installed.bro fleet daemon down— SIGTERM the holder, clear the record. Transient under an install:bro review drive installarmedbro/drive.json, so the next session checkpoint rearms the supervisor;bro review drive uninstallis the disarm.bro fleet daemon run— the loop itself; spawned byup(or by a session checkpoint rearming an installed supervisor), not for direct use.
Guards
BRO_AGENT_IDsessions are refused atup— spawned workers never arm supervisors (same predicate asbro review drive --every).daemon runinherits drive's own guard,drive.lockhold, and heartbeat emission — the watchdog reads supervisor liveness through them, andbro review watchrenders it in thedaemonsection. A recorded-but-dead daemon lands inattention— the pulse's job is noticing,upis the fix.