Files
CC-Switch/src/config/hermesProviderPresets.ts
T
Jason 3255b17185 feat(hermes): switch eligible presets to chat_completions + GPT-5.4
Migrate 18 Hermes provider presets from anthropic_messages to
chat_completions to sidestep known upstream Hermes bugs (model-name
dot-mangling in normalize_model_name, api_mode drop after v11->v12
migration, and auxiliary_client OpenAI hardcode).

Native providers now target each vendor's official OpenAI-compatible
endpoint with correct model IDs: Kimi (kimi-k2.5-preview on /v1),
Bailian (compatible-mode/v1 with Qwen3 defaults), Xiaomi MiMo, Longcat
(/openai/v1), Zhipu GLM (/api/paas/v4), ModelScope, MiniMax, SiliconFlow,
and Novita (/v3/openai).

Aggregators (Shengsuanyun, AiHubMix, DMXAPI, Compshare, TheRouter)
default to GPT-5.4 on chat_completions, mirroring the Codex preset
lineup. TheRouter omits gpt-5.4-pro since that variant is Responses-only
and Hermes implements only chat_completions. OpenRouter's existing
openai/gpt-5 entry is bumped to openai/gpt-5.4.

Claude-only proxies are left on anthropic_messages; their Codex
counterparts use wire_api=responses, so there is no evidence their
chat_completions endpoints serve OpenAI models.
2026-04-21 11:57:06 +08:00

951 lines
26 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Hermes Agent provider presets configuration
* Hermes uses custom_providers array in config.yaml
*/
import type { ProviderCategory } from "../types";
import type { PresetTheme, TemplateValueConfig } from "./claudeProviderPresets";
/**
* A model entry under a Hermes custom_provider.
*
* Serialized to YAML as a dict keyed by `id`:
*
* ```yaml
* models:
* anthropic/claude-opus-4-7:
* context_length: 200000
* max_tokens: 32000
* ```
*/
export interface HermesModel {
/** Model ID — becomes the YAML key and the value written to top-level model.default. */
id: string;
/** Optional display label (UI only, not serialized to YAML). */
name?: string;
/** Override the auto-detected context window. */
context_length?: number;
/** Response-length cap. */
max_tokens?: number;
}
/**
* Top-level `model:` defaults suggested by a preset.
*
* Written to the YAML `model:` section when the user switches to this provider.
* Per-model `context_length` / `max_tokens` live on the individual `HermesModel`
* entries and flow through `custom_providers[].models`, not this object.
*/
export interface HermesSuggestedDefaults {
model: {
/** Model ID for `model.default`. Typically equals `models[0].id`. */
default: string;
/** Value for `model.provider`. Omit to use the custom_provider name. */
provider?: string;
};
}
/** Hermes custom_provider protocol mode (optional; auto-detected when omitted). */
export type HermesApiMode = "chat_completions" | "anthropic_messages";
/**
* Form-facing value used by the API Mode dropdown.
*
* `auto` is the UI-only sentinel for "omit `api_mode` and let Hermes detect the
* protocol from the endpoint". When serialized to `settings_config`, `auto`
* becomes `undefined` so the YAML doesn't include `api_mode` at all.
*/
export type HermesApiModeChoice = "auto" | HermesApiMode;
/**
* Dropdown options for the API Mode selector. `labelKey` is looked up in i18n;
* `value` of "auto" means "don't write `api_mode` to the config".
*/
export const hermesApiModes: Array<{
value: HermesApiModeChoice;
labelKey: string;
}> = [
{ value: "auto", labelKey: "hermes.form.apiModeAuto" },
{ value: "chat_completions", labelKey: "hermes.form.apiModeChatCompletions" },
{
value: "anthropic_messages",
labelKey: "hermes.form.apiModeAnthropicMessages",
},
];
export interface HermesProviderPreset {
name: string;
nameKey?: string;
websiteUrl: string;
apiKeyUrl?: string;
settingsConfig: HermesProviderSettingsConfig;
isOfficial?: boolean;
isPartner?: boolean;
partnerPromotionKey?: string;
category?: ProviderCategory;
templateValues?: Record<string, TemplateValueConfig>;
theme?: PresetTheme;
icon?: string;
iconColor?: string;
isCustomTemplate?: boolean;
/** Optional top-level `model:` defaults written on switch. */
suggestedDefaults?: HermesSuggestedDefaults;
}
export interface HermesProviderSettingsConfig {
name: string;
base_url?: string;
api_key?: string;
api_mode?: HermesApiMode;
/** UI-side ordered list; serialized to YAML as a dict keyed by id. */
models?: HermesModel[];
[key: string]: unknown;
}
export const hermesProviderPresets: HermesProviderPreset[] = [
{
name: "Shengsuanyun",
nameKey: "providerForm.presets.shengsuanyun",
websiteUrl: "https://www.shengsuanyun.com",
apiKeyUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF",
settingsConfig: {
name: "shengsuanyun",
base_url: "https://router.shengsuanyun.com/api/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "openai/gpt-5.4", name: "GPT-5.4" }],
},
category: "aggregator",
isPartner: true,
partnerPromotionKey: "shengsuanyun",
icon: "shengsuanyun",
suggestedDefaults: {
model: { default: "openai/gpt-5.4", provider: "shengsuanyun" },
},
},
{
name: "OpenRouter",
nameKey: "providerForm.presets.openrouter",
websiteUrl: "https://openrouter.ai",
apiKeyUrl: "https://openrouter.ai/keys",
settingsConfig: {
name: "openrouter",
base_url: "https://openrouter.ai/api/v1",
api_key: "",
api_mode: "chat_completions",
models: [
{
id: "anthropic/claude-opus-4-7",
name: "Claude Opus 4.7",
context_length: 200000,
max_tokens: 32000,
},
{
id: "anthropic/claude-sonnet-4-6",
name: "Claude Sonnet 4.6",
context_length: 200000,
max_tokens: 32000,
},
{
id: "openai/gpt-5.4",
name: "GPT-5.4",
context_length: 400000,
},
{
id: "google/gemini-3-pro",
name: "Gemini 3 Pro",
context_length: 1000000,
},
],
},
category: "aggregator",
icon: "openrouter",
iconColor: "#6366F1",
suggestedDefaults: {
model: { default: "anthropic/claude-opus-4-7", provider: "openrouter" },
},
},
{
name: "DeepSeek",
nameKey: "providerForm.presets.deepseek",
websiteUrl: "https://platform.deepseek.com",
apiKeyUrl: "https://platform.deepseek.com/api_keys",
settingsConfig: {
name: "deepseek",
base_url: "https://api.deepseek.com",
api_key: "",
api_mode: "chat_completions",
models: [
{
id: "deepseek-chat",
name: "DeepSeek V3.2",
context_length: 64000,
max_tokens: 8000,
},
{
id: "deepseek-reasoner",
name: "DeepSeek R1",
context_length: 64000,
max_tokens: 8000,
},
],
},
category: "cn_official",
icon: "deepseek",
iconColor: "#4D6BFE",
suggestedDefaults: {
model: { default: "deepseek-chat", provider: "deepseek" },
},
},
{
name: "Together AI",
nameKey: "providerForm.presets.together",
websiteUrl: "https://together.ai",
apiKeyUrl: "https://api.together.ai/settings/api-keys",
settingsConfig: {
name: "together",
base_url: "https://api.together.xyz/v1",
api_key: "",
api_mode: "chat_completions",
models: [
{
id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
name: "Qwen3 Coder 480B",
context_length: 262144,
},
{
id: "deepseek-ai/DeepSeek-V3.2",
name: "DeepSeek V3.2",
context_length: 64000,
},
{
id: "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
name: "Llama 4 Maverick",
context_length: 131072,
},
],
},
category: "aggregator",
icon: "together",
iconColor: "#0F6FFF",
suggestedDefaults: {
model: {
default: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
provider: "together",
},
},
},
{
name: "Nous Research",
websiteUrl: "https://nousresearch.com",
apiKeyUrl: "https://portal.nousresearch.com/",
settingsConfig: {
name: "nous",
base_url: "https://inference-api.nousresearch.com/v1",
api_key: "",
api_mode: "chat_completions",
models: [
{
id: "Hermes-4-405B",
name: "Hermes 4 405B",
context_length: 131072,
},
{
id: "Hermes-4-70B",
name: "Hermes 4 70B",
context_length: 131072,
},
],
},
isOfficial: true,
category: "official",
icon: "hermes",
iconColor: "#7C3AED",
suggestedDefaults: {
model: { default: "Hermes-4-405B", provider: "nous" },
},
},
// ===== 以下为从 Claude 应用预设同步而来的供应商 =====
// 字段映射:env.ANTHROPIC_BASE_URL → base_urlenv.ANTHROPIC_AUTH_TOKEN → api_key
// apiFormat "anthropic"(默认) → api_mode "anthropic_messages"
// apiFormat "openai_chat" → api_mode "chat_completions"
// ANTHROPIC_MODEL / DEFAULT_HAIKU / SONNET / OPUS_MODEL 去重后塞进 models[]。
{
name: "Zhipu GLM",
websiteUrl: "https://open.bigmodel.cn",
apiKeyUrl: "https://www.bigmodel.cn/claude-code?ic=RRVJPB5SII",
settingsConfig: {
name: "zhipu_glm",
base_url: "https://open.bigmodel.cn/api/paas/v4",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "glm-5", name: "GLM-5" }],
},
category: "cn_official",
icon: "zhipu",
iconColor: "#0F62FE",
suggestedDefaults: {
model: { default: "glm-5", provider: "zhipu_glm" },
},
},
{
name: "Zhipu GLM en",
websiteUrl: "https://z.ai",
apiKeyUrl: "https://z.ai/subscribe?ic=8JVLJQFSKB",
settingsConfig: {
name: "zhipu_glm_en",
base_url: "https://api.z.ai/api/paas/v4",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "glm-5", name: "GLM-5" }],
},
category: "cn_official",
icon: "zhipu",
iconColor: "#0F62FE",
suggestedDefaults: {
model: { default: "glm-5", provider: "zhipu_glm_en" },
},
},
{
name: "Bailian",
websiteUrl: "https://bailian.console.aliyun.com",
settingsConfig: {
name: "bailian",
base_url: "https://dashscope.aliyuncs.com/compatible-mode/v1",
api_key: "",
api_mode: "chat_completions",
models: [
{ id: "qwen3-coder-plus", name: "Qwen3 Coder Plus" },
{ id: "qwen3-max", name: "Qwen3 Max" },
],
},
category: "cn_official",
icon: "bailian",
iconColor: "#624AFF",
suggestedDefaults: {
model: { default: "qwen3-coder-plus", provider: "bailian" },
},
},
{
name: "Bailian For Coding",
websiteUrl: "https://bailian.console.aliyun.com",
settingsConfig: {
name: "bailian_coding",
base_url: "https://coding.dashscope.aliyuncs.com/apps/anthropic",
api_key: "",
api_mode: "anthropic_messages",
},
category: "cn_official",
icon: "bailian",
iconColor: "#624AFF",
},
{
name: "Kimi",
websiteUrl: "https://platform.moonshot.cn/console",
settingsConfig: {
name: "kimi",
base_url: "https://api.moonshot.cn/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "kimi-k2.5-preview", name: "Kimi K2.5" }],
},
category: "cn_official",
icon: "kimi",
iconColor: "#6366F1",
suggestedDefaults: {
model: { default: "kimi-k2.5-preview", provider: "kimi" },
},
},
{
name: "Kimi For Coding",
websiteUrl: "https://www.kimi.com/coding/docs/",
settingsConfig: {
name: "kimi_coding",
base_url: "https://api.kimi.com/coding/",
api_key: "",
api_mode: "anthropic_messages",
},
category: "cn_official",
icon: "kimi",
iconColor: "#6366F1",
},
{
name: "StepFun",
websiteUrl: "https://platform.stepfun.ai",
apiKeyUrl: "https://platform.stepfun.ai/interface-key",
settingsConfig: {
name: "stepfun",
base_url: "https://api.stepfun.ai/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "step-3.5-flash", name: "Step 3.5 Flash" }],
},
category: "cn_official",
icon: "stepfun",
iconColor: "#005AFF",
suggestedDefaults: {
model: { default: "step-3.5-flash", provider: "stepfun" },
},
},
{
name: "ModelScope",
websiteUrl: "https://modelscope.cn",
settingsConfig: {
name: "modelscope",
base_url: "https://api-inference.modelscope.cn/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "ZhipuAI/GLM-5", name: "ZhipuAI / GLM-5" }],
},
category: "aggregator",
icon: "modelscope",
iconColor: "#624AFF",
suggestedDefaults: {
model: { default: "ZhipuAI/GLM-5", provider: "modelscope" },
},
},
{
name: "KAT-Coder",
websiteUrl: "https://console.streamlake.ai",
apiKeyUrl: "https://console.streamlake.ai/console/api-key",
settingsConfig: {
name: "kat_coder",
base_url:
"https://vanchin.streamlake.ai/api/gateway/v1/endpoints/${ENDPOINT_ID}/claude-code-proxy",
api_key: "",
api_mode: "anthropic_messages",
models: [
{ id: "KAT-Coder-Pro V1", name: "KAT-Coder Pro V1" },
{ id: "KAT-Coder-Air V1", name: "KAT-Coder Air V1" },
],
},
category: "cn_official",
templateValues: {
ENDPOINT_ID: {
label: "Vanchin Endpoint ID",
placeholder: "ep-xxx-xxx",
defaultValue: "",
editorValue: "",
},
},
icon: "catcoder",
suggestedDefaults: {
model: { default: "KAT-Coder-Pro V1", provider: "kat_coder" },
},
},
{
name: "Longcat",
websiteUrl: "https://longcat.chat/platform",
apiKeyUrl: "https://longcat.chat/platform/api_keys",
settingsConfig: {
name: "longcat",
base_url: "https://api.longcat.chat/openai/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "LongCat-Flash-Chat", name: "LongCat Flash Chat" }],
},
category: "cn_official",
icon: "longcat",
iconColor: "#29E154",
suggestedDefaults: {
model: { default: "LongCat-Flash-Chat", provider: "longcat" },
},
},
{
name: "MiniMax",
websiteUrl: "https://platform.minimaxi.com",
apiKeyUrl: "https://platform.minimaxi.com/subscribe/coding-plan",
settingsConfig: {
name: "minimax",
base_url: "https://api.minimaxi.com/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "MiniMax-M2.7", name: "MiniMax M2.7" }],
},
category: "cn_official",
isPartner: true,
partnerPromotionKey: "minimax_cn",
theme: { backgroundColor: "#f64551", textColor: "#FFFFFF" },
icon: "minimax",
iconColor: "#FF6B6B",
suggestedDefaults: {
model: { default: "MiniMax-M2.7", provider: "minimax" },
},
},
{
name: "MiniMax en",
websiteUrl: "https://platform.minimax.io",
apiKeyUrl: "https://platform.minimax.io/subscribe/coding-plan",
settingsConfig: {
name: "minimax_en",
base_url: "https://api.minimax.io/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "MiniMax-M2.7", name: "MiniMax M2.7" }],
},
category: "cn_official",
isPartner: true,
partnerPromotionKey: "minimax_en",
theme: { backgroundColor: "#f64551", textColor: "#FFFFFF" },
icon: "minimax",
iconColor: "#FF6B6B",
suggestedDefaults: {
model: { default: "MiniMax-M2.7", provider: "minimax_en" },
},
},
{
name: "DouBaoSeed",
websiteUrl: "https://www.volcengine.com/product/doubao",
apiKeyUrl: "https://www.volcengine.com/product/doubao",
settingsConfig: {
name: "doubao_seed",
base_url: "https://ark.cn-beijing.volces.com/api/coding",
api_key: "",
api_mode: "anthropic_messages",
models: [
{
id: "doubao-seed-2-0-code-preview-latest",
name: "Doubao Seed 2.0 Code Preview",
},
],
},
category: "cn_official",
icon: "doubao",
iconColor: "#3370FF",
suggestedDefaults: {
model: {
default: "doubao-seed-2-0-code-preview-latest",
provider: "doubao_seed",
},
},
},
{
name: "BaiLing",
websiteUrl: "https://alipaytbox.yuque.com/sxs0ba/ling/get_started",
settingsConfig: {
name: "bailing",
base_url: "https://api.tbox.cn/api/anthropic",
api_key: "",
api_mode: "anthropic_messages",
models: [{ id: "Ling-2.5-1T", name: "Ling 2.5 1T" }],
},
category: "cn_official",
suggestedDefaults: {
model: { default: "Ling-2.5-1T", provider: "bailing" },
},
},
{
name: "AiHubMix",
websiteUrl: "https://aihubmix.com",
apiKeyUrl: "https://aihubmix.com",
settingsConfig: {
name: "aihubmix",
base_url: "https://aihubmix.com/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "gpt-5.4", name: "GPT-5.4" }],
},
category: "aggregator",
icon: "aihubmix",
iconColor: "#006FFB",
suggestedDefaults: {
model: { default: "gpt-5.4", provider: "aihubmix" },
},
},
{
name: "SiliconFlow",
websiteUrl: "https://siliconflow.cn",
apiKeyUrl: "https://cloud.siliconflow.cn/i/drGuwc9k",
settingsConfig: {
name: "siliconflow",
base_url: "https://api.siliconflow.cn/v1",
api_key: "",
api_mode: "chat_completions",
models: [
{
id: "Pro/MiniMaxAI/MiniMax-M2.7",
name: "Pro / MiniMax M2.7",
},
],
},
category: "aggregator",
isPartner: true,
partnerPromotionKey: "siliconflow",
icon: "siliconflow",
iconColor: "#6E29F6",
suggestedDefaults: {
model: {
default: "Pro/MiniMaxAI/MiniMax-M2.7",
provider: "siliconflow",
},
},
},
{
name: "SiliconFlow en",
websiteUrl: "https://siliconflow.com",
apiKeyUrl: "https://cloud.siliconflow.cn/i/drGuwc9k",
settingsConfig: {
name: "siliconflow_en",
base_url: "https://api.siliconflow.com/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "MiniMaxAI/MiniMax-M2.7", name: "MiniMax M2.7" }],
},
category: "aggregator",
isPartner: true,
partnerPromotionKey: "siliconflow",
icon: "siliconflow",
iconColor: "#000000",
suggestedDefaults: {
model: {
default: "MiniMaxAI/MiniMax-M2.7",
provider: "siliconflow_en",
},
},
},
{
name: "DMXAPI",
websiteUrl: "https://www.dmxapi.cn",
apiKeyUrl: "https://www.dmxapi.cn",
settingsConfig: {
name: "dmxapi",
base_url: "https://www.dmxapi.cn/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "gpt-5.4", name: "GPT-5.4" }],
},
category: "aggregator",
isPartner: true,
partnerPromotionKey: "dmxapi",
suggestedDefaults: {
model: { default: "gpt-5.4", provider: "dmxapi" },
},
},
{
name: "PackyCode",
websiteUrl: "https://www.packyapi.com",
apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch",
settingsConfig: {
name: "packycode",
base_url: "https://www.packyapi.com",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "packycode",
icon: "packycode",
},
{
name: "Cubence",
websiteUrl: "https://cubence.com",
apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs",
settingsConfig: {
name: "cubence",
base_url: "https://api.cubence.com",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "cubence",
icon: "cubence",
iconColor: "#000000",
},
{
name: "AIGoCode",
websiteUrl: "https://aigocode.com",
apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH",
settingsConfig: {
name: "aigocode",
base_url: "https://api.aigocode.com",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "aigocode",
icon: "aigocode",
iconColor: "#5B7FFF",
},
{
name: "RightCode",
websiteUrl: "https://www.right.codes",
apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH",
settingsConfig: {
name: "rightcode",
base_url: "https://www.right.codes/claude",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "rightcode",
icon: "rc",
iconColor: "#E96B2C",
},
{
name: "AICodeMirror",
websiteUrl: "https://www.aicodemirror.com",
apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3",
settingsConfig: {
name: "aicodemirror",
base_url: "https://api.aicodemirror.com/api/claudecode",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "aicodemirror",
icon: "aicodemirror",
iconColor: "#000000",
},
{
name: "AICoding",
websiteUrl: "https://aicoding.sh",
apiKeyUrl: "https://aicoding.sh/i/CCSWITCH",
settingsConfig: {
name: "aicoding",
base_url: "https://api.aicoding.sh",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "aicoding",
icon: "aicoding",
iconColor: "#000000",
},
{
name: "CrazyRouter",
websiteUrl: "https://www.crazyrouter.com",
apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch",
settingsConfig: {
name: "crazyrouter",
base_url: "https://crazyrouter.com",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "crazyrouter",
icon: "crazyrouter",
iconColor: "#000000",
},
{
name: "SSSAiCode",
websiteUrl: "https://www.sssaicode.com",
apiKeyUrl: "https://www.sssaicode.com/register?ref=DCP0SM",
settingsConfig: {
name: "sssaicode",
base_url: "https://node-hk.sssaicode.com/api",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "sssaicode",
icon: "sssaicode",
iconColor: "#000000",
},
{
name: "Compshare",
nameKey: "providerForm.presets.ucloud",
websiteUrl: "https://www.compshare.cn",
apiKeyUrl:
"https://www.compshare.cn/coding-plan?ytag=GPU_YY_YX_git_cc-switch",
settingsConfig: {
name: "compshare",
base_url: "https://api.modelverse.cn/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "gpt-5.4", name: "GPT-5.4" }],
},
category: "aggregator",
isPartner: true,
partnerPromotionKey: "ucloud",
icon: "ucloud",
iconColor: "#000000",
suggestedDefaults: {
model: { default: "gpt-5.4", provider: "compshare" },
},
},
{
name: "Micu",
websiteUrl: "https://www.openclaudecode.cn",
apiKeyUrl: "https://www.openclaudecode.cn/register?aff=aOYQ",
settingsConfig: {
name: "micu",
base_url: "https://www.openclaudecode.cn",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "micu",
icon: "micu",
iconColor: "#000000",
},
{
name: "CTok.ai",
websiteUrl: "https://ctok.ai",
apiKeyUrl: "https://ctok.ai",
settingsConfig: {
name: "ctok",
base_url: "https://api.ctok.ai",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "ctok",
icon: "ctok",
iconColor: "#000000",
},
{
name: "DDSHub",
websiteUrl: "https://www.ddshub.cc",
apiKeyUrl: "https://ddshub.short.gy/ccswitch",
settingsConfig: {
name: "ddshub",
base_url: "https://www.ddshub.cc",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "ddshub",
icon: "dds",
iconColor: "#000000",
},
{
name: "E-FlowCode",
websiteUrl: "https://e-flowcode.cc",
apiKeyUrl: "https://e-flowcode.cc",
settingsConfig: {
name: "eflowcode",
base_url: "https://e-flowcode.cc",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
icon: "eflowcode",
iconColor: "#000000",
},
{
name: "LionCCAPI",
websiteUrl: "https://vibecodingapi.ai",
settingsConfig: {
name: "lionccapi",
base_url: "https://vibecodingapi.ai",
api_key: "",
api_mode: "anthropic_messages",
},
category: "third_party",
isPartner: true,
partnerPromotionKey: "lionccapi",
icon: "lioncc",
},
{
name: "TheRouter",
websiteUrl: "https://therouter.ai",
apiKeyUrl: "https://dashboard.therouter.ai",
settingsConfig: {
name: "therouter",
base_url: "https://api.therouter.ai/v1",
api_key: "",
api_mode: "chat_completions",
models: [
{ id: "openai/gpt-5.4", name: "GPT-5.4" },
{ id: "openai/gpt-5.4-mini", name: "GPT-5.4 mini" },
{ id: "openai/gpt-5.4-nano", name: "GPT-5.4 nano" },
],
},
category: "aggregator",
suggestedDefaults: {
model: {
default: "openai/gpt-5.4",
provider: "therouter",
},
},
},
{
name: "Novita AI",
websiteUrl: "https://novita.ai",
apiKeyUrl: "https://novita.ai",
settingsConfig: {
name: "novita",
base_url: "https://api.novita.ai/v3/openai",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "zai-org/glm-5", name: "Zai-Org / GLM-5" }],
},
category: "aggregator",
icon: "novita",
iconColor: "#000000",
suggestedDefaults: {
model: { default: "zai-org/glm-5", provider: "novita" },
},
},
{
name: "Nvidia",
websiteUrl: "https://build.nvidia.com",
apiKeyUrl: "https://build.nvidia.com/settings/api-keys",
settingsConfig: {
name: "nvidia",
base_url: "https://integrate.api.nvidia.com",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "moonshotai/kimi-k2.5", name: "Moonshot Kimi K2.5" }],
},
category: "aggregator",
icon: "nvidia",
iconColor: "#000000",
suggestedDefaults: {
model: { default: "moonshotai/kimi-k2.5", provider: "nvidia" },
},
},
{
name: "PIPELLM",
websiteUrl: "https://code.pipellm.ai",
apiKeyUrl: "https://code.pipellm.ai/login?ref=uvw650za",
settingsConfig: {
name: "pipellm",
base_url: "https://cc-api.pipellm.ai",
api_key: "",
api_mode: "anthropic_messages",
models: [
{ id: "claude-opus-4-7", name: "Claude Opus 4.7" },
{ id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6" },
{
id: "claude-haiku-4-5-20251001",
name: "Claude Haiku 4.5",
},
],
},
category: "aggregator",
icon: "pipellm",
suggestedDefaults: {
model: { default: "claude-opus-4-7", provider: "pipellm" },
},
},
{
name: "Xiaomi MiMo",
websiteUrl: "https://platform.xiaomimimo.com",
apiKeyUrl: "https://platform.xiaomimimo.com/#/console/api-keys",
settingsConfig: {
name: "xiaomi_mimo",
base_url: "https://api.xiaomimimo.com/v1",
api_key: "",
api_mode: "chat_completions",
models: [{ id: "mimo-v2-pro", name: "MiMo v2 Pro" }],
},
category: "cn_official",
icon: "xiaomimimo",
iconColor: "#000000",
suggestedDefaults: {
model: { default: "mimo-v2-pro", provider: "xiaomi_mimo" },
},
},
];