Repository navigation
Description
Feature hasn't been suggested before
- I have verified this feature I'm about to request hasn't been suggested before.
Describe the enhancement you want to request
Problem
The desktop Manage models dialog (dialog.model.manage) can only toggle which models are visible in the
picker. There is no way to edit a model's display name. The dialog's entire set of i18n strings is
dialog.model.manage, dialog.model.manage.description, dialog.model.select.title,
dialog.model.search.placeholder, dialog.model.empty and the dialog.model.unpaid.* group — there is no
rename / edit-name affordance anywhere in it.
Display names can currently only be set by hand in opencode.json(c) under
providers.<providerID>.models.<modelID>.name (the documented "Aliases" section of the Models page).
This hurts most with custom OpenAI-compatible providers whose inventory is discovered from an upstream
gateway's /v1/models endpoint:
- The gateway returns opaque ids such as
qdc/dfmodel,qdc/kmodel,cbcn/hy3. In the picker these are
literally what you read, so you cannot tell what the model actually is. - The same underlying model is frequently offered by several upstreams at once (aggregating gateways,
a local gateway, and a direct provider). After setting a friendly name for one of them, it collides with the
others: e.g.qdc/dfmodelandamd-ai/DeepSeek-V4-Flashboth render asDeepSeek-V4-Flash. - Some of those duplicates are free and some are billed. Picking the wrong entry silently consumes paid quota
instead of using the free one, and nothing in the picker warns you.
Proposed solution
Add an inline rename / edit display name action to the Manage models dialog that writes name into the
matching providers.<providerID>.models.<modelID> entry of the highest-precedence config document, using the
same mechanism other per-model UI state already uses. Config changes are hot-reloaded, so no restart is needed.
Nice-to-have: show the owning provider next to each model in the dialog and in the picker, so entries that share
a display name can be told apart (#49309, #50322).
Why a plugin cannot fill this gap
Plugin UI extension points (@opencode/plugin/tui — slots, dialogs, routes, keymaps) exist only for the terminal
TUI. The desktop app bundle contains no plugin UI mounting points, and the config-write API
(PATCH /api/experimental/config) accepts only the shell field, so plugins cannot set
providers.*.models.*.name through the API either. This has to be built into the app.
Related
- [FEATURE]: Support editing already configured model providers #20598 [FEATURE]: Support editing already configured model providers
- opencode: configured providers appear disconnected in model dialogs #49309 / tui: /models picker hides provider names for config-declared providers #50322 configured custom providers are indistinguishable in the model picker
Environment
- OpenCode 2.0.32 desktop, Windows 11
- Providers are custom OpenAI-compatible gateways declared in
opencode.jsoncwithsettings.modelsDiscovery
Activity
opencode-agent commentedon Oct 17, 2026
Thanks for the detailed request! You'd like a rename / edit-display-name action in the desktop Manage models dialog. It would write
nameintoproviders.<providerID>.models.<modelID>in your config, so discovered gateway models with opaque IDs, or the same model offered by several providers, can be told apart without editingopencode.jsoncby hand.You're right that a plugin can't do this today: the desktop app has no plugin UI mount points yet, and the config patch API doesn't accept per-model fields. Until something lands, the
namealias inopencode.jsoncis the workaround. Maintainers will consider the request.Related issues and PRs:
Provider / Modelin the desktop composer