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.
58 lines
2.8 KiB
Markdown
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`.
|