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.
136 lines
6.8 KiB
Markdown
136 lines
6.8 KiB
Markdown
# 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:**
|
|
|
|
```sh
|
|
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).*
|