Files
esh-pfi-infrastructure/docs/fleettools/arbo.md
T
vh 53c3e8000e docs: add FleetTools — an agent-family-agnostic index of fleet capability
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.
2026-09-18 07:35:28 -07:00

45 lines
1.7 KiB
Markdown

# 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 (`fp8e4nv` unsupported 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 `pip` as root inside it —
that breaks the venv. Fix: `chown -R 1000:1000 venv`. Set `DISABLE_UPGRADES=true` to
pin torch.
- Render results belong in a booth (`docs/fleettools/booth.md`), not described in prose.