Every agent on nh3-dev — Claude, Codex, Grok, Aider — needs the same answers: what runs here, how do I call it, what will bite me. Until now that lived in ~/.claude/CLAUDE.md, which only Claude sessions load, and it was interleaved with operator preferences that other families have no use for. Two-tier by design, matching the persistent-memory split: FLEETTOOLS.md is a 135-line index an agent reads whole, and each entry links to a detail file it opens only when it actually needs that tool. Reading the index costs about a fifth of reading the tree. Detail paths are absolute so they resolve from any working directory, since a non-Claude agent will cat the path rather than follow a markdown link. ~/FLEETTOOLS.md symlinks to the index for discovery. Rule zero is that live inventories get queried, not transcribed: 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 and this repo already has a standing rule against second copies that drift. Contents verified against the running fleet rather than copied from existing docs: binaries resolved on PATH, seven endpoints probed live, the LiteLLM roster counted at 40 models where the old note said ~30. No credentials are included; the vault and its CLI are pointed at instead.
1.7 KiB
1.7 KiB
Arbo — catalog-driven image generation engine
Endpoint: http://irv-ml1.nh3.internal:8201 (title ImageGen Engine, v1.16.2)
Bare ComfyUI underneath: http://irv-ml1.nh3.internal:8188
Repo: gitea vh/arbo · deploy is deploy-engine.sh + a gitea Actions webhook on push.
Runs on CPU on irv-ml1 and dispatches to ComfyUI. GET /openapi.json is the live
contract — the paths below are the map, not the spec.
Jobs
POST /workflows/{workflow_id}/run -> 202, a job id
GET /jobs GET /jobs/{job_id}
POST /jobs/{job_id}/cancel
GET /artifacts/{job_id}/{index} # the rendered output
Character Studio — dataset → LoRA pipeline
POST,GET /character-studio
POST /character-studio/{job_id}/curate | /reframe | /recaption
POST /character-studio/{job_id}/dataset/upload | /dataset/from-gallery
GET /character-studio/trains GET /character-studio/trained
DELETE /character-studio/trained/{lora_id}
POST /character-studio/trained/{lora_id}/identity
Also
POST /typography/compose · POST /ideogram/gallery
Traps
- A new Python dependency needs
docker exec arbo pip install --user <pkg>— the deploy script does not rebuild the image. - Triton backend is a HARD NO on the Ampere ComfyUI seat. It crashes every render
on the A6000 (
fp8e4nvunsupported on sm_86); a cu130 bump does not fix it. Deferred until an Ada/Blackwell card is in that slot. - The mmartial ComfyUI image crash-loops if anything runs
pipas root inside it — that breaks the venv. Fix:chown -R 1000:1000 venv. SetDISABLE_UPGRADES=trueto pin torch. - Render results belong in a booth (
docs/fleettools/booth.md), not described in prose.