diff --git a/AGENTS.md b/AGENTS.md index 7a1af53..441553c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -287,12 +287,16 @@ The harness reaches the fleet through `.omp/agent/models.yml` in the operator's home — `/home/blank/.omp/agent/models.yml` on the dev box, which is where the harness runs; there is no copy on the servers. Each provider is one HOST:PORT; each model `id` is the served alias. **Official model ids are -the StarCraft unit names (2026-10-08):** `frank-archon` → -`192.168.0.235:7770`, `frank-dragoon` → `192.168.0.143:7770`, -`frank-zealot` → `192.168.0.143:7771` (was `frank-primary`, `frank-large`, -`frank-secondary` — the SERVICES, units, scripts, env files and runbooks -keep the old names; the rename is model ids in `models.yml`/`config.yml` -and the homepage model cards). `modelRoles`. +the StarCraft unit names (2026-10-08) and since 2026-10-09 they are also the +ids on the wire:** `frank-archon` → `192.168.0.235:7770` +(`FRANK_PRIMARY_SERVED_NAME`), `frank-dragoon` → `192.168.0.143:7770` +(`HALOGEN_MODEL_ID`), `frank-zealot` → `192.168.0.143:7771` (`ALIAS`). The +SERVICES, units, scripts, env files and runbooks keep the old names +(`frank-primary`, `frank-large`, `frank-secondary`); only the served alias, +the `models.yml`/`config.yml` ids, the homepage cards, the OpenWebUI grants +and the Hermes routing were renamed. Verify a rename on `/v1/models`, never +on a chat response: radiance echoes the **requested** model name, so a 200 +proves nothing about the served id (llama.cpp and halogen ignore it). Resolution rules: the default model resolves as a `defaultProvider` + `defaultModel` pair (the provider must serve the model); a subagent override diff --git a/serverAppConfigs-docs/Agent/OMP Harness.md b/serverAppConfigs-docs/Agent/OMP Harness.md index 0f7291c..a6fface 100644 --- a/serverAppConfigs-docs/Agent/OMP Harness.md +++ b/serverAppConfigs-docs/Agent/OMP Harness.md @@ -13,13 +13,17 @@ registry; single source of truth — there is no copy on the servers) and `~/.omp/agent/config.yml` (roles, compaction, global samplers). Nothing in this file is repo-managed; edits are harness-side only. -**Model ids are the StarCraft unit names (official 2026-10-08):** -`frank-archon` (dankserver :7770, radiance), `frank-dragoon` (dankclaw -:7770, flash-server), `frank-zealot` (dankclaw :7771, the 3090 -compaction hub) — formerly `frank-primary`, `frank-large`, +**Model ids are the StarCraft unit names (official 2026-10-08, on the wire +since 2026-10-09):** `frank-archon` (dankserver :7770, radiance), +`frank-dragoon` (dankclaw :7770, flash-server), `frank-zealot` (dankclaw +:7771, the 3090 compaction hub) — formerly `frank-primary`, `frank-large`, `frank-secondary`. The SERVICES keep the old names (units, scripts, env files, runbook pages); pages written in the old era name the service, -the harness names the model. +the harness names the model. The wire now matches: each endpoint's +`/v1/models` answers with the Protoss name, so `models.yml`, the OpenWebUI +picker/grants, the homepage docs and the raw API all use one id per model +(see [[OpenWebUI]] for the grant re-key and the [[frank-primary-radiance-swift15-w4dn8]] +note on radiance echoing the requested name). ## Compaction chain arithmetic (verify before ANY window change) diff --git a/serverAppConfigs-docs/Dankclaw/OpenWebUI.md b/serverAppConfigs-docs/Dankclaw/OpenWebUI.md index cb70044..6563e7c 100644 --- a/serverAppConfigs-docs/Dankclaw/OpenWebUI.md +++ b/serverAppConfigs-docs/Dankclaw/OpenWebUI.md @@ -265,7 +265,7 @@ on large sizes ⇒ check ComfyUI resources; 401 ⇒ the token is bad. - The image tracks upstream `main`; pin a digest in the quadlet unit if reproducible rollback matters more than tracking. (The old "CPU-only host" framing is stale: this APU runs the gfx1151 ROCm build — see [[ComfyUI]].) - The default admin account is created on first login; secure it immediately. - If the backend is loading (3–8 minute model load), OpenWebUI shows connection errors until the model is ready. -- The on-host LLM services (frank-large `:7770`, frank-secondary `:7771`) are reached via `host.containers.internal`, NOT the host LAN IP: the container's netavark bridge cannot hairpin to its own host's non-published ports via `192.168.0.143` (connection refused), and the bridge gateway (`10.89.3.1`) lives in the rootless netns while llama-server runs in the host netns, so it refuses too. `host.containers.internal` (169.254.1.2) resolves to the host on the bridge and works — verified end-to-end for both endpoints. The Dankserver backend (frank-medium) is a different host, reached via its LAN IP `192.168.0.235:7770`. +- The on-host LLM services (Dankclaw `:7770`, `:7771`) are reached via `host.containers.internal`, NOT the host LAN IP: the container's netavark bridge cannot hairpin to its own host's non-published ports via `192.168.0.143` (connection refused), and the bridge gateway (`10.89.3.1`) lives in the rootless netns while llama-server runs in the host netns, so it refuses too. `host.containers.internal` (169.254.1.2) resolves to the host on the bridge and works — verified end-to-end for both endpoints. The Dankserver backend is a different host, reached via its LAN IP `192.168.0.235:7770`. ## History @@ -279,6 +279,35 @@ on large sizes ⇒ check ComfyUI resources; 401 ⇒ the token is bad. - **2026-10-07 — picker narrowed to `frank-secondary` only.** Per Frank: the only model accessible in OpenWebUI is `frank-secondary`. Rebuilt the `model` table to a single `frank-secondary` row (the old rows `frank-large`/`frank-primary`/`frank-small` are deleted), set `openai.api_configs` indices 0 (frank-large) and 1 (frank-primary) to `enable: false`, and retargeted index 2's `model_ids` from the stale `frank-small` label to `frank-secondary` — llama.cpp serves by alias, so the old label addressed a model name the server does not know. Pre-change snapshot: `/home/dank/Containers/open-webui/data/webui.db.bak-20261007` (+ `-wal`/`-shm`). Verified: `/api/v1/models/list` returns exactly `["frank-secondary"]`, chat completion answers `pong` (needs `max_tokens≥1500` — the Qwen3.5 thinking block consumes a 200-token budget), and anonymous API probes are all 401 (see [API access](#api-access-auth-gated)). +- **2026-10-09 — re-keyed to the Protoss ids (wire rename).** The endpoints + began serving `frank-zealot` / `frank-dragoon` / `frank-archon`, so three + id-keyed objects had to move in the same window as the alias flip: + `model.id`+`name` (`frank-secondary` → `frank-zealot`, `params` + `{"context":{"length":200704}}` and the `meta.description` kept), + `access_grant` (`resource_type='model'`, `resource_id`, principal + `user`/`*`, permission `read`), and `openai.api_configs` per-backend + `model_ids` (index 2 = `:7771` is the enabled family backend; indices 0/1 + = `:7770` and Dankserver `:7770` stay `enable: false`). Snapshot first: + `/home/dank/Containers/open-webui/data/webui.db.bak-20261009`. Apply from + inside the container (`podman exec -i open-webui python3 -`, sqlite3; the + image has no sqlite3 binary) then `systemctl --user restart open-webui.service` + (it is a rootless quadlet) to drop the cached model list. Verify in a real + browser as the family QA account: the welcome screen selects + `frank-zealot` and answers. **A stale id fails silently** — the picker + simply lists nothing, because OpenWebUI intersects the backend's + `/v1/models` with `model_ids`. + + Law: **the model id is a foreign key in three tables.** Any future alias + change on an endpoint OpenWebUI fronts must ship with this re-key, in the + same deploy. + +- **2026-10-09 — composer is `contenteditable`, not `