From 54bb0202c2e7cb5602d76b87b3c99ff3b05f74f2 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 21 Oct 2026 02:22:37 -0700 Subject: [PATCH] docs(system): the fleet re-read from the boxes, and the math that no longer belongs here MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three pages described the fleet; two of them still described the pre-September arrangement. Re-read live on 2026-10-21 (`/v1/models`, `systemctl`, `lspci`, `nproc`, `resolvectl`): - `system/network.md` called Dankclaw the "large inference model" box and Dankserver the "small" one — that is the topology from before the RTX 3090 moved in September. The served ids today are `frank-archon` on Dankserver:7770 (the main model) and `frank-dragoon` (:7770) + `frank-zealot` (:7771) on Dankclaw. The gateway and the DNS pin were re-read too. - `system/dankserver.md` claimed `frank-medium` is *masked*: the unit file does not exist (`is-enabled` answers `not-found`), which is a different fact with a different remedy. And it claimed 8C/16T: this 7700X exposes **8 threads** (`nproc` = 8), so anything sized for 16 is sized for a machine that is not this one. - `system/dankclaw.md` transcribed the engine's slot/KV/context math — `2×262,144 slots over one 524,288 pool, unquantized f16 K+V, MTP off` — while the live unit says `3x200704 slots over one 602112 pool, f16 K + q8_0 V, MTP armed`, and dragoon's ctx had moved too. That math belongs to the serverAppConfigs runbook the page already names: the unit's `ExecStart` is a wrapper script, so any copy here rots on the next engine change. The page now keeps the contract — id, unit, port, engine family, which GPU, and how to prove it — and disowns the numbers, with the reason stated so the next agent does not re-transcribe them. Also recorded, because it is how this audit nearly missed a stopped service: `curl :7770/v1/models` answered normally while `frank-dragoon.service` sat `inactive` with `Result=exit-code` — the container is running outside systemd. A serving port is not a healthy unit. (Flagged for Frank separately; no production unit was touched.) Refs #64 --- omp-docs/system/dankclaw.md | 26 +++++++++++++++++++------- omp-docs/system/dankserver.md | 10 ++++++---- omp-docs/system/network.md | 13 +++++++------ 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/omp-docs/system/dankclaw.md b/omp-docs/system/dankclaw.md index 64b2c6f..22d2cad 100644 --- a/omp-docs/system/dankclaw.md +++ b/omp-docs/system/dankclaw.md @@ -11,7 +11,7 @@ tags: generated: by: chief-designer/agent at: 2026-08-26T00:00:00Z -verified: 2026-10-19 +verified: 2026-10-21 --- # Dankclaw @@ -20,10 +20,12 @@ Strix Halo mini-PC carrying the fleet's secondary models and the bulk of the service stack. Two GPU-class devices: the Radeon 8060S iGPU with 119 GiB unified memory, and the RTX 3090 moved over from Dankserver in September 2026. -## Service Stack (live census, 32 containers, 2026-10-19) +## Service Stack -User-scope Podman Quadlet units (`~/.config/containers/systemd/`) unless -noted. Full names; detail pages where they exist. +Re-derive the census rather than trusting this table — the stack changes weekly: +`podman ps --format '{{.Names}} {{.Ports}}'` (user) plus the root units +(`systemctl list-units --all | grep -E 'gitea|caddy|frank'`). User-scope Podman Quadlet units +(`~/.config/containers/systemd/`) unless noted. Full names; detail pages where they exist. | Group | Containers | |-------|-----------| @@ -47,8 +49,18 @@ noted. Full names; detail pages where they exist. | Model ID | Unit | Endpoint | Engine / weights | |----------|------|----------|------------------| -| `frank-dragoon` | `frank-dragoon.service` (root) | `:7770` (container `frank-dragoon-halogen`, 7770→8731) | halogen-flash-server container (`ghcr.io/peonist-ai/halogen-flash-server`, digest-pinned) — Quat3rnion NATIVE v2 abliterated Qwen3.8-Flash-Next, MTP spec decode, 2 slots over ONE **401,408**-position pool at ctx **200,704**, vision ON, **Strix Halo iGPU** (unified memory) | -| `frank-zealot` | `frank-zealot.service` (root) | `:7771` | llama.cpp (PrismML fork, build 10777) — Ternary-Bonsai-**2-9B** PQ2_0-MTP GGUF (qwen35 hybrid), 2×262,144 slots over one 524,288 pool, **unquantized f16 K+V**, MTP off, mmproj Q8_0 vision, **RTX 3090** | +| `frank-dragoon` | `frank-dragoon.service` (root) | `:7770` (container `frank-dragoon-halogen`, 7770→8731) | halogen-flash-server container (`ghcr.io/peonist-ai/halogen-flash-server`, digest-pinned) — Quat3rnion NATIVE v2 abliterated Qwen3.8-Flash-Next, MTP spec decode, vision ON, on the **Strix Halo iGPU** (unified memory) | +| `frank-zealot` | `frank-zealot.service` (root) | `:7771` (container `frank-zealot`) | llama.cpp, PrismML fork — Ternary-Bonsai-2-9B PQ2_0-MTP GGUF (qwen35 hybrid) + refusal adapter, mmproj vision, on the **RTX 3090**; flags come from `~/serverAppConfigs/scripts/frank-zealot.env` + `serve-frank-zealot.sh` | + +Slot counts, KV-cache types and context math are deliberately **not** transcribed here: the +unit `ExecStart` is a wrapper script and the numbers move with every engine change, so they +belong to the serverAppConfigs runbooks named below. What an agent needs from this page is the +contract — id, unit, port, engine family, which GPU — and the two commands that prove it live. + +**A serving port is not a healthy unit.** On 2026-10-21 `curl :7770/v1/models` answered +normally while `frank-dragoon.service` sat `inactive` with `Result=exit-code`: the container had +been started outside systemd. Health is `systemctl is-active frank-dragoon` (root), not the +curl. Harness-side context windows (`agent/models.yml`): dragoon 155,648, zealot 200,704 per slot. The models.yml display labels "(dankclaw-gpu)" / @@ -62,7 +74,7 @@ curl http://192.168.0.143:7770/v1/models # dragoon curl http://192.168.0.143:7771/v1/models # zealot ``` -## Hardware (verified live 2026-10-18) +## Hardware (verified live 2026-10-21) | Property | Value | |----------|-------| diff --git a/omp-docs/system/dankserver.md b/omp-docs/system/dankserver.md index a96588c..438087e 100644 --- a/omp-docs/system/dankserver.md +++ b/omp-docs/system/dankserver.md @@ -9,7 +9,7 @@ tags: - server generated: by: chief-designer/agent -verified: 2026-10-18 +verified: 2026-10-21 status: stable --- @@ -41,7 +41,9 @@ Dankclaw. | **Engine** | radiance, tensor-parallel 2 across both R9700s | | **Context Window** | 200,000 tokens (harness `models.yml`; served pool may differ — see runbook) | -`frank-medium` (former dual-GPU mid tier) is masked and retired. +`frank-medium` (the former dual-GPU mid tier) no longer exists on this box — +`systemctl list-unit-files | grep frank-` returns only `frank-archon.service`. It was retired, +not masked: on 2026-10-21 `systemctl is-enabled frank-medium` answers `not-found`. ## Usage @@ -59,11 +61,11 @@ curl http://192.168.0.235:7770/v1/chat/completions \ -d '{"model":"frank-archon","messages":[{"role":"user","content":"Hello"}],"max_tokens":32}' ``` -## Hardware (verified live 2026-10-18) +## Hardware (verified live 2026-10-21) | Property | Value | |----------|-------| -| **CPU** | AMD Ryzen 7 7700X (8C/16T, Raphael iGPU on board) | +| **CPU** | AMD Ryzen 7 7700X — 8 cores, **8 threads exposed** (`nproc` = 8; SMT is not enabled, so do not plan for 16) | | **GPU** | 2× AMD Radeon AI PRO R9700 (Navi 48, 32 GiB each) | | **RAM** | 246 GiB | | **Swap** | effectively none (~0.1 GiB) — the 64 GiB swapfile is on Dankclaw, not here | diff --git a/omp-docs/system/network.md b/omp-docs/system/network.md index 6f4ca87..90df44f 100644 --- a/omp-docs/system/network.md +++ b/omp-docs/system/network.md @@ -8,7 +8,7 @@ tags: - systemd-resolved - workstation - unverified -verified: 2026-08-28 +verified: 2026-10-21 --- # Network @@ -23,11 +23,12 @@ bites every Linux workstation with both Wi-Fi and Ethernet plugged in. | Host | IP | Role | |------|----|------| | Router | 192.168.0.1 | DHCP; hands out the DNS server to clients | -| Dankclaw | 192.168.0.143 | Pi-hole DNS, Caddy edge, Gitea, large inference model | -| Dankserver | 192.168.0.235 | small inference model | +| Dankclaw | 192.168.0.143 | Pi-hole DNS, Caddy edge, Gitea, service stack, secondary inference (`frank-dragoon` :7770, `frank-zealot` :7771) | +| Dankserver | 192.168.0.235 | Main inference — `frank-archon` on 2× R9700 (TP=2), :7770 | | Clients | DHCP from 192.168.0.0/24 | workstations, phones | -The router hands clients `192.168.0.143` as their DNS server; Pi-hole answers +The router (default gateway `192.168.0.1`, both re-read 2026-10-21) hands clients +`192.168.0.143` as their DNS server; Pi-hole answers every `*.franksdank.cloud` name with the LAN address of the box that serves it. Names that resolve to the public WAN address time out on the LAN because the G36 has no NAT loopback — a symptom that looks like "the network is @@ -88,8 +89,8 @@ A single successful `dig` proves nothing on a flapping resolver. ## Servers -- [Dankserver](/system/dankserver.md) — small inference model -- [Dankclaw](/system/dankclaw.md) — large inference model, DNS, proxy +- [Dankserver](/system/dankserver.md) — main model, `frank-archon` +- [Dankclaw](/system/dankclaw.md) — secondary models, DNS, edge, forge ## See Also