Repository navigation
Closed as not planned
Closed as not planned
Copy link
Description
Is your feature request related to a problem? Please describe.
Managing many models across multiple providers is cumbersome in the current UI:
- Models are sorted alphabetically within hardcoded provider groups — users cannot reorder to prioritize frequently used models
- The model name is read-only, taken directly from the provider catalog — users cannot assign friendly aliases (e.g. "My Cheap Fast Model" for a long API ID)
- There is no way to set a default model for new conversations; OpenCode falls back to last-used or an internal priority, which is unpredictable
Describe the solution you'd like
A redesigned model management screen (both dialog-manage-models and settings-models) with four new capabilities:
1. Drag-and-drop reordering
- Allow dragging providers and individual models to set a custom display order
- A toggle in settings to switch between "automatic sort" (current behavior) and "custom order" (user-defined)
- Custom order persisted to
opencode.jsonas adisplayOrderarray (or equivalent)
2. Inline alias/rename
- Each model shows an editable name field (pencil icon or inline input)
- Changing the name writes the
namefield to the model's config entry inopencode.json - The alias is used everywhere: model picker, chat header, system prompt (complementing Use config alias/name instead of API model ID in system prompt environment block #36164)
3. Favorite / pin models
- Star/pin icon on models for quick access at the top of the list
- Pinned models appear in a separate "Pinned" section regardless of provider grouping
4. Default model for new conversations
- A "Set as default" button / radio indicator per model
- The default is written to the
modelfield inopencode.json - New conversations pre-select this model instead of falling back to last-used
// Example resulting config
{
"model": "anthropic/my-sonnet", // default model
"provider": {
"anthropic": {
"models": {
"my-sonnet": {
"id": "claude-sonnet-4-20250514",
"name": "Meu Sonnet Padrão" // alias
}
}
}
},
"displayOrder": [ // custom order
"anthropic/claude-sonnet-4-20250514",
"openai/gpt-5",
"google/gemini-2.5-flash"
]
}Describe alternatives you've considered
- Using only the existing
namefield in config — works but has no UI, making it inaccessible to non-technical users - Keyboard shortcut to cycle models — useful but does not solve discoverability or organization
Additional context
This proposal builds on prior discussions:
- [FEATURE]: custom model aliases #3439 (custom model aliases, completed)
- Use config alias/name instead of API model ID in system prompt environment block #36164 (use alias in system prompt, open)
- [FEATURE]: Sort model providers alphabetically #23893 (sort providers alphabetically, closed as not planned — a richer proposal may have better acceptance)
The implementation touches:
packages/app/src/components/dialog-manage-models.tsx— drag handles, rename inputs, pin button, default indicatorpackages/app/src/context/models.tsx—displayOrder,customName,pinned,defaultModelstatepackages/app/src/hooks/use-providers.ts— respect custom order over hardcoded sort- Persistence layer — write changes back to
opencode.json
Metadata
Metadata
Assignees
Labels
No labels
Activity
github-actions commentedon Jul 22, 2026
This issue might be a duplicate of or overlap with existing issues. Please check:
If these don't fully cover your proposal (particularly the custom ordering, inline aliases, and default model selection), this issue may still be valuable as a more comprehensive feature request.
github-actions commentedon Sep 22, 2026
To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.