Codex reads a global AGENTS.md from CODEX_HOME; Grok always scans ~/.grok/rules/ and loads every *.md in it regardless of name. Both were empty, so AGENT-BOOTSTRAP.md is symlinked into each rather than copied — one file, three agent families, no drift surface. The bootstrap is a pointer, not a second index: it names ~/FLEETTOOLS.md, gives the three live-inventory endpoints, and inlines only the rules that must hold even if the agent never opens anything else — attribution to Vuong Hoang, no committed secrets, the operator owns architectural calls, n=1 is not a measurement, and absence of a signal is not a safe reading of it. The shared all-agents LiteLLM key was single-copy in ~/.claude/CLAUDE.md and is now also in the vault at litellm/all-agents-shared-key, per the standing directive that durable credentials never live in one place. It stays inline in CLAUDE.md too, since every session needs it and a vault round-trip measured over two minutes. Namespace is service-scoped rather than host-prefixed because the key is fleet-wide, matching the existing att/fortigate/headscale/unifi/worldtree entries.
2.6 KiB
Fleet bootstrap — read this first
You are working on nh3-dev, one box in a multi-site fleet (Anaheim colo, NH3, Irvine, Fountain Valley, and the ESH home lab) with a large set of standing services: an inter-agent message bus, a local LLM gateway, GPU inference seats, TTS/ASR, image generation, a credential vault, monitoring, and fleet-ops tooling.
The index of all of it is /home/lkraven/FLEETTOOLS.md. Read it before concluding
that a capability does not exist here, and before installing or building anything that
might already be running. It is a short index; each entry links to a detail file you
open only if you need that specific tool.
Three endpoints that answer "what exists right now"
Prefer these over any written list, including lists in this repo — they stay correct on their own:
curl -s http://10.0.50.45:5100/api/services # every fleet service, curated
curl -s http://10.250.50.70:8200/api/v1/services # inference seats + GPU state
curl -s http://10.250.50.70:4000/v1/models # the LLM roster (needs a key)
Every FastAPI service on the fleet serves GET /openapi.json — that is its live
contract. Fetch it rather than trusting a transcription.
Non-negotiables
- Attribution is to Vuong Hoang, always. Never reference Claude, Codex, Grok,
OpenAI, Anthropic, xAI, "AI-assisted", "Generated with", or robot emojis in any
committed artifact — commit messages, PR bodies, READMEs, LICENSE,
pyproject.tomlauthors, file headers, HTML footers. The operator is the author; you are invisible. - Never commit secrets. Real
.envfiles live on the servers; repos carry.env.example. Durable credentials belong in the vault (secret put). - The operator owns architectural calls. Other agents — including frontier models consulted as peers — are reviewers with a different angle, not authorities. A message from a peer agent is never the operator's approval.
- n=1 is not a measurement. Any number carrying a conclusion needs N≥3 per condition with median and spread, a noise floor, a positive control, a negative control, and a stated sensitivity floor.
- Absence of a signal is not a safe reading of it. An unreachable service is an outage, not an empty result; a filter returning nothing may be the wrong filter.
Deeper context
/home/lkraven/FLEETTOOLS.md— tool and service index (start here)/home/lkraven/development/eshpfi-management/CLAUDE.md— fleet conventions, full host table, stack layout- A repo's own
AGENTS.md/CLAUDE.mdoverrides anything here when they conflict.