Brigade is the local-first operator CLI for agent memory, handoffs, and reviewable work receipts. It grew out of Solomon's Cookbook, and patches are welcome. Before you start, please skim this file so we both spend our time on the right things.
- Bug fixes for
brigade init,doctor,scrub, quickstart, security scanning, or the ingester. - Harness / depth / include improvements: new bootstrap content, sharper post-install notes, better defaults.
- New harness adapters (with doctor checks) under
src/brigade/templates/harnesses/<id>.json. - Doctor checks that catch real, observed failure modes.
- Test coverage for any of the above.
- A new top-level harness, depth, or include. Open an issue first describing the user story. These are the public surface and renaming or splitting them later is painful.
- Breaking changes to template paths, the handoff TEMPLATE.md fields, or the ingester routing rules.
- Anything that adds a runtime dependency. Brigade has zero runtime deps on purpose, and we want to keep it that way.
- Personal details, hostnames, IPs, account IDs, or live auth profiles in templates or tests. The whole point of this kit is to keep that stuff out of public repos. The
content-guardjob in CI will fail if it finds any. - Cron jobs or hooks that post or call out to the network without explicit opt-in.
- Commits must use conventional commits. In-house commits in escoffier-labs organizations and original solomonneas repositories should include a co-author trailer for a coding agent that did substantial work; external repositories and upstream third-party PRs remain trailer-free.
Reviewed planning docs are public and tracked: the phase plans (docs/phase-*.md), docs/roadmap-completion-plan.md, and the superpowers plans and specs under docs/superpowers/. They stay in the repo as a record of how the work was sequenced.
/docs/plans/ and /docs/specs/ are gitignored on purpose. They are scratch space for in-flight drafts that have not been reviewed for publication. When a plan there is finished and scrubbed, move it to one of the tracked locations above (or delete it).
git clone https://github.com/escoffier-labs/brigade.git
cd brigade
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest -qTo smoke-test an install end-to-end the same way CI does:
target="$(mktemp -d)"
git init -q -b main "$target"
python -m brigade init --target "$target" --depth workspace --harnesses claude,codex,openclaw
python -m brigade doctor --target "$target"A harness is a manifest under src/brigade/templates/harnesses/<id>.json plus any template files it references. The manifest declares role: "writer" (gets an inbox) or role: "reader" (gets adapter fragments).
To add a harness:
- Create the manifest at
src/brigade/templates/harnesses/<id>.json. - Add template files under a harness-named directory, for example
src/brigade/templates/<id>/. - Add the harness id to
KNOWN_HARNESSESinsrc/brigade/selection.py. - Update
HARNESS_PRIORITYif the new harness should be an owner candidate (readers usually want to land near OpenClaw/Hermes in the priority list). - If it is a writer, add it to
WRITER_INBOXESinsrc/brigade/selection.pyand update any writer-specific installer, doctor, or ingest tests. - Add the harness to the CI matrix in
.github/workflows/ci.yml. - Add a row to the harness table in
README.md.
Depths live at src/brigade/templates/depth/<id>.json and may use extends to inherit from another depth. Add the id to KNOWN_DEPTHS in selection.py and to the --depth choices in src/brigade/cli/init.py.
Includes live at src/brigade/templates/includes/<id>.json. Add the id to KNOWN_INCLUDES in selection.py.
Check functions live in src/brigade/doctor.py and nearby command modules. Each returns structured status data where status is OK, WARN, FAIL, or MANUAL. Prefer WARN or MANUAL over FAIL for things the user can choose not to wire up - FAIL should mean "this profile is broken."
The Hermes adapter is currently marked experimental. To graduate it (or any future experimental adapter) to "tested":
- A doctor check exists that meaningfully exercises the adapter against a real install.
- Someone has run the full init + doctor cycle on a real Hermes workspace and reported it on an issue.
- The post-install notes no longer say "experimental".
Open a PR with all three and we'll land it.
Please use the templates under .github/ISSUE_TEMPLATE/ - they exist to save you from re-typing the version and install shape every time.
For first-run setup failures, use the "Quickstart setup problem" or "Init or doctor fails" form. The most useful report is the redacted issue_report from:
brigade operator quickstart --target <repo> --harnesses codex --jsonBefore posting output, remove tokens, private hostnames, private repo names, private account names, and unredacted absolute paths. Good labels for setup reports are quickstart, setup, harness, docs, and security-scan.
The ingester-misclassified template is the most useful one to file early. If a handoff that should have promoted to a card got bounced (or vice versa), that is a real bug in the routing rules, not a corner case. We want to see it.
Brigade is written and maintained by Solomon Neas. Development runs through the same multi-model seat roster the tool orchestrates, so commits sometimes carry co-author trailers for the coding agents that did substantial work on them.
By contributing you agree that your contribution is licensed under the MIT License, same as the rest of the repo.