OpenWebUI model rows re-keyed; default model is frank-archon
Two asks: refresh the picker descriptions, and make frank-archon the model a
member lands on. Both are live webui.db state (never repo state), so this PR is
the documentation half plus the law that keeps the live half honest.
Applied on the live service (2026-11-04)
Descriptions rewritten from the env files, which are the authority: frank-dragoon said halogen 0.16.2 (live 0.18.20); frank-zealot said build 10777 / 3×262,144 / "MTP off" (live build 12118 / 3 × 200,704 / SPEC_TYPE=draft-mtp armed).
params.context.length had been swapped between the two rows — the real
defect, not cosmetics. frank-zealot advertised 262,144 while llama.cpp
refuses any prompt past its 200,704 slot, so OpenWebUI would let a long zealot
chat ride the endpoint's 400 instead of compacting; frank-dragoon advertised
200,704 against a 262,144 ceiling and gave up 61k tokens of window for nothing.
Now 200,000 / 262,144 / 200,704, matching FRANK_ARCHON_MAX_MODEL_LEN, HALOGEN_CTX, and CTX_SIZE/PARALLEL.
ui.default_models = "frank-archon" (a comma-separated string in the config
table). Verified in a clean managed browser with localStorage empty: Selected model: frank-archon, and the picker renders all three new
descriptions with no trace of 0.16.2 / 10777.
Written through the API, not raw sqlite: POST /api/v1/configs/import for the
config key and POST /api/v1/models/model/update with the full ModelForm
(meta/params replace rather than merge, so the rows were read, patched and
sent back whole — meta.capabilities survived intact).
Docs
Dankclaw/OpenWebUI.md gains Default model, descriptions, and the admin API
door: the ui.default_models resolution rule (the browser's stored pick
beats it), the two admin doors, and three traps measured on the way in — get_human_user answers 403 "A human session is required." to an API key
on /api/v1/auths/ (not a dead key: the mutation routes take the key), and /api/v1/models/ with a trailing slash falls through to the SPA and answers 200 text/html.
History entry for the drift, ending in the law: a model swap is not finished
until that endpoint's model row is re-keyed too — no deployer step touches webui.db.
AGENTS.mdModel Swaps procedure gains that final step, which is where an
agent actually reads it at swap time.
Not touched
shared/homepage/services.json describes frank-dragoon as "200k-token
conversations, two at a time" — understated against the 262,144 ceiling (the
other two cards match their endpoints). Left alone: the homepage is a separate
surface with its own homepage_config.bats expectations. Say the word and I will
re-cut that card.
# OpenWebUI model rows re-keyed; default model is `frank-archon`
Two asks: refresh the picker descriptions, and make `frank-archon` the model a
member lands on. Both are live `webui.db` state (never repo state), so this PR is
the documentation half plus the law that keeps the live half honest.
## Applied on the live service (2026-11-04)
- **Descriptions** rewritten from the env files, which are the authority:
`frank-dragoon` said halogen **0.16.2** (live **0.18.20**); `frank-zealot` said
**build 10777 / 3×262,144 / "MTP off"** (live **build 12118 / 3 × 200,704 /
`SPEC_TYPE=draft-mtp` armed**).
- **`params.context.length` had been swapped** between the two rows — the real
defect, not cosmetics. `frank-zealot` advertised 262,144 while llama.cpp
refuses any prompt past its 200,704 slot, so OpenWebUI would let a long zealot
chat ride the endpoint's 400 instead of compacting; `frank-dragoon` advertised
200,704 against a 262,144 ceiling and gave up 61k tokens of window for nothing.
Now 200,000 / 262,144 / 200,704, matching `FRANK_ARCHON_MAX_MODEL_LEN`,
`HALOGEN_CTX`, and `CTX_SIZE/PARALLEL`.
- **`ui.default_models = "frank-archon"`** (a comma-separated string in the config
table). Verified in a clean managed browser with `localStorage` empty:
`Selected model: frank-archon`, and the picker renders all three new
descriptions with no trace of `0.16.2` / `10777`.
Written through the API, not raw sqlite: `POST /api/v1/configs/import` for the
config key and `POST /api/v1/models/model/update` with the full `ModelForm`
(`meta`/`params` replace rather than merge, so the rows were read, patched and
sent back whole — `meta.capabilities` survived intact).
## Docs
- `Dankclaw/OpenWebUI.md` gains **Default model, descriptions, and the admin API
door**: the `ui.default_models` resolution rule (the browser's stored pick
beats it), the two admin doors, and three traps measured on the way in —
`get_human_user` answers **403 "A human session is required."** to an API key
on `/api/v1/auths/` (not a dead key: the mutation routes take the key), and
`/api/v1/models/` with a trailing slash falls through to the SPA and answers
`200 text/html`.
- History entry for the drift, ending in the law: **a model swap is not finished
until that endpoint's `model` row is re-keyed too — no deployer step touches
`webui.db`.**
- `AGENTS.md` *Model Swaps* procedure gains that final step, which is where an
agent actually reads it at swap time.
## Not touched
`shared/homepage/services.json` describes `frank-dragoon` as "200k-token
conversations, two at a time" — understated against the 262,144 ceiling (the
other two cards match their endpoints). Left alone: the homepage is a separate
surface with its own `homepage_config.bats` expectations. Say the word and I will
re-cut that card.
---
cwd: /home/blank/.omp/wt/wt-20261104-104444-6d1fc1f · session: 01a1a7eb-c584-72d3-9d7e-c02d981cd662
The picker's decoration rows carried two payload-swap drifts: frank-dragoon
still named halogen 0.16.2 (live 0.18.20) and frank-zealot build 10777 /
3x262,144 / MTP off (live build 12118 / 3x200,704 / draft-mtp armed). Worse,
their params.context.length values had swapped, so OpenWebUI advertised more
window than the zealot slot grants and gave up 61k tokens on dragoon. Live
rows re-keyed through the admin API and ui.default_models set to
frank-archon; the swap procedure in AGENTS.md now names the re-key step.
dank
merged commit fee8121d47 into main2026-11-04 13:08:52 -08:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
OpenWebUI model rows re-keyed; default model is
frank-archonTwo asks: refresh the picker descriptions, and make
frank-archonthe model amember lands on. Both are live
webui.dbstate (never repo state), so this PR isthe documentation half plus the law that keeps the live half honest.
Applied on the live service (2026-11-04)
frank-dragoonsaid halogen 0.16.2 (live 0.18.20);frank-zealotsaidbuild 10777 / 3×262,144 / "MTP off" (live build 12118 / 3 × 200,704 /
SPEC_TYPE=draft-mtparmed).params.context.lengthhad been swapped between the two rows — the realdefect, not cosmetics.
frank-zealotadvertised 262,144 while llama.cpprefuses any prompt past its 200,704 slot, so OpenWebUI would let a long zealot
chat ride the endpoint's 400 instead of compacting;
frank-dragoonadvertised200,704 against a 262,144 ceiling and gave up 61k tokens of window for nothing.
Now 200,000 / 262,144 / 200,704, matching
FRANK_ARCHON_MAX_MODEL_LEN,HALOGEN_CTX, andCTX_SIZE/PARALLEL.ui.default_models = "frank-archon"(a comma-separated string in the configtable). Verified in a clean managed browser with
localStorageempty:Selected model: frank-archon, and the picker renders all three newdescriptions with no trace of
0.16.2/10777.Written through the API, not raw sqlite:
POST /api/v1/configs/importfor theconfig key and
POST /api/v1/models/model/updatewith the fullModelForm(
meta/paramsreplace rather than merge, so the rows were read, patched andsent back whole —
meta.capabilitiessurvived intact).Docs
Dankclaw/OpenWebUI.mdgains Default model, descriptions, and the admin APIdoor: the
ui.default_modelsresolution rule (the browser's stored pickbeats it), the two admin doors, and three traps measured on the way in —
get_human_useranswers 403 "A human session is required." to an API keyon
/api/v1/auths/(not a dead key: the mutation routes take the key), and/api/v1/models/with a trailing slash falls through to the SPA and answers200 text/html.until that endpoint's
modelrow is re-keyed too — no deployer step toucheswebui.db.AGENTS.mdModel Swaps procedure gains that final step, which is where anagent actually reads it at swap time.
Not touched
shared/homepage/services.jsondescribesfrank-dragoonas "200k-tokenconversations, two at a time" — understated against the 262,144 ceiling (the
other two cards match their endpoints). Left alone: the homepage is a separate
surface with its own
homepage_config.batsexpectations. Say the word and I willre-cut that card.
cwd: /home/blank/.omp/wt/wt-20261104-104444-6d1fc1f · session: 01a1a7eb-c584-72d3-9d7e-c02d981cd662