Skip to content

coxswain-crew

A standing cast of named agent seats — who does what, what each may touch, and how each reports — with no employer inside any of them.

Most agent rosters hardcode a workplace into the definitions: this tracker, that board, those conventions. Then the team changes, or you do, and the roster is worthless. Here the seat is the durable part and the employer is a binding you swap.

The six repositories

Repository Owns The sentence
coxswain-cartridges who a run works for roles → skills, where writes land, tier → model
coxswain-graphs what runs, and the harness that runs it sequence, the gate, the ledger
coxswain-crew who speaks seats, their authority, their voices
coxswain-tools the cox command run records, traces, landing, screens
coxswain the umbrella docs, manifest, one-line install

Cartridges say who a run works for, graphs say what runs, the crew says who speaks. Each is usable without the others.

The cast

Three lanes, grouped by what a seat may touch rather than by who reports to whom. The read-only lane exists so findings arrive from eyes that did not do the work.

Seat Voice Surface Write authority
Nova af_nova recon — codebase sweeps, log analysis, research, readiness audits none
Sky af_sky triage and incidents — alerts, failures, blast radius none
Lewis bm_lewis review — reads the diff, never the builder's account of it none, and no merge
Sarah af_sarah build — worktree, branch, tests, one pull request code on its own branch
Michael am_michael ops — CI, PR health, deploys, local tooling its own PR branches
Emma bf_emma the board — epics, phases, item bodies, dates, reconciliation proposes; the chief writes
Echo am_echo writing — docs, RFCs, outward-facing replies drafts only
Alice bf_alice scribe — the visual plan for a swarm, tracked to completion plans/ only
Daniel bm_daniel steward — reads the run records and proposes what should change: skills, workflows, spend, hygiene none; every change is a PR

The chief of staff is the session you are talking to, not a file: see seats/SEATS.md.

A reviewer is independent by construction. Lewis reads the diff and a base ref, never the builder's summary, and is never the instance that wrote the code. He advises — not ready, split this, close it instead — and merge stays human.

Install

git clone https://github.com/ppfenning/coxswain-crew ~/repos/coxswain-crew
~/repos/coxswain-crew/install.sh            # symlinks seats into ~/.claude/agents
~/repos/coxswain-crew/install.sh --check    # what is installed, and from where

Symlinks, not copies, so editing a seat here changes what every session loads. --prefix installs elsewhere; nothing is overwritten unless it is already a symlink into this repository.

Binding a seat to your team

A seat names roles; a cartridge says which skills fill them. Add a cast: block to your team cartridge in coxswain-cartridges:

cast:
  nova:
    skills:   [audit-and-apply, pr-fleet-sweep]
    context:  "the read side of your internal SDK"
  sarah:
    skills:   [feature-lifecycle, test-driven-development]

Unbound seats still work; they simply route to nothing team-specific. Nothing in this repository names a company, a tracker, a board, or a person.

Voice is decoration

Every seat is a plain agent definition and works in any session. In a voice session a seat reports in its own voice, which is how you hear that a finding came from an independent pair of eyes rather than from the chief restating itself. In a text session the voice line is dropped. All nine voices ship with Kokoro; none is required.