| 1 | # Provider catalog |
| 2 | |
| 3 | The desktop preset picker has one entry per provider brand. Access plan, |
| 4 | account platform and API format select a concrete existing preset, in that order. Only combinations |
| 5 | registered by the host are offered. OpenCode Go and Zen remain separate plans; |
| 6 | model-scoped routes remain selectable inside their plan. |
| 7 | |
| 8 | Adding a preset keeps its existing ID, credentials, model overrides and install |
| 9 | conflict checks. Browsing the catalog does not modify installed connections. |
| 10 | Existing custom endpoints, connection names and session references are retained. |
| 11 | You can edit the address and model list after adding, or use Custom provider to |
| 12 | create another connection with its own name and credentials. |
| 13 | |
| 14 | The API format selector names Anthropic Messages, Chat Completions and Responses |
| 15 | explicitly. During an explicit format change, known preset addresses follow the |
| 16 | matching registered route. Standard request suffixes can be updated for custom |
| 17 | connections; custom paths and query-bearing exact URL overrides are preserved. |
| 18 | Protocol changes may change request serialization and provider cache reuse. |
| 19 | |
| 20 | ## Added providers |
| 21 | |
| 22 | OpenAI (Responses and Chat Completions), Anthropic, Google Gemini (OpenAI |
| 23 | compatibility), SiliconFlow, OpenRouter, Groq, Mistral AI, local Ollama and |
| 24 | LM Studio. Example model names are editable starting points, not guarantees of |
| 25 | account access or local installation. Fetch or enter the actual models after |
| 26 | adding. Native Anthropic server tools are not enabled by the preset. Gemini's |
| 27 | native API, OAuth-only services, Azure deployment setup and other special |
| 28 | protocols are not implied by this catalog expansion. |
| 29 | |
| 30 | ## Sources |
| 31 | |
| 32 | These definitions are maintained independently from Cherry Studio source code. |
| 33 | Endpoint sources: |
| 34 | |
| 35 | - [OpenAI API](https://platform.openai.com/docs/api-reference/introduction) |
| 36 | - [Anthropic Messages](https://platform.claude.com/docs/en/api/http/messages/create) |
| 37 | - [Gemini OpenAI compatibility](https://ai.google.dev/gemini-api/docs/openai) |
| 38 | - [SiliconFlow quickstart](https://docs.siliconflow.cn/docs/userguide/quickstart) |
| 39 | - [OpenRouter quickstart](https://openrouter.ai/docs/quickstart) |
| 40 | - [Groq OpenAI compatibility](https://console.groq.com/docs/openai) |
| 41 | - [Mistral API](https://docs.mistral.ai/api) |
| 42 | - [Ollama OpenAI compatibility](https://docs.ollama.com/api/openai-compatibility) |
| 43 | - [LM Studio OpenAI compatibility](https://lmstudio.ai/docs/developer/openai-compat) |
| 44 | |
| 45 | Bundled brand icons come from LobeHub Icons under MIT. The pinned source revision |
| 46 | and full license are in `desktop/frontend/public/provider-icons/`. Brands without |
| 47 | a bundled icon use an initial. No third-party scripts or remote icon requests are |
| 48 | needed at runtime. |
| 49 | |
| 50 | ## Maintenance and compatibility |
| 51 | |
| 52 | `internal/config/provider_catalog.go` owns brand/platform/plan metadata. Protocol |
| 53 | and default URL come from the preset's actual entries. After a catalog or added |
| 54 | preset change, regenerate browser fixtures from the repository root: |
| 55 | |
| 56 | ```sh |
| 57 | go run scripts/generate-provider-catalog.go |
| 58 | ``` |
| 59 | |
| 60 | | Contract | Behavior | |
| 61 | | --- | --- | |
| 62 | | Saved provider TOML and credentials | Browsing makes no writes; the one-time MiMo model upgrade below preserves credentials and selections | |
| 63 | | Existing preset IDs | Preserved | |
| 64 | | Desktop `ProviderPresetView.catalog` | Additive display metadata; old clients ignore it | |
| 65 | | New frontend with older host | Generated known-ID fallback; unknown presets remain individually accessible | |
| 66 | | Provider request prefix | No catalog metadata is added to model requests | |
| 67 | |
| 68 | ## MiMo API and Token Plan |
| 69 | |
| 70 | Choose **Pay-as-you-go API** or **Token Plan** first. The API uses |
| 71 | `MIMO_API_KEY` and does not show a region selector. Token Plan uses |
| 72 | `MIMO_TOKEN_PLAN_API_KEY` and then offers China, Singapore and Europe service |
| 73 | clusters. Changing clusters preserves a selected protocol when that preset is |
| 74 | available. Token Plan is restricted to supported AI coding tools; its key and |
| 75 | quota are independent of the ordinary API. |
| 76 | |
| 77 | New connections default to `mimo-v2.6-pro`, with `mimo-v2.6-flash` also included. |
| 78 | V2.5 IDs remain available for existing selections. Schema version 12 appends |
| 79 | the V2.6 models once to eligible saved official V2.5 connections. It preserves |
| 80 | the current default, model order, custom rates, credential references and unknown |
| 81 | fields. Explicit custom request URLs and third-party endpoints are excluded. |
| 82 | The model additions and version marker are written atomically under the config |
| 83 | edit lock; subsequent starts do not restore models the user removes. |
| 84 | |
| 85 | | Field or format | Old-data behavior | New reader | Previous schema-v11 reader | Conclusion | |
| 86 | | --- | --- | --- | --- | --- | |
| 87 | | `models`, `default`, model references | Existing V2.5 selections remain first/default | Appends V2.6 once; keeps selections | Reads and saves model IDs without switching defaults | Compatible | |
| 88 | | `config_version = 12` | Earlier versions are eligible for startup migration | Prevents repeated additions after deletion | Retains the marker when saving | Compatible | |
| 89 | | `prices`, `vision_models`, unknown fields | Preserves user rates and explicit vision choices | Extends known curated vision lists and missing V2.6 prices; preserves unknown data during migration | Reads the existing fields and canonical nested price tables | No new persisted field types | |
| 90 | |
| 91 | Official references: [Token Plan](https://mimo.mi.com/docs/zh-CN/tokenplan/Token%20Plan/subscription), |
| 92 | [API pricing](https://mimo.mi.com/docs/zh-CN/price/pay-as-you-go), |
| 93 | [API rate limits](https://mimo.mi.com/docs/zh-CN/api/guidance/rate-limit). |
| 94 | |
| 95 | ## Connection display names |
| 96 | |
| 97 | Optional `display_name` is UI metadata; `name` remains the stable connection, |
| 98 | model-reference and credential identity. Lists, details and model pickers prefer |
| 99 | the label, falling back to the existing name when empty. New presets initialize |
| 100 | it from their title. Duplicate labels never merge connections. The field is not |
| 101 | added to requests or prompts, and renaming does not rewrite historical sessions. |
| 102 | |
| 103 | | Scenario | Behavior | |
| 104 | | --- | --- | |
| 105 | | Old configuration without the field | Existing display; no migration | |
| 106 | | Current writer and restart | Label and stable references preserved | |
| 107 | | Older frontend omits displayName | Current backend preserves the label | |
| 108 | | Explicit empty string | Clears the label and restores fallback | |
| 109 | | Older application reads and rewrites config | Connection remains readable; its writer may lose the label | |
| 110 | |
| 111 | Connection details offer inline title editing: Enter saves, Escape cancels, and |
| 112 | blur does not submit. The dedicated rename operation changes only the label; |
| 113 | the detail configuration editor omits that field so stale drafts cannot overwrite it. |
| 114 | |
| 115 | Built-in and custom connections share the same detail editor. Built-in entries |
| 116 | provide initial defaults; protocol, endpoint, credentials and models remain |
| 117 | editable. The detail layout does not depend on creation source. Actual endpoint |
| 118 | and model metadata continue to determine service capabilities. |
| 119 | |
| 120 | Model editing uses one selection list, with comma-separated IDs supported in |
| 121 | manual addition. Discovery merges candidates without changing selection or |
| 122 | saving configuration. Context overrides live in per-model settings. |
| 123 | Refreshing verifies model discovery only, not inference; no redundant check button is shown. Keys are saved |
| 124 | separately; checks and discovery do not save keys or enable models automatically. |
| 125 | |
| 126 | Keys normally show status with Change and a more-actions menu for source, sharing and removal. Refresh and Add sit beside the model heading. |
| 127 | |
| 128 | ### Compact connection editor |
| 129 | |
| 130 | Connection fields share one aligned form. Model selection, refresh and manual additions share one toolbar. Adding and editing models share a modal with context-window and output-token overrides. Text input/output are fixed; image input can be overridden or restored to automatic detection. Video and PDF remain unavailable until the request pipeline supports them. Applying the modal updates the configuration draft; saving the connection persists it. Connection identity and the footer occupy fixed layout slots; navigation and configuration content scroll independently without an additional model-list scroller. The save footer distinguishes clean and unsaved states, and failed saves retain the draft. Credentials remain independently saved. |
| 131 | |
| 132 | With the frontend running, `/dev/provider-layout-preview.html` provides an isolated preview using the production components and in-memory data; it never writes real connections or credentials. See root `design-qa.md` for visual verification. |
| 133 | |
| 134 | ### AMD GPU Cloud |
| 135 | |
| 136 | Added independently maintained preset `amd-gpu-cloud`, OpenAI Chat Completions, |
| 137 | base URL `https://developer.amd.com.cn/radeon/v1`, and case-sensitive model IDs |
| 138 | from Cherry Studio's registry: |
| 139 | https://github.com/CherryHQ/cherry-studio/blob/main/packages/provider-registry/src/providers/radeon-cloud.ts |
| 140 | |
| 141 | API key/account portal: https://developer.amd.com.cn/radeon/tokenfactory |
| 142 | Model availability and promotional quotas are account-dependent; refresh models |
| 143 | after connecting. No live authenticated AMD request was performed. |
| 144 | AMD icon is from Simple Icons (CC0), https://github.com/simple-icons/simple-icons/blob/develop/icons/amd.svg; |
| 145 | the AMD trademark remains its owner's property. |
| 146 | |
| 147 | ### Additional inference platforms |
| 148 | |
| 149 | Added eight brands: Doubao (Chat/Responses), Baidu Qianfan, PPIO, |
| 150 | Qiniu, xAI (Chat/Responses), Cerebras, Together, Fireworks |
| 151 | (Chat/Anthropic/Responses). These twelve editable route templates share brand |
| 152 | identity across protocols. Adding a template still creates an independent connection. |
| 153 | |
| 154 | Sources checked against Cherry Studio's provider registry: |
| 155 | https://github.com/CherryHQ/cherry-studio/tree/main/packages/provider-registry/src/providers |
| 156 | Also: https://docs.fireworks.ai/tools-sdks/openai-compatibility |
| 157 | https://docs.fireworks.ai/getting-started/quickstart |
| 158 | https://docs.fireworks.ai/guides/response-api |
| 159 | https://docs.together.ai/docs/inference/openai-compatibility |
| 160 | https://cloud.baidu.com/doc/qianfan/s/rmh4stp0j |
| 161 | https://models.dev/api.json (Cerebras, xAI, Qiniu model identifiers). |
| 162 | |
| 163 | Defaults are starting points; account access can vary. Web search is off and |
| 164 | no unverified reasoning overrides are added. These are protocol presets, not |
| 165 | certification of every model's agent/tool/reasoning capabilities. Model discovery, |
| 166 | tool calls and thinking require authenticated platform verification; none was |
| 167 | performed in this batch. Icons use the existing pinned LobeHub MIT source. |
| 168 |