From bfe4d185bd137c191c2acee9b424952f1f9b84b1 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 21 Oct 2026 16:48:32 -0700 Subject: [PATCH] docs(vault): OpenWebUI picker opened to all three models for every account (2026-10-21) Per Frank, frank-archon is public alongside dragoon/zealot: three-leg DB trio (conn enable, model row ctx 200000, access_grant principal='*'), verified as role=user. Token-mint traps recorded (cwd, PID-1 secret). --- serverAppConfigs-docs/Dankclaw/OpenWebUI.md | 36 +++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/serverAppConfigs-docs/Dankclaw/OpenWebUI.md b/serverAppConfigs-docs/Dankclaw/OpenWebUI.md index a0db298..f60ef1e 100644 --- a/serverAppConfigs-docs/Dankclaw/OpenWebUI.md +++ b/serverAppConfigs-docs/Dankclaw/OpenWebUI.md @@ -34,15 +34,16 @@ https://github.com/open-webui/open-webui The picker is built from the `model` table in `webui.db` (one row per model) plus the `model_ids` of each **enabled** OpenAI connection, NOT from live connection discovery — so the picker shows exactly what is seeded there. -As of 2026-10-07 the picker exposes **exactly one model: `frank-zealot`** *(unverified -2026-10-18: `webui.db` is the authority; the fleet itself serves all three ids -`frank-dragoon`/`frank-zealot`/`frank-archon`, per the cards in -`shared/homepage/services.json`)*. +Since 2026-10-21 the picker exposes **all three fleet models to every +account**: `frank-dragoon`, `frank-archon`, `frank-zealot` (per Frank: open +`frank-archon` to everyone; the other two were already public). Proven with +a `role=user` token: `/api/models` lists all three ids and a chat turn to +`frank-archon` answers end-to-end. -| Connection (`openai.api_configs` idx) | URL as recorded 2026-10-09 | Enabled | `model_ids` | Endpoint page | +| Connection (`openai.api_configs` idx) | `openai.api_base_urls` (live 2026-10-21) | Enabled | `model_ids` | Endpoint page | |---|---|---|---|---| -| 0 | `http://host.containers.internal:7770/v1` | no (2026-10-07) | `frank-dragoon` | [[frank-dragoon]] | -| 1 | `http://192.168.0.235:7770/v1` | no (2026-10-07) | `frank-archon` | [[frank-archon]] | +| 0 | `http://host.containers.internal:7770/v1` | yes | `frank-dragoon` | [[frank-dragoon]] | +| 1 | `http://192.168.0.235:7770/v1` | yes | `frank-archon` | [[frank-archon]] | | 2 | `http://host.containers.internal:7771/v1` | yes | `frank-zealot` | [[frank-zealot]] | The URLs in the first column are the DB's recorded values and predate the 2026-08-22 @@ -50,9 +51,10 @@ bridge move; on this network they are wrong — see the reachability gotcha belo is the corrected law. The picker row for `frank-zealot` was re-keyed on 2026-10-18 after that day's payload swap (see [[frank-zealot]] for what was deployed and when). -The `model` table carries exactly two decoration rows, `frank-zealot` and -`frank-dragoon`. Both the context length and the description live **inside -JSON columns** — `params` holds `{"context": {"length": …}}` and `meta` holds +The `model` table carries three decoration rows — `frank-zealot`, +`frank-dragoon`, `frank-archon` (200,000 context, added 2026-10-21). +Both the context length and the description live **inside JSON columns** — +`params` holds `{"context": {"length": …}}` and `meta` holds `{"description": …}`; there is no `context_length` or `description` column, so `sqlite3` one-liners against those names fail. `params.context.length` is a copy of the endpoint's per-slot window, so the authoritative number lives on the @@ -380,6 +382,20 @@ neither. name: /selected model/i })`) and the welcome text "How can I help you today?"; that snapshot is also the cheapest proof the picker is populated. +- **2026-10-21 — picker opened to all three models, for everyone.** Per + Frank: `frank-archon` accessible to everyone. Three-leg repair on + `webui.db` (snapshot `webui.db.bak-20261021` first): connection idx 1 + `enable: true`, a `model` row `frank-archon` (params + `{"context":{"length":200000}}`, meta description from the endpoint card), + and an `access_grant` row `(resource_type='model', resource_id='frank-archon', + principal_id='*', 'read')` — `principal_id='*'` is the public grant, not a + role row. Verified as a plain `role=user` token: `/api/models` lists all + three ids, chat to `frank-archon` answers. Token-mint gotchas: the backend + package imports only with cwd `/app/backend`, and `WEBUI_SECRET_KEY` must + come from **PID 1's environ** (`podman exec` sessions do not inherit the + app process env; the `.webui_secret_key` file happens to equal it — use it + explicitly, `podman exec -e`). + ## See Also - [[Dankclaw Stack]]