Files
esh-pfi-infrastructure/persistent-memory.d/2026-09-18-fleettools-agent-index.md
T
vh 148a5a34da memory: snapshot — three silent fleet faults found and fixed in one afternoon
An infrastructure day with no training work, and the through-line is that
every fault was invisible to monitoring. NH3↔Anaheim had been crossing a
throttled DERP relay rather than a direct path for long enough to carry 78 GB;
`.internal` DNS was failing roughly one lookup in ten from two independent
causes; SearXNG had exactly one working general web engine. Nothing alarmed on
any of it. All three surfaced because tts-dev had a 1545 ms voice-loop budget
and chose to measure rather than adapt around the problem.

Also landed: althing v3.6.3, which makes hyphenated search work for the first
time on a fleet whose hostnames are nearly all hyphenated; FleetTools, a
capability index autoloaded by Claude, Codex and Grok from one symlinked file;
Miranda's Hermes plugin moved from a copy to a repo symlink; Worldtree's
env.sh secrets vaulted.

Six detail files. The in-flight section is rewritten and shrinks 142 lines to
64 — it opens on the one thing this session did NOT verify, lv-mccarthy's run
outcome, which was left untouched and must not be assumed good.

Two foot-guns recorded, both mine: the ESH egress experiment reverted on a
diagnosis the rollback itself falsified, and `!ENV` in searxng settings, which
has no constructor in that build and crash-looped the container ten times.

No archival this run. 165 of 169 dated entries are under the 14-day guard and
the remaining four all carry open deferred pointers, so the index stays over
the soft cap at 480 lines — an over-cap file that keeps live decisions beats a
scannable one that lost one.
2026-09-18 20:09:01 -07:00

58 lines
2.8 KiB
Markdown

# [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`.