Brigade is the brigade de cuisine, but a kitchen is a team of stations. This is the Escoffier Labs fleet: which tools Brigade actually calls, the evidence pipeline that feeds it, and why the kitchen metaphor turns out to be the architecture.
Auguste Escoffier’s contribution to cooking was not a recipe — it was an org chart. The brigade de cuisine split a chaotic kitchen into stations, each owning one job, each handing off cleanly to the next, with the chef coordinating. Escoffier Labs is that idea applied to agent operations: one small, sharp tool per concern, composed by Brigade.
Brigade is the executive chef and the pass. The fleet is the line. Crucially, Brigade keeps the line at arm’s length: it never imports another fleet tool as a Python library. Every relationship below is either a subprocess shell-out to a tool’s own CLI, an install argument, or a small shared constant. That is what keeps each tool independently shippable and Brigade dependency-free.
Hub-and-spoke of the code-confirmed integrations. Solid edges are subprocess calls or install targets Brigade drives; dashed edges are the reverse — tools that depend on Brigade (a shared budget constant) or feed it through a skill rather than being called by it.
brigade → agentpantryauth syncbrigade → code-searchsearchbrigade → evidence logevidencebrigade → agent-notifynotifybrigade → Token Glacecompactmemory-doctor ⇢ brigadeimportsskillet ⇢ brigadehandoffsbrigade ⇢ solos-cookbookdoctrineThe evidence station is one Brigade surface, not three. Today the public path is `brigade evidence`: the historical MiseLedger engine collects sessions, files, git history, and chat sources, normalizes records to miseledger.adapter.v1 JSONL, and stores them in local SQLite for Brigade to query. There are no separate StationTrail or SourceHarvest install steps. Those exporters were absorbed into crawl in MiseLedger v0.3.0 and their repos are archived.
Every Escoffier Labs tool, its role, stack, and exact relationship to Brigade. "declares" = linked in brigade’s pyproject; "calls" = Brigade shells out to it; "feeds" = it sends data into Brigade; "imports" = it depends on a brigade constant; "independent" = thematically part of the fleet but not wired into Brigade; "planned" = design only, not shipped.
| Tool | Role | Stack | Relation to Brigade |
|---|---|---|---|
| content guard | Publish-safety / content scrub gate | Python (embedded in brigade-cli) | declares brigade.guard via scrub.py / brigade guard |
| agentpantry | Agent session auth / secret sync | Go (GitHub releases) | declares go install + linked in pyproject |
| solos-cookbook | The production doctrine Brigade packages | Docs | declares linked in pyproject (Cookbook) |
| code-search-api | Local semantic code search | Python / FastAPI | calls reached over plain local HTTP |
| code-search-mcp | MCP wrapper over code-search-api | Node / TypeScript | feeds feeds code context to agents |
| evidence log (MiseLedger) | Local-first evidence ledger + built-in crawlers | Go / SQLite | feeds queried by the Brigade evidence station. Old standalone repo archived |
| Token Glace | Output compaction (tokens station) | CLI | calls managed + shelled by Brigade |
| agent-notify | Operator notification wiring | CLI | calls managed + shelled by Brigade |
| memory-doctor | Memory-index health checks | CLI | imports imports brigade.budgets constant |
| bootstrap-doctor | Bootstrap-file health checks | CLI | imports optionally sources brigade.budgets |
| skillet | Reusable agent skills (process roster) | Agent skills | feeds brigade-handoffs skill writes Brigade memory |
| mise-en-scene | Interactive technical explainers | React / TypeScript | independent presentation; not wired into Brigade |
| cloche | Screenshot / image-card capture | Rust (crates.io) | independent session-capture utility |
| usage-tracker | Token / cost analytics | React / TypeScript | independent observability; not wired into Brigade |
| upstream-drift | LLM-summarized upstream watcher | CLI | independent independent utility |
| escoffier-fleet-kit | Fleet publishing / branding infra | Tooling | independent meta; builds the fleet, not called by it |
| shortlist | Candidate triage (design + phase-1 plan) | Design only | planned specs only — no source shipped |
The kitchen names are not flavor text. Each encodes an operational principle that shows up directly in the code.
| Kitchen role | Fleet expression | Operating principle |
|---|---|---|
| Brigade de cuisine | Brigade CLI | A coordinated team beats a lone generalist; the chef owns the pass. |
| Mise en place | Two-layer memory + init | Prep everything before service; slim index, detail on demand. |
| Stations | core / memory / guard / search / ... | One concern per station, each with its own doctor health check. |
| The pass | brigade guard + scrub | Nothing leaves the kitchen without passing the chef’s inspection. |
| Expediter (aboyeur) | brigade run orchestrator | One voice calls and sequences the orders across the line. |
| Dockets / receipts | plain-file receipts | Every order is written down: auditable, greppable, never silent. |
| Garde-manger / larder | memory station / pantry | Cold prep and provisioning kept ready and labeled, not hunted for. |