[ Escoffier Labs Ecosystem ]
The whole kitchen
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.
Brigade Does Not Work Alone
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.
The Core Fleet: What Brigade Actually Calls
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.
The Architectural Tell: No In-Process Imports
The Evidence Pipeline
The evidence station is one tool, not three. Today the pipeline is: `miseledger crawl` collects sessions, files, git history, and chat sources; records normalize to miseledger.adapter.v1 JSONL; MiseLedger stores them in local SQLite; Brigade queries the ledger for investigation, release evidence, and run evidence briefs. 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.
- sessions
- files
- gitlog
- chat sources
The Full Fleet
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 |
| miseledger | Local-first evidence ledger + built-in crawlers | Go / SQLite | feeds queried by the evidence station; crawl is built in (no separate exporters) |
| 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 Metaphor Is the Architecture
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. |