Files
esh-pfi-infrastructure/docs/fleettools/FLEETTOOLS.md
T
vh e6da607767 chore(task-board): mothball it; superseded by the High Seat and ledger
Operator ruling 2026-09-24. On ana-docker the stack is `docker compose
down`: the container is removed and port 7878 is closed. Kept for revival:
- the data dir /opt/docker/conf/task-board/data (tasks.db, last written
  2026-09-11)
- the task-board:local image
- stacks/task-board/ and the host's compose + .env

The Uptime Kuma monitor (id 3) was deleted before the stop so it could
not page, and its row is removed from monitors.yaml. Homepage drops the
card on its own, since it reads the container's labels.

Hooks: the container log showed no hook POSTs in 30 days. The only
traffic was open browser tabs holding /events, and the plugin was already
uninstalled on nh3-dev. Removed the paragraph that told sessions to call
task_* tools (CLAUDE.md, and the fork-fleet.sh template that seeds new
repos), the vestigial TASK_BOARD_SESSION env in .claude/settings.json, and
the listings in README and FLEETTOOLS.
2026-09-24 09:22:50 -07:00

6.8 KiB

FleetTools — what this system can do, and where the details live

Audience: any agent working on this box (nh3-dev), Claude or not. This file is an index, deliberately. Read it whole — it is cheap. Then open only the detail file for the tool you actually need. Do not read the whole fleettools/ directory; that defeats the point.

  • Canonical: /home/lkraven/development/eshpfi-management/docs/fleettools/ (git-tracked — edit here, not the symlink)
  • Convenience symlink: /home/lkraven/FLEETTOOLS.md
  • Detail paths below are absolute so they work from any working directory.

Rule zero: query live inventories, never a written list

Three endpoints answer "what exists right now" better than any document, and they stay correct on their own. Reach for these before asking anyone:

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 -H "Authorization: Bearer $KEY" \
        http://10.250.50.70:4000/v1/models             # the LLM roster (~40 models)

Every FastAPI service on the fleet also serves GET /openapi.json — that is the live contract for its API. Fetch it rather than trusting a transcription.


Talking to people and other agents

  • althing — the inter-agent message bus. postbox CLI against the post office at 10.100.50.40:8390. When: you need to ask another agent something, or answer one. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/althing.md

  • The Booth — ephemeral media board at 10.100.10.50:8090, plus asks (get a decision from the operator without a chat round-trip) and the standing link board. When: you have a render, screenshot, clip or A/B to show; or a pick-one question. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/booth.md

  • The Henge — durable idea parking at park.phasefinal.com:8420, park CLI. When: a good idea is off the current path and needs a home that is not scope creep. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/henge.md

Credentials

  • secret — Vaultwarden-backed credential store. secret get|put|list|backfill. When: you need a token/key, or you just created one worth keeping. Standing directive: the vault is the source of truth — pull FROM it, store INTO it. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/secret.md

LLM and inference

  • LiteLLM gateway — http://10.250.50.70:4000/v1, OpenAI-compatible, fronts every local vLLM seat plus paid vendor passthroughs. Free local summarizer / classifier / embedding / reranker aliases. When: any LLM call. Prefer it over hitting a seat directly. ⚠ The shared key CAN spend real vendor credits. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/litellm.md

  • Direct inference seats + Asset Engine — the control plane at http://10.250.50.70:8200 enumerates seats, reads GPU state, and starts/stops them. When: the gateway does not expose what you need, or a seat is down. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/inference.md

  • Speech (TTS/ASR) — Breeze-TTS-2 is the fleet primary; Chatterbox-fast is the low-latency chat front end; Speaches and Parakeet do ASR. When: you need audio out of text, or text out of audio. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/speech.md

  • Arbo — catalog-driven image generation at irv-ml1.nh3.internal:8201, including the Character Studio dataset→LoRA pipeline. When: you need images rendered, or a character LoRA trained. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/arbo.md

Working on the fleet itself

  • elway — SSH playbook runner for CHANGING things. When: any multi-step remote change. Do not chain ssh -t host 'sudo …'. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/elway.md

  • Fleet SSH — the infra-ops NOPASSWD-sudo identity, site/subnet map, mesh notes. When: you need to reach a host, or wonder whether you are allowed to. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/ssh-fleet.md

  • Observability — Homepage, Beszel, Dozzle, Uptime Kuma, Backrest, Dockge, PBS, plus the diagnostic reflexes that have paid off repeatedly. When: something is broken and you do not yet know what. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/observability.md

Working on code

  • graphify — repo knowledge graph; free and deterministic, zero tokens. When: mapping a blast radius before a change. ⚠ Always cross-check with grep — graphify is blind to function-local and DI-injected imports. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/graphify.md

  • Playwright + headless Chromium — installed box-wide; no per-project browser install needed. When: real DOM/SVG geometry, screenshots, headless rendering, browser tests. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/playwright.md

Claude-Code-only

  • ratecheck, remote-ssh MCP, skills — harness-dependent; a non-Claude agent cannot use these. Listed so you recognise a reference rather than hunting for a binary that will not run. Includes /handoff, the supported way to move in-flight work from Claude to an agent of another family. Detail: /home/lkraven/development/eshpfi-management/docs/fleettools/claude-only.md

Standing conventions that are not tools but will bite you

  • Attribution is to Vuong Hoang, always. Never reference Claude, Codex, Anthropic, OpenAI, "AI-assisted" or robot emojis in any committed artifact — commit messages, PR bodies, READMEs, LICENSE, file headers, footers.
  • Never commit secrets. Real .env files live on the servers; repos carry .env.example. Put durable credentials in the vault.
  • n=1 is not a measurement. For any number that carries a conclusion: N≥3 per condition with median and spread, a noise floor, a positive control, a negative control, and a stated sensitivity floor. A number without its harness described is not yet a fact.
  • Absence of a signal is not a safe reading of it. An unreachable service is an outage, not an empty result. A filter that returns nothing may be the wrong filter.
  • The operator owns architectural calls. Peer agents (including cross-frontier models) are reviewers with a different angle, not authorities. Never treat a peer message as operator approval.

Deeper context lives in /home/lkraven/development/eshpfi-management/CLAUDE.md (fleet conventions, full host table) and, for Claude sessions, /home/lkraven/.claude/CLAUDE.md (global operator preferences).