# [2026-09-18] FleetTools — one capability index, autoloaded by three agent families Every agent on nh3-dev needs the same answers — what runs here, how do I call it, what will bite me — but that knowledge lived in `~/.claude/CLAUDE.md`, which only Claude sessions load, interleaved with operator preferences other families have no use for. ## Shape **Two-tier, matching the persistent-memory split.** `FLEETTOOLS.md` is a ~135-line index an agent reads whole; each entry links to a detail file it opens only when it needs that tool. Reading the index costs about a fifth of reading the tree. - Canonical: `docs/fleettools/` in this repo (git-tracked) - Discovery: `~/FLEETTOOLS.md` → symlink to the index - **Detail links are ABSOLUTE paths**, not relative markdown — a non-Claude agent `cat`s the path rather than following a link, and may be anywhere on the filesystem. Covers: althing, the Booth, `secret`, LiteLLM, inference seats + Asset Engine, speech, Arbo, elway, fleet SSH, observability, graphify, Playwright, the Henge, and a segregated Claude-only file (ratecheck, remote-ssh MCP, task-board, skills). ## Autoload — verified per family, not assumed - **Codex** reads `$CODEX_HOME/AGENTS.md` — the binary carries the string `"Failed to read global AGENTS.md instructions from"`. - **Grok** always scans `$GROK_HOME/rules/` and loads **every `*.md` in it regardless of name** — from its own embedded docs. Both locations were empty. `AGENT-BOOTSTRAP.md` is **symlinked** into each rather than copied — one file, three families, no drift surface. ⚠ Grok also scans `~/.claude/rules/` and recognises `CLAUDE.md` via harness-compat settings. That directory is empty today, but Grok can see Claude's config. ## Rule zero, which is the load-bearing part **Query live inventories, never a written list.** The index points at Homepage `/api/services`, asset-engine `/api/v1/services`, LiteLLM `/v1/models`, and every FastAPI seat's `/openapi.json`. A copied service table would be stale within a month — the LiteLLM roster was already at 40 models where the old CLAUDE.md note said ~30. ## The CLAUDE.md swap `~/.claude/CLAUDE.md`'s "Global tools available" section went from **231 lines to 39** (file 1218 → 1026, a 16% cut to what every Claude session loads). Three things stayed inline deliberately because they govern BEHAVIOUR rather than lookup: run `ratecheck` before expensive work, post operator-facing links to the Booth board, and the vault is the credential source of truth. **A rule behind a file read is a rule that stops firing.** Backup at `~/.claude/CLAUDE.md.bak-20260918-074048`. The shared all-agents LiteLLM key stays inline there too — every session needs it and a vault round-trip measured over two minutes — but it is now ALSO vaulted at `litellm/all-agents-shared-key`, since it had been single-copy. Commits `53c3e80` `21d24c5`.