Replies: 2 comments 2 replies
|
Screenshots, as promised. Built against Docked panel — local model selected
Per-row hover over the open picker — the tip follows the row under the cursor, so a model can be judged before selecting it rather than after.
The case the local/cloud badge exists for.
|
|
The fail-loud instinct here is the right one, and it is in tension with the "cheap 80%" you would upstream, worth resolving before it ships because the two halves disagree using your own example. You open with the Grok model on The resolution keeps your principle intact: inference can only ever assert
That is still the cheap 80% (you derive |



Uh oh!
There was an error while loading. Please reload this page.
The problem
The model picker lists every model by name and endpoint, which answers "what can I pick?" but not the two questions that actually decide the pick:
The second matters more than it looks. Locally-served models, cloud-hosted models behind a
:cloud-style tag, and OpenAI-compatible proxies all appear in the same flat list, styled identically. On my own setup a Grok model is reached through a loopback URL (127.0.0.1:8645) that forwards to a third party — so neither "does the name say cloud" nor "is the base URL local" is a reliable tell, and nothing at the point of selection distinguishes "this stays on my GPU" from "this is a third-party API."For anyone self-hosting because of unreleased product work, client data, or regulated content, that distinction is the entire reason they self-host — and it's currently invisible at exactly the moment it's being decided. Users can memorise which names are which; that's a burden the interface could carry instead, and memory fails quietly.
Suggested shape
Two surfaces sharing one content source:
The design point worth arguing: capability and location are independent axes
I built this locally and got it wrong the first time by making
clouda capability tier. That forces a false choice — a cloud model is frequently both the most capable option available and the one that must not receive confidential input. Collapsing them hides the actual tradeoff.Two fields instead:
default/capable/specialist/unbenchmarkedlocal/cloudrendered as two badges. A model reading
MORE CAPABLE+CLOUDsimultaneously is the honest description.Unknown location must fail loud. No recorded location should render an amber
WHERE?("treat as if it leaves your PC until confirmed"), never defaulting toLOCAL. A confidentiality indicator that guesses is worse than none, because it gets trusted.The cheap 80% — probably the only part worth upstreaming
Most of the value needs no user input at all: derive location automatically. Endpoint URL, provider type and tag suffix are already known to the picker — loopback and known-local backends are
local, everything else iscloud. A single badge from data you already have.Optional extras if there's appetite: shipped capability defaults per model family (user-overridable), and populating throughput from measurements Odysseus already records, so users see their tok/s rather than published benchmarks that don't reflect their hardware.
cookbook-hwfit.js("What Fits?") already reasons about model size against hardware — this is arguably the same knowledge surfaced at selection time rather than serve time.Implementation notes
Running locally against
dev@ 25c9e73, deliberately built to avoid touching upstream files:modelPicker.js— the panel observes#model-picker-labelviaMutationObserver, and row tips are delegated ondocumentmatching.model-switch-item/.mp-model-name. If those identifiers change, the feature goes quiet rather than breaking the picker.<script type="module">instatic/index.htmlis the only upstream-file edit.position: fixed,pointer-events: none, flip side when short of room, clamp vertically.Happy to open a PR if there's interest — or if it's better solved inside the picker itself, treat this as a design note. Mainly raising it to gauge whether the local/cloud indicator specifically is something maintainers would want.
(Related but distinct: #3151 proposes separate pickers for Chat vs Agent mode.)
All reactions