Skip to content

Commit a08ebd4

Browse files
authored
docs: lead with code map and evidence log public names (#521)
Use brigade code / brigade evidence as the operator surface and keep GraphTrail and MiseLedger as historical names. Document Bootstrap Doctor against the full OpenClaw bootstrap set. Kitchen art stays brand; commands stay plain.
1 parent ee1ae34 commit a08ebd4

4 files changed

Lines changed: 63 additions & 31 deletions

File tree

README.md

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<p align="center">
2-
<img src="docs/assets/brigade-kitchen-scene.jpg" alt="Brigade - the brigade at the pass" width="900">
2+
<img src="docs/assets/brigade-kitchen-scene.jpg" alt="Brigade brand art: kitchen brigade at the pass (metaphor for coordinated agents)" width="900">
33
</p>
44

55
<h1 align="center">Brigade</h1>
@@ -9,7 +9,7 @@
99
</p>
1010

1111
<p align="center">
12-
Coding agents do real work unsupervised now, and at the end of a session all you have is their word for what happened. Brigade makes the fleet auditable: every check leaves a receipt with the real exit code and the exact symbols the change touched, backed by a built-in code-intelligence graph and evidence ledger. It also keeps the plumbing shared: one MCP and tool catalog synced into every harness, and one reviewed memory that improves from real outcomes, never from a model grading itself. A CLI that writes plain files on your machine. No daemon, no lock-in.
12+
When an agent says tests passed, get a file with the real exit code, a <strong>code map</strong> of what the change touched (<code>brigade code</code>), and an <strong>evidence log</strong> you can search later (<code>brigade evidence</code>). Optional: one MCP and tools catalog synced across your coding agents, and shared session notes with a review gate. Local CLI. Plain files. No daemon. No lock-in.
1313
</p>
1414

1515
<p align="center">
@@ -21,16 +21,16 @@
2121
<img src="https://shieldcn.dev/pypi/v/brigade-cli.svg?label=pypi&size=xs" alt="PyPI version">
2222
<img src="https://shieldcn.dev/pypi/dm/brigade-cli.svg?size=xs" alt="PyPI downloads per month">
2323
<img src="https://shieldcn.dev/badge/python-3.10+-blue.svg?logo=python&logoColor=white&size=xs" alt="Python 3.10+">
24-
<img src="https://shieldcn.dev/badge/rust-Code_engine-b7410e.svg?logo=rust&logoColor=white&size=xs" alt="Rust: the Code engine">
25-
<img src="https://shieldcn.dev/badge/go-Evidence_engine-00add8.svg?logo=go&logoColor=white&size=xs" alt="Go: the Evidence engine">
24+
<img src="https://shieldcn.dev/badge/rust-code_map-b7410e.svg?logo=rust&logoColor=white&size=xs" alt="Rust: code map engine">
25+
<img src="https://shieldcn.dev/badge/go-evidence_log-00add8.svg?logo=go&logoColor=white&size=xs" alt="Go: evidence log engine">
2626
<img src="https://shieldcn.dev/badge/license-MIT-4e7247.svg?size=xs" alt="MIT license">
2727
</p>
2828

2929
<p align="center">
3030
<img src="docs/assets/brigade-demo.svg" alt="Recording: an agent claims tests pass; a verify run writes a receipt with the real exit code, code impact shows what the change touched, evidence search finds the run in the ledger, and outcome rank scores the skill that did the work" width="800">
3131
</p>
3232

33-
<p align="center"><em>An agent said "tests pass." This is the claim becoming a record: receipt, graph, ledger, rank.</em></p>
33+
<p align="center"><em>An agent said "tests pass." This is the claim becoming a record: receipt, code map, evidence log, rank.</em></p>
3434

3535
## The loop
3636

@@ -86,11 +86,11 @@ brigade work verify run --target . --command "pytest -q" --capture brigade-work
8686
}
8787
```
8888

89-
Receipts land in the Evidence ledger, a Go engine installed by `brigade setup`, and every consequential action elsewhere in Brigade (a memory write, a skill promotion, a sync) is logged the same way. `brigade evidence search` answers "what ran, when, and what did it change" from files, weeks later. Cross-model dispatches through `brigade run` carry the same paper trail. When someone asks what your agents did this week, the answer comes from receipts you can grep, not from scrollback. [Capability page](https://brigade.tools/evidence-memory).
89+
Receipts land in the **evidence log** (`brigade evidence`), a Go engine installed by `brigade setup` (historically shipped as MiseLedger). Every consequential action elsewhere in Brigade (a memory write, a skill promotion, a sync) is logged the same way. `brigade evidence search` answers "what ran, when, and what did it change" from files, weeks later. Cross-model dispatches through `brigade run` carry the same paper trail. When someone asks what your agents did this week, the answer comes from receipts you can grep, not from scrollback. [Capability page](https://brigade.tools/evidence-memory).
9090

91-
## Code intelligence, built in
91+
## Code map, built in
9292

93-
The `code_graph_delta` line in that receipt comes from a Rust code-graph engine, also installed by `brigade setup` (digest-verified, no toolchain required). It indexes your repo once and keeps up incrementally. On this repository a sync pass over 652 files and 10,405 symbols reports in well under a second. A receipt names the exact symbols a change touched, and your agents stop grepping and start asking structural questions:
93+
The `code_graph_delta` line in that receipt comes from the **code map** (`brigade code`), a Rust engine installed by `brigade setup` (historically shipped as GraphTrail; digest-verified, no toolchain required). It indexes your repo once and keeps up incrementally. On this repository a sync pass over 652 files and 10,405 symbols reports in well under a second. A receipt names the exact symbols a change touched, and your agents stop grepping and start asking structural questions:
9494

9595
```
9696
$ brigade code impact _write_receipt
@@ -175,16 +175,25 @@ The ledger is plain JSON and markdown under `memory/outcome/`, tracked in git, r
175175

176176
## Optional stations
177177

178-
Code intelligence, Evidence, and Content Guard (`brigade scrub`, a secrets and PII scan before anything goes public) are built in and installed by `brigade setup`. Everything else is an optional station in its own repo. Core works with none installed, and `brigade status` health-checks whatever is present.
178+
**Built in** (via `brigade setup`):
179+
180+
| Surface | Commands | Notes |
181+
|---|---|---|
182+
| Code map | `brigade code …` | Callers, impact, context. Formerly GraphTrail. |
183+
| Evidence log | `brigade evidence …` | Searchable ledger of runs and imports. Formerly MiseLedger. |
184+
| Content Guard | `brigade guard` / `brigade scrub` | Secrets and private detail before publish. |
185+
186+
**Optional stations** (add when you need them). Core works with none installed. `brigade status` health-checks whatever is present.
179187

180188
| Station | Install | Role |
181189
|---|---|---|
182190
| [Agent Pantry](https://github.com/escoffier-labs/agentpantry) | `brigade add pantry` | Encrypted browser-session and secret sync across machines |
183191
| [Token Glace](https://github.com/escoffier-labs/token-glace) | `brigade add tokens` | Compact noisy tool output before it burns context |
184192
| [Skillet](https://github.com/escoffier-labs/skillet) | optional roster | Portable skills that reconcile can promote or roll back |
193+
| [Bootstrap Doctor](https://github.com/escoffier-labs/bootstrap-doctor) | `brigade add bootstrap-doctor` | Audit OpenClaw bootstrap files (SOUL.md, TOOLS.md, AGENTS.md, IDENTITY.md, MEMORY.md, and the rest of the set) and trim oversize detail into cards |
185194
| Notifications | `brigade add notifications` | Optional `agent-notify` binary for Discord, Telegram, or Signal; status and setup planning only until you wire hooks or pass an explicit `--send` |
186195

187-
Upgrading from the standalone GraphTrail or MiseLedger installs? `brigade setup` replaces both. The old `brigade add graphtrail` / `add evidence` paths remain as compatibility shims. Details: [wiring guide](docs/wiring-graphtrail-miseledger.md), [station contract](docs/station-contract.md).
196+
Upgrading from standalone GraphTrail or MiseLedger installs? `brigade setup` replaces both. The old `brigade add graphtrail` / `add evidence` paths remain as compatibility shims. Engine binaries and some paths still use the historical names; the operator surface is `brigade code` and `brigade evidence`. Details: [wiring guide](docs/wiring-graphtrail-miseledger.md), [station contract](docs/station-contract.md).
188197

189198
Beyond the daily loop, the same review-and-receipt pattern covers cross-model runs (`brigade run` dispatches one bounded task across your roster), security scans, friction mining, research reports, and fleet health. All of it stays behind `brigade extras on` until you ask. The full tour: [docs/overview.md](docs/overview.md).
190199

@@ -213,11 +222,22 @@ And it is not the other projects that share the name. This Brigade is the AI-age
213222
## Why I built this
214223

215224
<p align="center">
216-
<img src="docs/assets/brigade-social-preview.jpg" alt="Brigade - le chef de cuisine" width="900">
225+
<img src="docs/assets/brigade-social-preview.jpg" alt="Brigade social banner: kitchen metaphor brand art" width="900">
217226
</p>
218227

219228
I run an always-on OpenClaw agent next to daily Codex and Claude Code sessions. Every one of those tools wakes up empty, and whatever a session learned scattered across tool-specific folders and died there. Two incidents shaped the design: a "dreaming" job that promoted raw session fragments straight into memory bloated `MEMORY.md` past the bootstrap budget, so every session started truncated and nobody noticed for weeks. And 195 handoff notes sat unread across 35 repos because an ingester had a hardcoded allowlist and nothing warned about the gap. Silence is the failure mode. Every part of Brigade that lints, warns, or writes a receipt exists because something once failed in silence. The full production stack, now 482 cards across daily multi-agent work, is documented in the [Cookbook](https://escoffierlabs.dev/cookbook/).
220229

230+
## Names (public vs historical)
231+
232+
| What you type / say | Historical name | Notes |
233+
|---|---|---|
234+
| Code map · `brigade code` | GraphTrail | Built in via `brigade setup` |
235+
| Evidence log · `brigade evidence` | MiseLedger | Built in via `brigade setup` |
236+
| Content Guard · `brigade guard` / `scrub` | content-guard | Embedded |
237+
| Bootstrap Doctor | same | Full OpenClaw bootstrap set: SOUL, TOOLS, AGENTS, IDENTITY, MEMORY, and related session-start files |
238+
239+
Kitchen language (*brigade de cuisine*, *mise en place*, station nicknames) is brand and deep docs. Commands and product surfaces stay plain: receipt, code map, evidence log, sync, handoff.
240+
221241
## Harnesses
222242

223243
Nineteen harnesses get handoff inboxes and ingest coverage, from Codex, Claude Code, and Cursor to Goose, Aider, and OpenHands. Most also get projected tools and skills in their native format. The per-harness matrix is in the [technical guide](docs/technical-guide.md).
@@ -233,6 +253,6 @@ Nineteen harnesses get handoff inboxes and ingest coverage, from Codex, Claude C
233253

234254
MIT. See [LICENSE](LICENSE).
235255

236-
Project identity: GitHub [`escoffier-labs/brigade`](https://github.com/escoffier-labs/brigade), website [brigade.tools](https://brigade.tools), PyPI [`brigade-cli`](https://pypi.org/project/brigade-cli/), command `brigade`. The name comes from the kitchen: a *brigade de cuisine* runs the line, and *mise en place* means the station is prepped before service. Set up the rules, memory, tools, and receipts before the session gets expensive.
256+
Project identity: GitHub [`escoffier-labs/brigade`](https://github.com/escoffier-labs/brigade), website [brigade.tools](https://brigade.tools), PyPI [`brigade-cli`](https://pypi.org/project/brigade-cli/), command `brigade`. The product name comes from a kitchen line (*brigade de cuisine*): coordinated stations, prep before service. You do not need the kitchen glossary to install or run it. Set up rules, memory, tools, and receipts before the session gets expensive.
237257

238258
It is early-stage and moving fast. If you hit a broken workflow, a confusing command, or a setup issue, [open an issue](https://github.com/escoffier-labs/brigade/issues) and I will get it fixed.

docs/overview.md

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,20 @@ Brigade gives the setup a home base.
2828

2929
The goal is not to make a giant automation machine. The goal is to make agent memory understandable, reviewable, and portable across harnesses.
3030

31-
## Mise En Place
31+
## Mise En Place (brand metaphor)
3232

33-
The name comes from the kitchen. A *brigade de cuisine* is the staff that runs the line, and *mise en place*, pronounced "meez", means everything is in its place before the work starts.
33+
The product name comes from the kitchen. A *brigade de cuisine* is the staff that runs the line, and *mise en place*, pronounced "meez", means everything is in its place before the work starts. That metaphor lives in brand art and deep docs. The commands you type stay plain: `setup`, `verify`, `sync`, `code`, `evidence`.
3434

35-
In a kitchen, that is the chef's first job: prep the station, label the ingredients, sharpen the tools, and make sure service does not depend on hunting for basics mid-rush. For agents, it is the same job: rules, memory, handoff inboxes, tools, guards, receipts, and verification paths set up before the session gets expensive.
35+
In a kitchen, the first job is prep: label ingredients, sharpen tools, and avoid hunting for basics mid-rush. For agents, it is the same job: rules, memory, handoff inboxes, tools, guards, receipts, and verification paths set up before the session gets expensive.
3636

37-
That is the idea Brigade is built on. The chef owns the station, and every agent working in it should leave the setup clearer, safer, and easier for the next agent to use.
37+
Public names for the built-in engines:
38+
39+
| Public | Commands | Historical |
40+
|---|---|---|
41+
| Code map | `brigade code …` | GraphTrail |
42+
| Evidence log | `brigade evidence …` | MiseLedger |
43+
44+
Standalone GraphTrail or MiseLedger installs are replaced by `brigade setup`. Some binary and path names still use the historical labels; the operator surface is the public table above.
3845

3946
## Start Small
4047

@@ -331,7 +338,7 @@ Memory and handoff tools:
331338
- [OpenClaw](https://github.com/solomonneas/openclaw): personal AI assistant and memory owner.
332339
- Hermes: local memory owner and handoff writer convention.
333340
- Memory maintenance is embedded in Brigade: `brigade memory status`, `lint`, `compact`, and `init-git` (the retired [memory-doctor](https://github.com/escoffier-labs/memory-doctor) package). Use `brigade ingest` for handoff promotion.
334-
- [bootstrap-doctor](https://github.com/escoffier-labs/bootstrap-doctor): audits and trims oversized OpenClaw bootstrap files.
341+
- [bootstrap-doctor](https://github.com/escoffier-labs/bootstrap-doctor): audits and trims the full OpenClaw bootstrap set (SOUL.md, TOOLS.md, AGENTS.md, IDENTITY.md, MEMORY.md, and related session-start files), and the same idea for other harnesses with large bootstrap files.
335342

336343
Safety and operations tools:
337344

@@ -341,17 +348,18 @@ Safety and operations tools:
341348
- [Token Glace](https://github.com/escoffier-labs/token-glace): output compaction for terminal-heavy agent workflows.
342349
- Built-in Scout skills: Brigade wires `brigade-work` and `ultra-work-scout` during `brigade init`; use Skillet when you want the full optional skill roster.
343350

344-
Evidence ledger tools:
345-
346-
- [MiseLedger](https://github.com/escoffier-labs/brigade/tree/main/engines/evidence-ledger) (`engines/evidence-ledger/` in this monorepo): local-first evidence ledger. One binary crawls sessions, files, git history, and chat sources (`miseledger crawl ...`), stores `miseledger.adapter.v1` JSONL in SQLite with FTS5, and emits Brigade-ready evidence bundles. The archived [miseledger](https://github.com/escoffier-labs/miseledger) repository is a frozen history mirror.
347-
- Brigade station CLI (process boundary):
348-
- `brigade setup` installs GraphTrail, `graphtrail-mcp`, MiseLedger, SessionFind, and `agent-notify` (when published on the release manifest) from the exact release manifest
349-
- `brigade add evidence` is a one-release compatibility fallback for an independent MiseLedger install
350-
- `brigade evidence status` / `doctor` — advisory health + next commands
351-
- `brigade evidence crawl <args...>` / `search <args...>` - transparent MiseLedger execution; engine output and exit code pass through
352-
- `brigade evidence crawl plan` / `export plan` — review-only plans under `.brigade/evidence/plans/`
353-
- `brigade receipts export miseledger --new-only --import` — export verify/run receipts into the ledger
354-
- Historical note only: StationTrail and SourceHarvest were absorbed into MiseLedger crawl in v0.3.0; their archived repos are migration notes, not active products.
351+
Evidence log and code map (built in):
352+
353+
- **Evidence log** (`brigade evidence …`): local-first ledger of runs, crawls, and imports. Engine lives at [`engines/evidence-ledger/`](https://github.com/escoffier-labs/brigade/tree/main/engines/evidence-ledger) (historically MiseLedger). Crawls sessions, files, git, and chat into SQLite with FTS5. Archived standalone [miseledger](https://github.com/escoffier-labs/miseledger) is a history mirror only.
354+
- **Code map** (`brigade code …`): local symbol graph (callers, impact, context). Engine lives under the monorepo engines tree (historically GraphTrail). Archived standalone [graphtrail](https://github.com/escoffier-labs/graphtrail) is a history mirror only.
355+
- Brigade CLI (process boundary):
356+
- `brigade setup` installs the code-map engine, its MCP bridge, the evidence engine, SessionFind, and `agent-notify` (when published on the release manifest) from the exact release manifest
357+
- `brigade add evidence` / `brigade add graphtrail` remain one-release compatibility shims
358+
- `brigade evidence status` / `doctor` - advisory health + next commands
359+
- `brigade evidence crawl <args...>` / `search <args...>` - engine output and exit code pass through
360+
- `brigade evidence crawl plan` / `export plan` - review-only plans under `.brigade/evidence/plans/`
361+
- `brigade receipts export miseledger --new-only --import` - export verify/run receipts into the ledger (command keeps the historical export name for now)
362+
- Historical note only: StationTrail and SourceHarvest were absorbed into evidence crawl in v0.3.0; their archived repos are migration notes, not active products.
355363

356364
Search and context tools:
357365

docs/station-contract.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ Fresh repo installs use the `repo` profile: core, skills, memory, guard, securit
1717
| `tokens` | token-glace | tracks token spend across your harnesses and compacts noisy output |
1818
| `memory` | bootstrap-doctor (optional); memory maintenance is built in | `brigade memory status|lint|compact` plus memory-care for card freshness |
1919
| `pantry` | agentpantry (Go sidecar) | plans and health-checks sealed browser-session sync; never starts source/sink |
20-
| `search` | code-search; GraphTrail is installed by `brigade setup` | local semantic search plus the code-graph engine for callers, impact, and structural diffs |
21-
| `evidence` | MiseLedger, the evidence engine installed by `brigade setup` | explicitly runs local MiseLedger for `brigade evidence crawl|search`; crawl/export plans are review-only, and Brigade neither starts daemons nor uploads data |
20+
| `search` | code-search; the code map engine is installed by `brigade setup` (historically GraphTrail) | local semantic search plus the code map for callers, impact, and structural diffs (`brigade code …`) |
21+
| `evidence` | evidence log engine installed by `brigade setup` (historically MiseLedger) | runs the local evidence engine for `brigade evidence crawl|search`; crawl/export plans are review-only, and Brigade neither starts daemons nor uploads data |
2222

2323
## Inspecting a station before install
2424

docs/wiring-graphtrail-miseledger.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
# Wiring GraphTrail and MiseLedger MCP
1+
# Wiring the code map and evidence log MCP
2+
3+
> **Public names:** code map (`brigade code`, historically GraphTrail) and evidence log
4+
> (`brigade evidence`, historically MiseLedger). Engine binaries and some paths still use
5+
> the historical names. New installs use `brigade setup`.
26
37
Installing the CLIs is not the same as wiring them. If the binaries are on PATH but no
48
`[mcp_servers.*]` block (Codex) or `mcpServers` entry (Claude Code) references them, agents

0 commit comments

Comments
 (0)