refactor(open-sse): P3 provider registry — split into providers/registry/{id}.js

- 100 registry files: transport + models co-located per provider (Mongoose-style)
- providers/shared.js: shared Claude headers + OS/arch helpers (deduped)
- providers/models/helpers.js: withCodexReviewModels (kept dynamic)
- providers/index.js builds PROVIDERS + PROVIDER_MODELS = old API (content byte-for-byte)
- config/providers.js + providerModels.js → barrel re-export, keep accessors + runtime helpers
- Verified: PROVIDERS/MODELS/OAuth/alias byte-for-byte, golden translator tests pass, 0 new regression

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
decolua
2026-06-13 21:08:37 +07:00
co-authored by Cursor
parent 7134dd71db
commit 5a042840fd
108 changed files with 3918 additions and 1340 deletions
+3 -837
View File
@@ -1,845 +1,11 @@
import { PROVIDERS } from "./providers.js";
import { buildTtsProviderModels } from "./ttsModels.js";
// PROVIDER_MODELS now built from providers/registry (transport + models co-located)
import { PROVIDER_MODELS } from "../providers/index.js";
// Provider models - Single source of truth
// Key = alias (cc, cx, gc, qw, if, ag, gh for OAuth; id for API Key)
// Field "provider" for special cases (e.g. AntiGravity models that call different backends)
export { PROVIDER_MODELS };
const CODEX_REVIEW_SUFFIX = "-review";
function withCodexReviewModels(models) {
return models.flatMap((model) => {
if ((model.type || "llm") !== "llm" || model.id.endsWith(CODEX_REVIEW_SUFFIX)) {
return [model];
}
return [
model,
{
...model,
id: `${model.id}${CODEX_REVIEW_SUFFIX}`,
name: `${model.name} Review`,
upstreamModelId: model.upstreamModelId || model.id,
quotaFamily: "review",
},
];
});
}
export const PROVIDER_MODELS = {
// OAuth Providers (using alias)
cc: [ // Claude Code
{ id: "claude-opus-4-8", name: "Claude Opus 4.8" },
{ id: "claude-opus-4-7", name: "Claude Opus 4.7" },
{ id: "claude-opus-4-6", name: "Claude Opus 4.6" },
{ id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6" },
{ id: "claude-opus-4-5-20251101", name: "Claude 4.5 Opus" },
{ id: "claude-sonnet-4-5-20250929", name: "Claude 4.5 Sonnet" },
{ id: "claude-haiku-4-5-20251001", name: "Claude 4.5 Haiku" },
],
cx: withCodexReviewModels([ // OpenAI Codex
{ id: "gpt-5.5", name: "GPT 5.5" },
{ id: "gpt-5.4", name: "GPT 5.4" },
{ id: "gpt-5.4-mini", name: "GPT 5.4 Mini" },
// GPT 5.3 Codex - all thinking levels
{ id: "gpt-5.3-codex", name: "GPT 5.3 Codex" },
{ id: "gpt-5.3-codex-xhigh", name: "GPT 5.3 Codex (xHigh)" },
{ id: "gpt-5.3-codex-high", name: "GPT 5.3 Codex (High)" },
{ id: "gpt-5.3-codex-low", name: "GPT 5.3 Codex (Low)" },
{ id: "gpt-5.3-codex-none", name: "GPT 5.3 Codex (None)" },
{ id: "gpt-5.3-codex-spark", name: "GPT 5.3 Codex Spark" },
// Image models (uses image_generation tool, requires Plus/Pro plan)
{ id: "gpt-5.5-image", name: "GPT 5.5 Image", type: "image", capabilities: ["text2img", "edit"], params: ["size", "quality", "background", "image_detail", "output_format"] },
{ id: "gpt-5.4-image", name: "GPT 5.4 Image", type: "image", capabilities: ["text2img", "edit"], params: ["size", "quality", "background", "image_detail", "output_format"] },
{ id: "gpt-5.3-image", name: "GPT 5.3 Image", type: "image", capabilities: ["text2img", "edit"], params: ["size", "quality", "background", "image_detail", "output_format"] },
]),
gc: [ // Gemini CLI
{ id: "gemini-3-flash-preview", name: "Gemini 3 Flash Preview" },
{ id: "gemini-3-pro-preview", name: "Gemini 3 Pro Preview" },
],
qw: [ // Qwen Code
// { id: "qwen3-coder-next", name: "Qwen3 Coder Next" },
{ id: "qwen3-coder-plus", name: "Qwen3 Coder Plus" },
{ id: "qwen3-coder-flash", name: "Qwen3 Coder Flash" },
{ id: "vision-model", name: "Qwen3 Vision Model" },
{ id: "coder-model", name: "Qwen3.6 Coder Model" },
],
if: [ // iFlow AI
{ id: "qwen3-coder-plus", name: "Qwen3 Coder Plus" },
{ id: "qwen3-max", name: "Qwen3 Max" },
{ id: "qwen3-vl-plus", name: "Qwen3 VL Plus" },
{ id: "qwen3-max-preview", name: "Qwen3 Max Preview" },
{ id: "qwen3-235b", name: "Qwen3 235B A22B" },
{ id: "qwen3-235b-a22b-instruct", name: "Qwen3 235B A22B Instruct" },
{ id: "qwen3-235b-a22b-thinking-2507", name: "Qwen3 235B A22B Thinking" },
{ id: "qwen3-32b", name: "Qwen3 32B" },
{ id: "kimi-k2", name: "Kimi K2" },
{ id: "deepseek-v3.2", name: "DeepSeek V3.2 Exp" },
{ id: "deepseek-v3.1", name: "DeepSeek V3.1 Terminus" },
{ id: "deepseek-v3", name: "DeepSeek V3 671B" },
{ id: "deepseek-r1", name: "DeepSeek R1" },
{ id: "glm-4.7", name: "GLM 4.7" },
{ id: "iflow-rome-30ba3b", name: "iFlow ROME" },
],
ag: [ // Antigravity - special case: models call different backends
{ id: "gemini-3-flash-agent", name: "Gemini 3.5 Flash (High)" },
{ id: "gemini-3.5-flash-low", name: "Gemini 3.5 Flash (Medium)" },
{ id: "gemini-3.5-flash-extra-low", name: "Gemini 3.5 Flash (Low)" },
{ id: "gemini-pro-agent", name: "Gemini 3.1 Pro (High)" },
{ id: "gemini-3.1-pro-low", name: "Gemini 3.1 Pro (Low)" },
{ id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6 (Thinking)" },
{ id: "claude-opus-4-6-thinking", name: "Claude Opus 4.6 (Thinking)" },
{ id: "gpt-oss-120b-medium", name: "GPT-OSS 120B (Medium)" },
{ id: "gemini-3-flash", name: "Gemini 3 Flash", thinking: false }, // command model; AG strips thinking
],
gh: [ // GitHub Copilot - OpenAI models
{ id: "gpt-3.5-turbo", name: "GPT-3.5 Turbo" },
{ id: "gpt-4", name: "GPT-4" },
{ id: "gpt-4o", name: "GPT-4o" },
{ id: "gpt-4o-mini", name: "GPT-4o mini" },
{ id: "gpt-4.1", name: "GPT-4.1" },
{ id: "gpt-5-mini", name: "GPT-5 Mini" },
{ id: "gpt-5.2", name: "GPT-5.2" },
{ id: "gpt-5.2-codex", name: "GPT-5.2 Codex" },
{ id: "gpt-5.3-codex", name: "GPT-5.3 Codex" },
{ id: "gpt-5.4", name: "GPT-5.4" },
{ id: "gpt-5.4-mini", name: "GPT-5.4 Mini" },
// GitHub Copilot - Anthropic models
{ id: "claude-haiku-4.5", name: "Claude Haiku 4.5" },
{ id: "claude-opus-4.5", name: "Claude Opus 4.5" },
{ id: "claude-sonnet-4", name: "Claude Sonnet 4" },
{ id: "claude-sonnet-4.5", name: "Claude Sonnet 4.5" },
{ id: "claude-sonnet-4.6", name: "Claude Sonnet 4.6" },
{ id: "claude-opus-4.6", name: "Claude Opus 4.6" },
{ id: "claude-opus-4.7", name: "Claude Opus 4.7" },
// GitHub Copilot - Google models
{ id: "gemini-2.5-pro", name: "Gemini 2.5 Pro" },
{ id: "gemini-3-flash-preview", name: "Gemini 3 Flash" },
{ id: "gemini-3.1-pro-preview", name: "Gemini 3.1 Pro" },
// GitHub Copilot - Other models
{ id: "grok-code-fast-1", name: "Grok Code Fast 1" },
{ id: "oswe-vscode-prime", name: "Raptor Mini" },
{ id: "goldeneye-free-auto", name: "GoldenEye" },
// GitHub Copilot - Embedding models
{ id: "text-embedding-3-small", name: "Text Embedding 3 Small (GitHub)", type: "embedding" },
{ id: "text-embedding-3-large", name: "Text Embedding 3 Large (GitHub)", type: "embedding" },
],
kr: [ // Kiro AI
// --- Base Claude variants ---
// { id: "claude-opus-4.5", name: "Claude Opus 4.5" },
{ id: "claude-sonnet-4.5", name: "Claude Sonnet 4.5" },
{ id: "claude-haiku-4.5", name: "Claude Haiku 4.5" },
{ id: "deepseek-3.2", name: "DeepSeek 3.2", strip: ["image", "audio"] },
{ id: "qwen3-coder-next", name: "Qwen3 Coder Next", strip: ["image", "audio"] },
{ id: "glm-5", name: "GLM 5" },
{ id: "MiniMax-M2.5", name: "MiniMax M2.5" },
// --- Thinking variants (alias to base; thinking is enabled at request time
// via <thinking_mode>enabled</thinking_mode> system-prompt injection) ---
{ id: "claude-sonnet-4.5-thinking", name: "Claude Sonnet 4.5 (Thinking)" },
{ id: "claude-haiku-4.5-thinking", name: "Claude Haiku 4.5 (Thinking)" },
// --- Agentic variants (synthetic; same upstream model + chunked-write
// system prompt to dodge Kiro's 2-3 min server timeout on big writes) ---
{ id: "claude-sonnet-4.5-agentic", name: "Claude Sonnet 4.5 (Agentic)" },
{ id: "claude-haiku-4.5-agentic", name: "Claude Haiku 4.5 (Agentic)" },
{ id: "claude-sonnet-4.5-thinking-agentic", name: "Claude Sonnet 4.5 (Thinking + Agentic)" },
{ id: "claude-haiku-4.5-thinking-agentic", name: "Claude Haiku 4.5 (Thinking + Agentic)" },
],
qd: [ // Qoder - tier + frontier models (server-published catalog)
// Tier models — pick a quality/cost tradeoff
{ id: "auto", name: "Qoder Auto" },
{ id: "ultimate", name: "Qoder Ultimate" },
{ id: "performance", name: "Qoder Performance" },
{ id: "efficient", name: "Qoder Efficient" },
{ id: "lite", name: "Qoder Lite" },
// Frontier models — pin a specific backing model
{ id: "qmodel", name: "Qwen 3.6 Plus (Qoder)" },
{ id: "qmodel_latest", name: "Qoder Qwen 3.7 Max" },
{ id: "dmodel", name: "DeepSeek V4 Pro (Qoder)" },
{ id: "dfmodel", name: "DeepSeek V4 Flash (Qoder)" },
{ id: "gm51model", name: "GLM 5.1 (Qoder)" },
{ id: "kmodel", name: "Kimi K2.6 (Qoder)" },
{ id: "mmodel", name: "MiniMax M2.7 (Qoder)" },
],
cu: [ // Cursor IDE
{ id: "default", name: "Auto (Server Picks)" },
{ id: "claude-4.5-opus-high-thinking", name: "Claude 4.5 Opus High Thinking" },
{ id: "claude-4.5-opus-high", name: "Claude 4.5 Opus High" },
{ id: "claude-4.5-sonnet-thinking", name: "Claude 4.5 Sonnet Thinking" },
{ id: "claude-4.5-sonnet", name: "Claude 4.5 Sonnet" },
{ id: "claude-4.5-haiku", name: "Claude 4.5 Haiku" },
{ id: "claude-4.5-opus", name: "Claude 4.5 Opus" },
{ id: "gpt-5.2-codex", name: "GPT 5.2 Codex" },
{ id: "claude-4.6-opus-max", name: "Claude 4.6 Opus Max" },
{ id: "claude-4.6-sonnet-medium-thinking", name: "Claude 4.6 Sonnet Medium Thinking" },
{ id: "kimi-k2.5", name: "Kimi K2.5" },
{ id: "gemini-3-flash-preview", name: "Gemini 3 Flash Preview" },
{ id: "gpt-5.2", name: "GPT 5.2" },
{ id: "gpt-5.3-codex", name: "GPT 5.3 Codex" },
],
kmc: [ // Kimi Coding
{ id: "kimi-k2.6", name: "Kimi K2.6" },
{ id: "kimi-k2.5", name: "Kimi K2.5" },
{ id: "kimi-k2.5-thinking", name: "Kimi K2.5 Thinking" },
{ id: "kimi-latest", name: "Kimi Latest" },
],
kc: [ // KiloCode
{ id: "anthropic/claude-sonnet-4-20250514", name: "Claude Sonnet 4" },
{ id: "anthropic/claude-opus-4-20250514", name: "Claude Opus 4" },
{ id: "google/gemini-2.5-pro", name: "Gemini 2.5 Pro" },
{ id: "google/gemini-2.5-flash", name: "Gemini 2.5 Flash" },
{ id: "openai/gpt-4.1", name: "GPT-4.1" },
{ id: "openai/o3", name: "o3" },
{ id: "deepseek/deepseek-chat", name: "DeepSeek Chat" },
{ id: "deepseek/deepseek-reasoner", name: "DeepSeek Reasoner" },
],
"opencode-go": [ // OpenCode Go subscription (API key)
{ id: "kimi-k2.6", name: "Kimi K2.6" },
{ id: "kimi-k2.5", name: "Kimi K2.5" },
{ id: "glm-5.1", name: "GLM 5.1" },
{ id: "glm-5", name: "GLM 5" },
{ id: "qwen3.5-plus", name: "Qwen 3.5 Plus" },
{ id: "qwen3.6-plus", name: "Qwen 3.6 Plus" },
{ id: "mimo-v2-pro", name: "MiMo V2 Pro" },
{ id: "mimo-v2-omni", name: "MiMo V2 Omni" },
{ id: "minimax-m2.7", name: "MiniMax M2.7", targetFormat: "claude" },
{ id: "minimax-m2.5", name: "MiniMax M2.5", targetFormat: "claude" },
],
oc: [ // OpenCode
// { id: "nemotron-3-super-free", name: "Nemotron 3 Super" },
// { id: "qwen3.6-plus-free", name: "Qwen 3.6 Plus" },
// { id: "big-pickle", name: "Big Pickle", targetFormat: "claude" },
// { id: "minimax-m2.5-free", name: "MiniMax M2.5", targetFormat: "claude" },
// { id: "trinity-large-preview-free", name: "Trinity Large Preview" },
],
mmf: [ // MiMo Free — free channel only serves mimo-auto
{ id: "mimo-auto", name: "MiMo Auto" },
],
cl: [ // Cline
{ id: "anthropic/claude-opus-4.7", name: "Claude Opus 4.7" },
{ id: "anthropic/claude-sonnet-4.6", name: "Claude Sonnet 4.6" },
{ id: "anthropic/claude-opus-4.6", name: "Claude Opus 4.6" },
{ id: "openai/gpt-5.3-codex", name: "GPT-5.3 Codex" },
{ id: "openai/gpt-5.4", name: "GPT-5.4" },
{ id: "google/gemini-3.1-pro-preview", name: "Gemini 3.1 Pro Preview" },
{ id: "google/gemini-3.1-flash-lite-preview", name: "Gemini 3.1 Flash Lite Preview" },
{ id: "kwaipilot/kat-coder-pro", name: "KAT Coder Pro" },
],
// API Key Providers (alias = id)
openai: [
// Flagship models
{ id: "gpt-5.4", name: "GPT-5.4" },
{ id: "gpt-5.4-mini", name: "GPT-5.4 Mini" },
{ id: "gpt-5.4-nano", name: "GPT-5.4 Nano" },
{ id: "gpt-5.2", name: "GPT-5.2" },
{ id: "gpt-5.1", name: "GPT-5.1" },
{ id: "gpt-5", name: "GPT-5" },
{ id: "gpt-5-mini", name: "GPT-5 Mini" },
{ id: "gpt-5-nano", name: "GPT-5 Nano" },
{ id: "gpt-4o", name: "GPT-4o" },
{ id: "gpt-4o-mini", name: "GPT-4o Mini" },
{ id: "gpt-4-turbo", name: "GPT-4 Turbo" },
{ id: "gpt-4.1", name: "GPT-4.1" },
{ id: "gpt-4.1-mini", name: "GPT-4.1 Mini" },
{ id: "gpt-4.1-nano", name: "GPT-4.1 Nano" },
// Reasoning models
{ id: "o3", name: "O3" },
{ id: "o3-mini", name: "O3 Mini" },
{ id: "o3-pro", name: "O3 Pro" },
{ id: "o4-mini", name: "O4 Mini" },
{ id: "o1", name: "O1" },
{ id: "o1-mini", name: "O1 Mini" },
// Embedding models
{ id: "text-embedding-3-large", name: "Text Embedding 3 Large", type: "embedding" },
{ id: "text-embedding-3-small", name: "Text Embedding 3 Small", type: "embedding" },
{ id: "text-embedding-ada-002", name: "Text Embedding Ada 002", type: "embedding" },
// TTS models
{ id: "tts-1", name: "TTS-1", type: "tts" },
{ id: "tts-1-hd", name: "TTS-1 HD", type: "tts" },
{ id: "gpt-4o-mini-tts", name: "GPT-4o Mini TTS", type: "tts" },
// STT models
{ id: "whisper-1", name: "Whisper 1", type: "stt", params: ["language", "response_format", "temperature", "prompt"] },
{ id: "gpt-4o-transcribe", name: "GPT-4o Transcribe", type: "stt", params: ["language", "response_format", "temperature", "prompt"] },
{ id: "gpt-4o-mini-transcribe", name: "GPT-4o Mini Transcribe", type: "stt", params: ["language", "response_format", "temperature", "prompt"] },
// Image models
{ id: "gpt-image-1", name: "GPT Image 1", type: "image", params: ["n", "size", "quality", "response_format"] },
{ id: "dall-e-3", name: "DALL-E 3", type: "image", params: ["size", "quality", "style", "response_format"] },
{ id: "dall-e-2", name: "DALL-E 2", type: "image", params: ["n", "size", "response_format"] },
],
anthropic: [
{ id: "claude-sonnet-4-20250514", name: "Claude Sonnet 4" },
{ id: "claude-opus-4-20250514", name: "Claude Opus 4" },
{ id: "claude-3-5-sonnet-20241022", name: "Claude 3.5 Sonnet" },
],
gemini: [
// Gemini 3.1 series
{ id: "gemini-3.1-pro-preview", name: "Gemini 3.1 Pro Preview" },
{ id: "gemini-3.1-flash-lite-preview", name: "Gemini 3.1 Flash Lite Preview" },
// Gemini 3 series
{ id: "gemini-3-flash-preview", name: "Gemini 3 Flash Preview" },
// Gemini 2.5 series
{ id: "gemini-2.5-pro", name: "Gemini 2.5 Pro" },
{ id: "gemini-2.5-flash", name: "Gemini 2.5 Flash" },
{ id: "gemini-2.5-flash-lite", name: "Gemini 2.5 Flash Lite" },
// Gemini 2.0 series (retiring June 1, 2026)
{ id: "gemini-2.0-flash", name: "Gemini 2.0 Flash" },
{ id: "gemini-2.0-flash-lite", name: "Gemini 2.0 Flash Lite" },
{ id: "gemma-4-31b-it", name: "Gemma 4 31B IT" },
// Embedding models
{ id: "gemini-embedding-2-preview", name: "Gemini Embedding 2 Preview", type: "embedding" },
{ id: "gemini-embedding-001", name: "Gemini Embedding 001", type: "embedding" },
{ id: "text-embedding-005", name: "Text Embedding 005", type: "embedding" },
{ id: "text-embedding-004", name: "Text Embedding 004 (Legacy)", type: "embedding" },
// Image models (Nano Banana)
{ id: "gemini-3.1-flash-image-preview", name: "Gemini 3.1 Flash Image (Nano Banana 2)", type: "image", params: [] },
{ id: "gemini-3-pro-image-preview", name: "Gemini 3 Pro Image (Nano Banana Pro)", type: "image", params: [] },
{ id: "gemini-2.5-flash-image", name: "Gemini 2.5 Flash Image (Nano Banana)", type: "image", params: [] },
// STT models (multimodal generateContent)
{ id: "gemini-2.5-pro", name: "Gemini 2.5 Pro (Best)", type: "stt", params: ["language", "prompt"] },
{ id: "gemini-2.5-flash", name: "Gemini 2.5 Flash", type: "stt", params: ["language", "prompt"] },
{ id: "gemini-2.5-flash-lite", name: "Gemini 2.5 Flash Lite (Cheapest)", type: "stt", params: ["language", "prompt"] },
{ id: "gemini-2.0-flash", name: "Gemini 2.0 Flash", type: "stt", params: ["language", "prompt"] },
],
openrouter: [
// Embedding models
{ id: "openai/text-embedding-3-large", name: "OpenAI Text Embedding 3 Large", type: "embedding" },
{ id: "openai/text-embedding-3-small", name: "OpenAI Text Embedding 3 Small", type: "embedding" },
{ id: "openai/text-embedding-ada-002", name: "OpenAI Text Embedding Ada 002", type: "embedding" },
{ id: "qwen/qwen3-embedding-8b", name: "Qwen3 Embedding 8B", type: "embedding" },
{ id: "perplexity/pplx-embed-v1-4b", name: "Perplexity Embed V1 4B", type: "embedding" },
{ id: "perplexity/pplx-embed-v1-0.6b", name: "Perplexity Embed V1 0.6B", type: "embedding" },
{ id: "nvidia/llama-nemotron-embed-vl-1b-v2:free", name: "NVIDIA Nemotron Embed VL 1B V2 (Free)", type: "embedding" },
// TTS models
{ id: "openai/gpt-4o-mini-tts", name: "GPT-4o Mini TTS", type: "tts" },
{ id: "openai/tts-1-hd", name: "TTS-1 HD", type: "tts" },
{ id: "openai/tts-1", name: "TTS-1", type: "tts" },
// Image models
{ id: "openai/dall-e-3", name: "DALL-E 3 (via OpenRouter)", type: "image", params: ["size", "quality", "style", "response_format"] },
{ id: "openai/gpt-image-1", name: "GPT Image 1 (via OpenRouter)", type: "image", params: ["n", "size", "quality", "response_format"] },
{ id: "google/imagen-3.0-generate-002", name: "Imagen 3 (via OpenRouter)", type: "image", params: ["n", "size"] },
{ id: "black-forest-labs/FLUX.1-schnell", name: "FLUX.1 Schnell (via OpenRouter)", type: "image", params: ["n", "size"] },
],
glm: [
{ id: "glm-5.1", name: "GLM 5.1" },
{ id: "glm-5", name: "GLM 5" },
{ id: "glm-4.7", name: "GLM 4.7" },
{ id: "glm-4.6v", name: "GLM 4.6V (Vision)" },
],
"glm-cn": [
{ id: "glm-5.1", name: "GLM 5.1" },
{ id: "glm-5", name: "GLM 5" },
{ id: "glm-4.7", name: "GLM-4.7" },
{ id: "glm-4.6", name: "GLM-4.6" },
{ id: "glm-4.5-air", name: "GLM-4.5-Air" },
],
kimi: [
{ id: "kimi-k2.6", name: "Kimi K2.6" },
{ id: "kimi-k2.5", name: "Kimi K2.5" },
{ id: "kimi-k2.5-thinking", name: "Kimi K2.5 Thinking" },
{ id: "kimi-latest", name: "Kimi Latest" },
],
minimax: [
{ id: "MiniMax-M3", name: "MiniMax M3", targetFormat: "claude" },
{ id: "MiniMax-M2.7", name: "MiniMax M2.7" },
{ id: "MiniMax-M2.5", name: "MiniMax M2.5" },
{ id: "MiniMax-M2.1", name: "MiniMax M2.1" },
// Image models
{ id: "minimax-image-01", name: "MiniMax Image 01", type: "image", params: ["n", "size", "response_format"] },
],
blackbox: [
{ id: "gpt-4o", name: "GPT-4o" },
{ id: "gpt-4o-mini", name: "GPT-4o mini" },
{ id: "claude-sonnet-4.6", name: "Claude Sonnet 4.6" },
{ id: "claude-sonnet-4.5", name: "Claude Sonnet 4.5" },
{ id: "claude-opus-4.6", name: "Claude Opus 4.6" },
{ id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6 (Legacy)" },
{ id: "claude-opus-4-6", name: "Claude Opus 4.6 (Legacy)" },
{ id: "deepseek-chat", name: "DeepSeek Chat" },
{ id: "deepseek-v3-671b", name: "DeepSeek V3 671B" },
{ id: "deepseek-r1", name: "DeepSeek R1" },
{ id: "o1", name: "OpenAI o1" },
{ id: "o3-mini", name: "OpenAI o3-mini" },
{ id: "gemini-2.5-flash", name: "Gemini 2.5 Flash" },
{ id: "gemini-3-flash-preview", name: "Gemini 3 Flash Preview" },
{ id: "qwen3-coder-plus", name: "Qwen3 Coder Plus" },
{ id: "qwen3-max", name: "Qwen3 Max" },
{ id: "qwen3-vl-plus", name: "Qwen3 VL Plus" },
],
"minimax-cn": [
{ id: "MiniMax-M3", name: "MiniMax M3", targetFormat: "claude" },
{ id: "MiniMax-M2.7", name: "MiniMax M2.7" },
{ id: "MiniMax-M2.5", name: "MiniMax M2.5" },
{ id: "MiniMax-M2.1", name: "MiniMax M2.1" },
],
alicode: [
{ id: "qwen3.5-plus", name: "Qwen3.5 Plus" },
{ id: "kimi-k2.5", name: "Kimi K2.5" },
{ id: "glm-5", name: "GLM 5" },
{ id: "MiniMax-M2.5", name: "MiniMax M2.5" },
{ id: "qwen3-max-2026-01-23", name: "Qwen3 Max" },
{ id: "qwen3-coder-next", name: "Qwen3 Coder Next" },
{ id: "qwen3-coder-plus", name: "Qwen3 Coder Plus" },
{ id: "glm-4.7", name: "GLM 4.7" },
],
"alicode-intl": [
{ id: "qwen3.5-plus", name: "Qwen3.5 Plus" },
{ id: "kimi-k2.5", name: "Kimi K2.5" },
{ id: "glm-5", name: "GLM 5" },
{ id: "MiniMax-M2.5", name: "MiniMax M2.5" },
{ id: "qwen3-coder-next", name: "Qwen3 Coder Next" },
{ id: "qwen3-coder-plus", name: "Qwen3 Coder Plus" },
{ id: "glm-4.7", name: "GLM 4.7" },
],
"volcengine-ark": [
{ id: "Doubao-Seed-2.0-Code", name: "Doubao-Seed-2.0-Code" },
{ id: "Doubao-Seed-2.0-pro", name: "Doubao-Seed-2.0-pro" },
{ id: "Doubao-Seed-2.0-lite", name: "Doubao-Seed-2.0-lite" },
{ id: "Doubao-Seed-Code", name: "Doubao-Seed-Code" },
{ id: "DeepSeek-V4-Flash", name: "DeepSeek-V4-Flash" },
{ id: "DeepSeek-V4-Pro", name: "DeepSeek-V4-Pro" },
{ id: "GLM-5.1", name: "GLM-5.1" },
{ id: "MiniMax-M2.7", name: "MiniMax-M2.7" },
{ id: "Kimi-K2.6", name: "Kimi-K2.6" },
],
"cloudflare-ai": [
{ id: "@cf/meta/llama-3.2-1b-instruct", name: "Llama 3.2 1B Instruct" },
{ id: "@cf/meta/llama-3.2-3b-instruct", name: "Llama 3.2 3B Instruct" },
{ id: "@cf/meta/llama-3.1-8b-instruct-fp8-fast", name: "Llama 3.1 8B Instruct FP8 Fast" },
{ id: "@cf/meta/llama-3.1-8b-instruct-awq", name: "Llama 3.1 8B Instruct AWQ" },
{ id: "@cf/mistralai/mistral-small-3.1-24b-instruct", name: "Mistral Small 3.1 24B Instruct" },
{ id: "@cf/meta/llama-3.1-70b-instruct-fp8-fast", name: "Llama 3.1 70B Instruct FP8 Fast" },
{ id: "@cf/meta/llama-3.3-70b-instruct-fp8-fast", name: "Llama 3.3 70B Instruct FP8 Fast" },
{ id: "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b", name: "DeepSeek R1 Distill Qwen 32B" },
{ id: "@cf/moonshotai/kimi-k2.5", name: "Kimi K2.5" },
{ id: "@cf/moonshotai/kimi-k2.6", name: "Kimi K2.6" },
{ id: "@cf/zai-org/glm-4.7-flash", name: "GLM 4.7 Flash" },
{ id: "@cf/qwen/qwq-32b", name: "QwQ 32B" },
{ id: "@cf/qwen/qwen2.5-coder-32b-instruct", name: "Qwen 2.5 Coder 32B Instruct" },
{ id: "@cf/black-forest-labs/flux-2-klein-9b", name: "FLUX.2 Klein 9B", type: "image", params: ["size"] },
{ id: "@cf/black-forest-labs/flux-2-klein-4b", name: "FLUX.2 Klein 4B", type: "image", params: ["size"] },
{ id: "@cf/black-forest-labs/flux-2-dev", name: "FLUX.2 Dev", type: "image", params: ["size"] },
{ id: "@cf/leonardo/lucid-origin", name: "Lucid Origin", type: "image", params: ["size"] },
{ id: "@cf/leonardo/phoenix-1.0", name: "Phoenix 1.0", type: "image", params: ["size"] },
{ id: "@cf/black-forest-labs/flux-1-schnell", name: "FLUX.1 Schnell", type: "image", params: ["size"] },
{ id: "@cf/bytedance/stable-diffusion-xl-lightning", name: "SDXL Lightning", type: "image", params: ["size"] },
{ id: "@cf/lykon/dreamshaper-8-lcm", name: "DreamShaper 8 LCM", type: "image", params: ["size"] },
{ id: "@cf/runwayml/stable-diffusion-v1-5-img2img", name: "Stable Diffusion v1.5 Img2Img", type: "image", params: ["size"], capabilities: ["edit"] },
{ id: "@cf/runwayml/stable-diffusion-v1-5-inpainting", name: "Stable Diffusion v1.5 Inpainting", type: "image", params: ["size"], capabilities: ["edit", "mask"] },
{ id: "@cf/stabilityai/stable-diffusion-xl-base-1.0", name: "SDXL Base 1.0", type: "image", params: ["size"] },
],
byteplus: [
{ id: "seed-2-0-pro-260328", name: "Seed 2.0 Pro" },
{ id: "seed-2-0-code-preview-260328", name: "Seed 2.0 Code Preview" },
{ id: "seed-2-0-mini-260215", name: "Seed 2.0 Mini" },
{ id: "seed-2-0-lite-260228", name: "Seed 2.0 Lite" },
{ id: "kimi-k2-thinking-251104", name: "Kimi K2 Thinking" },
{ id: "glm-4-7-251222", name: "GLM 4.7" },
{ id: "gpt-oss-120b-250805", name: "GPT-OSS-120B" },
],
deepseek: [
{ id: "deepseek-v4-pro", name: "DeepSeek V4 Pro" },
{ id: "deepseek-v4-pro-max", name: "DeepSeek V4 Pro Max", upstreamModelId: "deepseek-v4-pro" },
{ id: "deepseek-v4-pro-none", name: "DeepSeek V4 Pro No Thinking", upstreamModelId: "deepseek-v4-pro" },
{ id: "deepseek-v4-flash", name: "DeepSeek V4 Flash" },
{ id: "deepseek-chat", name: "DeepSeek V3.2 Chat" },
{ id: "deepseek-reasoner", name: "DeepSeek V3.2 Reasoner" },
],
commandcode: [
{ id: "deepseek/deepseek-v4-pro", name: "DeepSeek V4 Pro" },
{ id: "deepseek/deepseek-v4-flash", name: "DeepSeek V4 Flash" },
{ id: "moonshotai/Kimi-K2.6", name: "Kimi K2.6" },
{ id: "moonshotai/Kimi-K2.5", name: "Kimi K2.5" },
{ id: "zai-org/GLM-5.1", name: "GLM 5.1" },
{ id: "zai-org/GLM-5", name: "GLM 5" },
{ id: "MiniMaxAI/MiniMax-M2.7", name: "MiniMax M2.7" },
{ id: "MiniMaxAI/MiniMax-M2.5", name: "MiniMax M2.5" },
{ id: "Qwen/Qwen3.6-Max-Preview", name: "Qwen 3.6 Max Preview" },
{ id: "Qwen/Qwen3.6-Plus", name: "Qwen 3.6 Plus" },
{ id: "stepfun/Step-3.5-Flash", name: "Step 3.5 Flash" },
],
groq: [
{ id: "llama-3.3-70b-versatile", name: "Llama 3.3 70B" },
{ id: "meta-llama/llama-4-maverick-17b-128e-instruct", name: "Llama 4 Maverick" },
{ id: "qwen/qwen3-32b", name: "Qwen3 32B" },
{ id: "openai/gpt-oss-120b", name: "GPT-OSS 120B" },
// STT models
{ id: "whisper-large-v3", name: "Whisper Large v3", type: "stt", params: ["language", "response_format", "temperature", "prompt"] },
{ id: "whisper-large-v3-turbo", name: "Whisper Large v3 Turbo", type: "stt", params: ["language", "response_format", "temperature", "prompt"] },
{ id: "distil-whisper-large-v3-en", name: "Distil Whisper Large v3 EN", type: "stt", params: ["language", "response_format", "temperature", "prompt"] },
],
xai: [
{ id: "grok-4", name: "Grok 4" },
{ id: "grok-4-fast-reasoning", name: "Grok 4 Fast Reasoning" },
{ id: "grok-code-fast-1", name: "Grok Code Fast" },
{ id: "grok-3", name: "Grok 3" },
{ id: "grok-2-image-1212", name: "Grok 2 Image", type: "image", params: ["n", "response_format"] },
],
mistral: [
{ id: "mistral-large-latest", name: "Mistral Large 3" },
{ id: "codestral-latest", name: "Codestral" },
{ id: "mistral-medium-latest", name: "Mistral Medium 3" },
{ id: "mistral-embed", name: "Mistral Embed", type: "embedding" },
],
perplexity: [
{ id: "sonar-pro", name: "Sonar Pro" },
{ id: "sonar", name: "Sonar" },
],
together: [
{ id: "meta-llama/Llama-3.3-70B-Instruct-Turbo", name: "Llama 3.3 70B Turbo" },
{ id: "deepseek-ai/DeepSeek-R1", name: "DeepSeek R1" },
{ id: "Qwen/Qwen3-235B-A22B", name: "Qwen3 235B" },
{ id: "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8", name: "Llama 4 Maverick" },
{ id: "BAAI/bge-large-en-v1.5", name: "BGE Large EN v1.5", type: "embedding" },
{ id: "togethercomputer/m2-bert-80M-8k-retrieval", name: "M2 BERT 80M 8K", type: "embedding" },
],
fireworks: [
{ id: "accounts/fireworks/models/deepseek-v3p1", name: "DeepSeek V3.1" },
{ id: "accounts/fireworks/models/llama-v3p3-70b-instruct", name: "Llama 3.3 70B" },
{ id: "accounts/fireworks/models/qwen3-235b-a22b", name: "Qwen3 235B" },
{ id: "nomic-ai/nomic-embed-text-v1.5", name: "Nomic Embed Text v1.5", type: "embedding" },
],
cerebras: [
{ id: "gpt-oss-120b", name: "GPT OSS 120B" },
{ id: "zai-glm-4.7", name: "ZAI GLM 4.7" },
{ id: "llama-3.3-70b", name: "Llama 3.3 70B" },
{ id: "llama-4-scout-17b-16e-instruct", name: "Llama 4 Scout" },
{ id: "qwen-3-235b-a22b-instruct-2507", name: "Qwen3 235B A22B" },
{ id: "qwen-3-32b", name: "Qwen3 32B" },
],
cohere: [
{ id: "command-r-plus-08-2024", name: "Command R+ (Aug 2024)" },
{ id: "command-r-08-2024", name: "Command R (Aug 2024)" },
{ id: "command-a-03-2025", name: "Command A (Mar 2025)" },
],
nvidia: [
{ id: "minimaxai/minimax-m2.7", name: "Minimax M2.7" },
{ id: "z-ai/glm4.7", name: "GLM 4.7" },
{ id: "nvidia/nv-embedqa-e5-v5", name: "NV EmbedQA E5 v5", type: "embedding" },
// STT models
{ id: "nvidia/parakeet-ctc-1.1b-asr", name: "Parakeet CTC 1.1B", type: "stt", params: ["language"] },
],
nebius: [
{ id: "meta-llama/Llama-3.3-70B-Instruct", name: "Llama 3.3 70B Instruct" },
{ id: "Qwen/Qwen3-Embedding-8B", name: "Qwen3 Embedding 8B", type: "embedding" },
],
"voyage-ai": [
{ id: "voyage-3-large", name: "Voyage 3 Large", type: "embedding" },
{ id: "voyage-3.5", name: "Voyage 3.5", type: "embedding" },
{ id: "voyage-3.5-lite", name: "Voyage 3.5 Lite", type: "embedding" },
{ id: "voyage-code-3", name: "Voyage Code 3", type: "embedding" },
{ id: "voyage-finance-2", name: "Voyage Finance 2", type: "embedding" },
{ id: "voyage-law-2", name: "Voyage Law 2", type: "embedding" },
{ id: "voyage-multilingual-2", name: "Voyage Multilingual 2", type: "embedding" },
],
siliconflow: [
// DeepSeek models
{ id: "deepseek-ai/DeepSeek-V4-Pro", name: "DeepSeek V4 Pro" },
{ id: "deepseek-ai/DeepSeek-V4-Flash", name: "DeepSeek V4 Flash" },
{ id: "deepseek-ai/DeepSeek-V3.2", name: "DeepSeek V3.2" },
{ id: "deepseek-ai/DeepSeek-V3.2-Exp", name: "DeepSeek V3.2 Exp" },
{ id: "deepseek-ai/DeepSeek-V3.1", name: "DeepSeek V3.1" },
{ id: "deepseek-ai/DeepSeek-V3.1-Terminus", name: "DeepSeek V3.1 Terminus" },
{ id: "deepseek-ai/DeepSeek-R1", name: "DeepSeek R1" },
// Qwen models
{ id: "Qwen/Qwen3.5-397B-A17B", name: "Qwen 3.5 397B A17B" },
{ id: "Qwen/Qwen3.5-122B-A10B", name: "Qwen 3.5 122B A10B" },
// GLM models
{ id: "zai-org/GLM-5.1", name: "GLM 5.1" },
{ id: "zai-org/GLM-5", name: "GLM 5" },
// Kimi models
{ id: "moonshotai/Kimi-K2.6", name: "Kimi K2.6" },
{ id: "moonshotai/Kimi-K2.5", name: "Kimi K2.5" },
// Other models
{ id: "openai/gpt-oss-120b", name: "GPT OSS 120B" },
{ id: "MiniMaxAI/MiniMax-M2.5", name: "MiniMax M2.5" },
{ id: "inclusionAI/Ling-flash-2.0", name: "Ling Flash 2.0" },
],
"xiaomi-mimo": [
{ id: "mimo-v2.5-pro", name: "MiMo V2.5 Pro" },
{ id: "mimo-v2.5", name: "MiMo V2.5" },
{ id: "mimo-v2-omni", name: "MiMo V2 Omni" },
{ id: "mimo-v2-flash", name: "MiMo V2 Flash" },
],
"xiaomi-tokenplan": [
{ id: "mimo-v2.5-pro", name: "MiMo V2.5 Pro" },
{ id: "mimo-v2.5-pro-claude", name: "MiMo V2.5 Pro (Claude Native)", targetFormat: "claude", upstreamModelId: "mimo-v2.5-pro" },
{ id: "mimo-v2.5", name: "MiMo V2.5" },
{ id: "mimo-v2-pro", name: "MiMo V2 Pro" },
{ id: "mimo-v2-omni", name: "MiMo V2 Omni" },
{ id: "mimo-v2-tts", name: "MiMo V2 TTS" },
{ id: "mimo-v2.5-tts", name: "MiMo V2.5 TTS" },
{ id: "mimo-v2.5-tts-voiceclone", name: "MiMo V2.5 TTS Voice Clone" },
{ id: "mimo-v2.5-tts-voicedesign", name: "MiMo V2.5 TTS Voice Design" },
],
hyperbolic: [
{ id: "Qwen/QwQ-32B", name: "QwQ 32B" },
{ id: "deepseek-ai/DeepSeek-R1", name: "DeepSeek R1" },
{ id: "deepseek-ai/DeepSeek-V3", name: "DeepSeek V3" },
{ id: "meta-llama/Llama-3.3-70B-Instruct", name: "Llama 3.3 70B" },
{ id: "meta-llama/Llama-3.2-3B-Instruct", name: "Llama 3.2 3B" },
{ id: "Qwen/Qwen2.5-72B-Instruct", name: "Qwen 2.5 72B" },
{ id: "Qwen/Qwen2.5-Coder-32B-Instruct", name: "Qwen 2.5 Coder 32B" },
{ id: "NousResearch/Hermes-3-Llama-3.1-70B", name: "Hermes 3 70B" },
],
ollama: [
{ id: "gpt-oss:120b", name: "GPT OSS 120B" },
{ id: "kimi-k2.5", name: "Kimi K2.5" },
{ id: "glm-5", name: "GLM 5" },
{ id: "minimax-m2.5", name: "MiniMax M2.5" },
{ id: "glm-4.7-flash", name: "GLM 4.7 Flash" },
{ id: "qwen3.5", name: "Qwen3.5" },
],
vertex: [
{ id: "gemini-3.1-pro-preview", name: "Gemini 3.1 Pro Preview" },
{ id: "gemini-3.1-flash-lite-preview", name: "Gemini 3.1 Flash Lite Preview" },
{ id: "gemini-3-flash-preview", name: "Gemini 3 Flash Preview" },
{ id: "gemini-2.5-flash", name: "Gemini 2.5 Flash" },
],
"vertex-partner": [
{ id: "deepseek-ai/deepseek-v3.2-maas", name: "DeepSeek V3.2 (Vertex)" },
{ id: "qwen/qwen3-next-80b-a3b-thinking-maas", name: "Qwen3 Next 80B Thinking (Vertex)" },
{ id: "qwen/qwen3-next-80b-a3b-instruct-maas", name: "Qwen3 Next 80B Instruct (Vertex)" },
{ id: "zai-org/glm-5-maas", name: "GLM-5 (Vertex)" },
],
"grok-web": [
{ id: "grok-3", name: "Grok 3" },
{ id: "grok-3-mini", name: "Grok 3 Mini (Thinking)" },
{ id: "grok-3-thinking", name: "Grok 3 Thinking" },
{ id: "grok-4", name: "Grok 4" },
{ id: "grok-4-mini", name: "Grok 4 Mini (Thinking)" },
{ id: "grok-4-thinking", name: "Grok 4 Thinking" },
{ id: "grok-4-heavy", name: "Grok 4 Heavy (SuperGrok)" },
{ id: "grok-4.1-mini", name: "Grok 4.1 Mini (Thinking)" },
{ id: "grok-4.1-fast", name: "Grok 4.1 Fast" },
{ id: "grok-4.1-expert", name: "Grok 4.1 Expert" },
{ id: "grok-4.1-thinking", name: "Grok 4.1 Thinking" },
{ id: "grok-4.2", name: "Grok 4.2 (4.20 Beta)" },
],
"perplexity-web": [
{ id: "pplx-auto", name: "Perplexity Auto (Free)" },
{ id: "pplx-sonar", name: "Perplexity Sonar" },
{ id: "pplx-gpt", name: "GPT-5.4 (via Perplexity)" },
{ id: "pplx-gemini", name: "Gemini 3.1 Pro (via Perplexity)" },
{ id: "pplx-sonnet", name: "Claude Sonnet 4.6 (via Perplexity)" },
{ id: "pplx-opus", name: "Claude Opus 4.6 (via Perplexity)" },
{ id: "pplx-nemotron", name: "Nemotron 3 Super (via Perplexity)" },
],
// TTS entries are loaded from ttsModels.js via buildTtsProviderModels()
...buildTtsProviderModels(),
// Image providers
nanobanana: [
{ id: "nanobanana-flash", name: "NanoBanana Flash", type: "image", params: ["n", "size"] },
{ id: "nanobanana-pro", name: "NanoBanana Pro", type: "image", params: ["n", "size"] },
],
sdwebui: [
{ id: "stable-diffusion-v1-5", name: "Stable Diffusion v1.5", type: "image", params: ["n", "size"] },
{ id: "sdxl-base-1.0", name: "SDXL Base 1.0", type: "image", params: ["n", "size"] },
],
comfyui: [
{ id: "flux-dev", name: "FLUX Dev", type: "image", params: ["n", "size"] },
{ id: "sdxl", name: "SDXL", type: "image", params: ["n", "size"] },
],
huggingface: [
{ id: "black-forest-labs/FLUX.1-schnell", name: "FLUX.1 Schnell", type: "image", params: [] },
{ id: "stabilityai/stable-diffusion-xl-base-1.0", name: "SDXL Base 1.0", type: "image", params: [] },
// STT models
{ id: "openai/whisper-large-v3", name: "Whisper Large v3 (HF)", type: "stt", params: ["language"] },
{ id: "openai/whisper-small", name: "Whisper Small (HF)", type: "stt", params: ["language"] },
],
// === Free-tier providers (synced from OmniRoute) ===
agentrouter: [
{ id: "claude-opus-4-6", name: "Claude 4.6 Opus" },
{ id: "claude-haiku-4-5-20251001", name: "Claude 4.5 Haiku" },
{ id: "glm-5.1", name: "GLM 5.1" },
{ id: "deepseek-v3.2", name: "DeepSeek V3.2" },
],
aimlapi: [
{ id: "gpt-4o", name: "GPT-4o" },
{ id: "gpt-4o-mini", name: "GPT-4o Mini" },
{ id: "claude-3-5-sonnet-20241022", name: "Claude 3.5 Sonnet" },
{ id: "gemini-2.0-flash-exp", name: "Gemini 2.0 Flash" },
{ id: "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo", name: "Llama 3.1 70B" },
],
novita: [
{ id: "deepseek/deepseek-r1", name: "DeepSeek R1" },
{ id: "deepseek/deepseek-v3", name: "DeepSeek V3" },
{ id: "meta-llama/llama-3.3-70b-instruct", name: "Llama 3.3 70B" },
{ id: "qwen/qwen-2.5-72b-instruct", name: "Qwen 2.5 72B" },
],
modal: [
{ id: "auto", name: "Auto (User-hosted)" },
],
reka: [
{ id: "reka-flash-3", name: "Reka Flash 3" },
{ id: "reka-edge-2603", name: "Reka Edge 2603" },
],
nlpcloud: [
{ id: "chatdolphin", name: "ChatDolphin" },
{ id: "dolphin", name: "Dolphin" },
{ id: "finetuned-llama-3-70b", name: "Llama 3 70B (Finetuned)" },
],
bazaarlink: [
{ id: "auto:free", name: "Auto Free (Zero Cost)" },
{ id: "auto", name: "Auto (Best Model)" },
],
completions: [
{ id: "claude-opus-4", name: "Claude Opus 4" },
{ id: "claude-sonnet-4", name: "Claude Sonnet 4" },
{ id: "gpt-4o", name: "GPT-4o" },
{ id: "gemini-2.0-flash", name: "Gemini 2.0 Flash" },
],
enally: [
{ id: "gpt-4o", name: "GPT-4o" },
{ id: "gpt-4o-mini", name: "GPT-4o Mini" },
{ id: "claude-3-5-sonnet", name: "Claude 3.5 Sonnet" },
],
freetheai: [
{ id: "gpt-4o", name: "GPT-4o" },
{ id: "claude-3-5-sonnet", name: "Claude 3.5 Sonnet" },
{ id: "gemini-1.5-pro", name: "Gemini 1.5 Pro" },
{ id: "deepseek-chat", name: "DeepSeek Chat" },
],
llm7: [
{ id: "gpt-4o-mini", name: "GPT-4o Mini" },
{ id: "gpt-4.1-mini", name: "GPT-4.1 Mini" },
{ id: "gemini-1.5-flash", name: "Gemini 1.5 Flash" },
],
lepton: [
{ id: "llama3-1-405b", name: "Llama 3.1 405B" },
{ id: "llama3-1-70b", name: "Llama 3.1 70B" },
{ id: "llama3-1-8b", name: "Llama 3.1 8B" },
{ id: "mixtral-8x7b", name: "Mixtral 8x7B" },
],
kluster: [
{ id: "deepseek-ai/DeepSeek-R1", name: "DeepSeek R1" },
{ id: "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8", name: "Llama 4 Maverick" },
{ id: "meta-llama/Llama-4-Scout-17B-16E-Instruct", name: "Llama 4 Scout" },
{ id: "Qwen/Qwen3-235B-A22B-Instruct", name: "Qwen3 235B" },
],
ai21: [
{ id: "jamba-large", name: "Jamba 1.5 Large" },
{ id: "jamba-mini", name: "Jamba 1.5 Mini" },
],
"inference-net": [
{ id: "meta-llama/llama-3.3-70b-instruct/fp-16", name: "Llama 3.3 70B" },
{ id: "deepseek/deepseek-v3-0324", name: "DeepSeek V3" },
{ id: "mistralai/mistral-nemo-12b-instruct/fp-16", name: "Mistral Nemo 12B" },
],
predibase: [
{ id: "llama-3-2-3b-instruct", name: "Llama 3.2 3B" },
{ id: "llama-3-1-8b-instruct", name: "Llama 3.1 8B" },
{ id: "qwen2-5-7b-instruct", name: "Qwen 2.5 7B" },
],
bytez: [
{ id: "meta-llama/Llama-3.3-70B-Instruct", name: "Llama 3.3 70B" },
{ id: "mistralai/Mistral-7B-Instruct-v0.3", name: "Mistral 7B v0.3" },
{ id: "Qwen/Qwen2.5-72B-Instruct", name: "Qwen 2.5 72B" },
],
morph: [
{ id: "morph-v3-large", name: "Morph V3 Large" },
{ id: "morph-v3-fast", name: "Morph V3 Fast" },
],
longcat: [
{ id: "LongCat-Flash-Chat", name: "LongCat Flash Chat" },
{ id: "LongCat-Flash-Thinking", name: "LongCat Flash Thinking" },
{ id: "LongCat-Flash-Lite", name: "LongCat Flash Lite" },
],
puter: [
{ id: "gpt-5", name: "GPT-5" },
{ id: "claude-opus-4", name: "Claude Opus 4" },
{ id: "gemini-3-pro-preview", name: "Gemini 3 Pro" },
{ id: "grok-4", name: "Grok 4" },
{ id: "deepseek-chat", name: "DeepSeek V3" },
],
uncloseai: [
{ id: "auto", name: "Auto (Free)" },
{ id: "gpt-4o-mini", name: "GPT-4o Mini" },
],
scaleway: [
{ id: "qwen3-235b-a22b-instruct-2507", name: "Qwen3 235B" },
{ id: "llama-3.3-70b-instruct", name: "Llama 3.3 70B" },
{ id: "mistral-small-3.1-24b-instruct-2503", name: "Mistral Small 3.1" },
],
deepinfra: [
{ id: "meta-llama/Meta-Llama-3.1-70B-Instruct", name: "Llama 3.1 70B" },
{ id: "deepseek-ai/DeepSeek-V3", name: "DeepSeek V3" },
{ id: "Qwen/Qwen2.5-72B-Instruct", name: "Qwen 2.5 72B" },
],
sambanova: [
{ id: "Meta-Llama-3.1-405B-Instruct", name: "Llama 3.1 405B" },
{ id: "Meta-Llama-3.1-70B-Instruct", name: "Llama 3.1 70B" },
{ id: "Meta-Llama-3.1-8B-Instruct", name: "Llama 3.1 8B" },
],
nscale: [
{ id: "meta-llama/Llama-3.3-70B-Instruct", name: "Llama 3.3 70B" },
{ id: "Qwen/Qwen2.5-Coder-32B-Instruct", name: "Qwen 2.5 Coder 32B" },
],
baseten: [
{ id: "deepseek-ai/DeepSeek-R1", name: "DeepSeek R1" },
{ id: "meta-llama/Llama-3.3-70B-Instruct", name: "Llama 3.3 70B" },
],
publicai: [
{ id: "auto", name: "Auto (Community)" },
],
"nous-research": [
{ id: "Hermes-4-405B", name: "Hermes 4 405B" },
{ id: "Hermes-4-70B", name: "Hermes 4 70B" },
],
glhf: [
{ id: "hf:meta-llama/Meta-Llama-3.1-405B-Instruct", name: "Llama 3.1 405B" },
{ id: "hf:meta-llama/Meta-Llama-3.1-70B-Instruct", name: "Llama 3.1 70B" },
{ id: "hf:Qwen/Qwen2.5-72B-Instruct", name: "Qwen 2.5 72B" },
],
deepgram: [
{ id: "nova-3", name: "Nova 3", type: "stt", params: ["language"] },
{ id: "nova-2", name: "Nova 2", type: "stt", params: ["language"] },
{ id: "whisper-large", name: "Whisper Large", type: "stt", params: ["language"] },
],
assemblyai: [
{ id: "universal-3-pro", name: "Universal 3 Pro", type: "stt", params: ["language"] },
{ id: "universal-2", name: "Universal 2", type: "stt", params: ["language"] },
],
"fal-ai": [
{ id: "fal-ai/flux/schnell", name: "FLUX Schnell", type: "image", params: ["n", "size"] },
{ id: "fal-ai/flux/dev", name: "FLUX Dev", type: "image", params: ["n", "size"] },
{ id: "fal-ai/flux-pro/v1.1", name: "FLUX Pro v1.1", type: "image", params: ["n", "size"] },
{ id: "fal-ai/flux-pro/v1.1-ultra", name: "FLUX Pro v1.1 Ultra", type: "image", params: ["n", "size"] },
{ id: "fal-ai/recraft-v3", name: "Recraft V3", type: "image", params: ["n", "size", "style"] },
{ id: "fal-ai/ideogram/v2", name: "Ideogram V2", type: "image", params: ["n", "size", "style"] },
{ id: "fal-ai/stable-diffusion-v35-large", name: "SD 3.5 Large", type: "image", params: ["n", "size"] },
],
"stability-ai": [
{ id: "stable-image-ultra", name: "Stable Image Ultra", type: "image", params: ["size"] },
{ id: "stable-image-core", name: "Stable Image Core", type: "image", params: ["size", "style"] },
{ id: "sd3.5-large", name: "Stable Diffusion 3.5 Large", type: "image", params: ["size"] },
{ id: "sd3.5-large-turbo", name: "Stable Diffusion 3.5 Large Turbo", type: "image", params: ["size"] },
{ id: "sd3.5-medium", name: "Stable Diffusion 3.5 Medium", type: "image", params: ["size"] },
],
"black-forest-labs": [
{ id: "flux-pro-1.1", name: "FLUX Pro 1.1", type: "image", params: ["n", "size"] },
{ id: "flux-pro-1.1-ultra", name: "FLUX Pro 1.1 Ultra", type: "image", params: ["size"] },
{ id: "flux-pro", name: "FLUX Pro", type: "image", params: ["n", "size"] },
{ id: "flux-dev", name: "FLUX Dev", type: "image", params: ["n", "size"] },
{ id: "flux-kontext-pro", name: "FLUX Kontext Pro (Edit)", type: "image", params: ["size"], capabilities: ["edit"] },
{ id: "flux-kontext-max", name: "FLUX Kontext Max (Edit)", type: "image", params: ["size"], capabilities: ["edit"] },
],
recraft: [
{ id: "recraftv3", name: "Recraft V3", type: "image", params: ["n", "size", "style"] },
{ id: "recraftv2", name: "Recraft V2", type: "image", params: ["n", "size", "style"] },
],
runwayml: [
{ id: "gen4_image", name: "Gen-4 Image", type: "image", params: ["size"] },
{ id: "gen4_image_turbo", name: "Gen-4 Image Turbo", type: "image", params: ["size"] },
{ id: "gen4_turbo", name: "Gen-4 Turbo", type: "video", params: [] },
{ id: "gen3a_turbo", name: "Gen-3 Alpha Turbo", type: "video", params: [] },
],
};
// Helper functions
export function getProviderModels(aliasOrId) {
+2 -423
View File
@@ -1,426 +1,5 @@
import { platform, arch } from "os";
// === OS/Arch helpers ===
function mapStainlessOs() {
switch (platform()) {
case "darwin": return "MacOS";
case "win32": return "Windows";
case "linux": return "Linux";
case "freebsd": return "FreeBSD";
default: return `Other::${platform()}`;
}
}
function mapStainlessArch() {
switch (arch()) {
case "x64": return "x64";
case "arm64": return "arm64";
case "ia32": return "x86";
default: return `other::${arch()}`;
}
}
// Shared Claude-compatible API headers (reused across claude-format providers)
const CLAUDE_API_HEADERS = {
"Anthropic-Version": "2023-06-01",
"Anthropic-Beta": "claude-code-20250219,interleaved-thinking-2025-05-14"
};
// Full Claude CLI fingerprint — required by providers that gate on client identity (e.g. agentrouter)
const CLAUDE_CLI_SPOOF_HEADERS = {
"Anthropic-Version": "2023-06-01",
"Anthropic-Beta": "claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advanced-tool-use-2025-11-20,effort-2025-11-24,structured-outputs-2025-12-15,fast-mode-2026-02-01,redact-thinking-2026-02-12,token-efficient-tools-2026-03-28",
"Anthropic-Dangerous-Direct-Browser-Access": "true",
"User-Agent": "claude-cli/2.1.92 (external, sdk-cli)",
"X-App": "cli",
"X-Stainless-Helper-Method": "stream",
"X-Stainless-Retry-Count": "0",
"X-Stainless-Runtime-Version": "v24.14.0",
"X-Stainless-Package-Version": "0.80.0",
"X-Stainless-Runtime": "node",
"X-Stainless-Lang": "js",
"X-Stainless-Arch": mapStainlessArch(),
"X-Stainless-Os": mapStainlessOs(),
"X-Stainless-Timeout": "600"
};
// Shared baseUrls
const KIMI_CODING_BASE_URL = "https://api.kimi.com/coding/v1/messages";
// Apply shared transport defaults without changing output shape
function defineProviders(raw) {
const out = {};
for (const [id, cfg] of Object.entries(raw)) {
out[id] = { ...cfg };
if (!out[id].format) out[id].format = "openai";
}
return out;
}
export const PROVIDERS = defineProviders({
claude: {
baseUrl: "https://api.anthropic.com/v1/messages",
format: "claude",
headers: { ...CLAUDE_CLI_SPOOF_HEADERS },
clientId: "9d1c250a-e61b-44d9-88ed-5944d1962f5e",
tokenUrl: "https://api.anthropic.com/v1/oauth/token"
},
gemini: {
baseUrl: "https://generativelanguage.googleapis.com/v1beta/models",
format: "gemini",
clientId: "681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",
clientSecret: "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"
},
"gemini-cli": {
baseUrl: "https://cloudcode-pa.googleapis.com/v1internal",
format: "gemini-cli",
clientId: "681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",
clientSecret: "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"
},
codex: {
baseUrl: "https://chatgpt.com/backend-api/codex/responses",
format: "openai-responses",
headers: {
"originator": "codex_cli_rs",
"User-Agent": "codex_cli_rs/0.136.0"
},
clientId: "app_EMoamEEZ73f0CkXaXp7hrann",
tokenUrl: "https://auth.openai.com/oauth/token"
},
qwen: {
baseUrl: "https://portal.qwen.ai/v1/chat/completions",
clientId: "f0304373b74a44d2b584a3fb70ca9e56",
tokenUrl: "https://chat.qwen.ai/api/v1/oauth2/token",
authUrl: "https://chat.qwen.ai/api/v1/oauth2/device/code"
},
iflow: {
baseUrl: "https://apis.iflow.cn/v1/chat/completions",
headers: { "User-Agent": "iFlow-Cli" },
clientId: "10009311001",
clientSecret: "4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",
tokenUrl: "https://iflow.cn/oauth/token",
authUrl: "https://iflow.cn/oauth"
},
qoder: {
// The qoder executor builds the full URL itself (it has to append
// ?Encode=1 + sigPath query params and bypass any provider-level URL
// rewriting). baseUrl is kept for compatibility with introspection
// helpers but the executor ignores it.
baseUrl: "https://api3.qoder.sh/algo/api/v2/service/pro/sse/agent_chat_generation",
headers: {},
// Reasoning models think long before first byte; raise both timeouts.
timeoutMs: 120000,
stallTimeoutMs: 120000,
},
antigravity: {
baseUrls: [
"https://daily-cloudcode-pa.googleapis.com",
"https://daily-cloudcode-pa.sandbox.googleapis.com",
],
format: "antigravity",
headers: { "User-Agent": `antigravity/1.107.0 ${platform()}/${arch()}` },
clientId: "1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",
clientSecret: "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"
},
openrouter: {
baseUrl: "https://openrouter.ai/api/v1/chat/completions",
headers: {
"HTTP-Referer": "https://endpoint-proxy.local",
"X-Title": "Endpoint Proxy"
}
},
openai: {
baseUrl: "https://api.openai.com/v1/chat/completions",
},
"vercel-ai-gateway": {
baseUrl: "https://ai-gateway.vercel.sh/v1/chat/completions",
retry: { 429: 2 }
},
glm: {
baseUrl: "https://api.z.ai/api/anthropic/v1/messages",
format: "claude",
headers: { ...CLAUDE_API_HEADERS }
},
"glm-cn": {
baseUrl: "https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",
headers: {}
},
kimi: {
baseUrl: KIMI_CODING_BASE_URL,
format: "claude",
headers: { ...CLAUDE_API_HEADERS }
},
minimax: {
baseUrl: "https://api.minimax.io/anthropic/v1/messages",
format: "claude",
headers: { ...CLAUDE_API_HEADERS }
},
"minimax-cn": {
baseUrl: "https://api.minimaxi.com/anthropic/v1/messages",
format: "claude",
headers: { ...CLAUDE_API_HEADERS }
},
alicode: {
baseUrl: "https://coding.dashscope.aliyuncs.com/v1/chat/completions",
headers: {}
},
"alicode-intl": {
baseUrl: "https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",
headers: {}
},
"volcengine-ark": {
baseUrl: "https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",
headers: {}
},
byteplus: {
baseUrl: "https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",
headers: {}
},
github: {
baseUrl: "https://api.githubcopilot.com/chat/completions",
responsesUrl: "https://api.githubcopilot.com/responses",
headers: {
"copilot-integration-id": "vscode-chat",
"editor-version": "vscode/1.110.0",
"editor-plugin-version": "copilot-chat/0.38.0",
"user-agent": "GitHubCopilotChat/0.38.0",
"openai-intent": "conversation-panel",
"x-github-api-version": "2025-04-01",
"x-vscode-user-agent-library-version": "electron-fetch",
"X-Initiator": "user",
"Accept": "application/json",
"Content-Type": "application/json"
},
clientId: "Iv1.b507a08c87ecfe98"
},
kiro: {
// All three hosts resolve to the same regional CodeWhisperer streaming service
// (GenerateAssistantResponse). They are alternate DNS surfaces, NOT separate quota
// buckets — AWS throttles per authenticated identity (token + profileArn), not per
// hostname. Listing them enables edge-level failover (5xx / connect timeout / a
// degraded surface); it does NOT multiply 429 headroom. To actually spread 429 load,
// add multiple Kiro accounts — account rotation in sse/handlers/chat.js handles that.
// Order: newest Kiro IDE endpoint first, legacy AWS domains as fallback.
baseUrl: "https://runtime.us-east-1.kiro.dev/generateAssistantResponse",
baseUrls: [
"https://runtime.us-east-1.kiro.dev/generateAssistantResponse",
"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",
"https://q.us-east-1.amazonaws.com/generateAssistantResponse",
],
format: "kiro",
// 429 = identity-level throttle; retrying the same identity only spams AWS.
// Rotate across the 3 host surfaces once each (shouldRetry) without per-host retries.
retry: { 429: 0 },
headers: {
"Content-Type": "application/json",
"Accept": "application/vnd.amazon.eventstream",
"X-Amz-Target": "AmazonCodeWhispererStreamingService.GenerateAssistantResponse",
"User-Agent": "AWS-SDK-JS/3.0.0 kiro-ide/1.0.0",
"X-Amz-User-Agent": "aws-sdk-js/3.0.0 kiro-ide/1.0.0"
},
tokenUrl: "https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",
authUrl: "https://prod.us-east-1.auth.desktop.kiro.dev"
},
cursor: {
baseUrl: "https://api2.cursor.sh",
chatPath: "/aiserver.v1.ChatService/StreamUnifiedChatWithTools",
format: "cursor",
headers: {
"connect-accept-encoding": "gzip",
"connect-protocol-version": "1",
"Content-Type": "application/connect+proto",
"User-Agent": "connect-es/1.6.1"
},
clientVersion: "3.1.0"
},
"kimi-coding": {
baseUrl: KIMI_CODING_BASE_URL,
format: "claude",
headers: { ...CLAUDE_API_HEADERS },
clientId: "17e5f671-d194-4dfb-9706-5516cb48c098",
tokenUrl: "https://auth.kimi.com/api/oauth/token",
refreshUrl: "https://auth.kimi.com/api/oauth/token"
},
kilocode: {
baseUrl: "https://api.kilo.ai/api/openrouter/chat/completions",
headers: {}
},
cline: {
baseUrl: "https://api.cline.bot/api/v1/chat/completions",
headers: {
"HTTP-Referer": "https://cline.bot",
"X-Title": "Cline"
},
tokenUrl: "https://api.cline.bot/api/v1/auth/token",
refreshUrl: "https://api.cline.bot/api/v1/auth/refresh"
},
nvidia: {
baseUrl: "https://integrate.api.nvidia.com/v1/chat/completions",
},
anthropic: {
baseUrl: "https://api.anthropic.com/v1/messages",
format: "claude",
headers: { ...CLAUDE_API_HEADERS }
},
deepseek: {
baseUrl: "https://api.deepseek.com/chat/completions",
},
commandcode: {
baseUrl: "https://api.commandcode.ai/alpha/generate",
format: "commandcode",
headers: {
"x-command-code-version": "0.25.7",
"x-cli-environment": "cli"
}
},
groq: {
baseUrl: "https://api.groq.com/openai/v1/chat/completions",
},
xai: {
baseUrl: "https://api.x.ai/v1/chat/completions",
responsesUrl: "https://api.x.ai/v1/responses",
clientId: "b1a00492-073a-47ea-816f-4c329264a828",
tokenUrl: "https://auth.x.ai/oauth2/token",
refreshUrl: "https://auth.x.ai/oauth2/token"
},
mistral: {
baseUrl: "https://api.mistral.ai/v1/chat/completions",
},
perplexity: {
baseUrl: "https://api.perplexity.ai/chat/completions",
},
together: {
baseUrl: "https://api.together.xyz/v1/chat/completions",
},
fireworks: {
baseUrl: "https://api.fireworks.ai/inference/v1/chat/completions",
},
cerebras: {
baseUrl: "https://api.cerebras.ai/v1/chat/completions",
},
cohere: {
baseUrl: "https://api.cohere.ai/v1/chat/completions",
},
nebius: {
baseUrl: "https://api.studio.nebius.ai/v1/chat/completions",
},
siliconflow: {
baseUrl: "https://api.siliconflow.com/v1/chat/completions",
},
hyperbolic: {
baseUrl: "https://api.hyperbolic.xyz/v1/chat/completions",
},
deepgram: {
baseUrl: "https://api.deepgram.com/v1/listen",
},
assemblyai: {
baseUrl: "https://api.assemblyai.com/v1/audio/transcriptions",
},
nanobanana: {
baseUrl: "https://api.nanobananaapi.ai/v1/chat/completions",
},
chutes: {
baseUrl: "https://llm.chutes.ai/v1/chat/completions",
},
ollama: {
baseUrl: "https://ollama.com/api/chat",
format: "ollama"
},
"ollama-local": {
baseUrl: "http://localhost:11434/api/chat",
format: "ollama"
},
// Vertex AI - Gemini models via Service Account JSON
// baseUrl is not used; VertexExecutor.buildUrl() constructs it dynamically
vertex: {
baseUrl: "https://aiplatform.googleapis.com",
format: "vertex"
},
// Vertex AI - Partner models (Claude, Llama, Mistral, GLM) via SA JSON
// Uses OpenAI-compatible global endpoint (or rawPredict for Anthropic)
"vertex-partner": {
baseUrl: "https://aiplatform.googleapis.com",
},
// GitLab Duo - OpenAI-compatible chat endpoint
gitlab: {
baseUrl: "https://gitlab.com/api/v4/chat/completions",
},
// CodeBuddy (Tencent) - uses device_code polling auth, no chat completions baseUrl needed
codebuddy: {
baseUrl: "https://copilot.tencent.com/v1/chat/completions",
},
opencode: {
baseUrl: "https://opencode.ai",
headers: { "x-opencode-client": "desktop" },
noAuth: true
},
"opencode-go": {
baseUrl: "https://opencode.ai/zen/go/v1/chat/completions",
headers: {}
},
"grok-web": {
baseUrl: "https://grok.com/rest/app-chat/conversations/new",
format: "grok-web",
authType: "cookie"
},
"perplexity-web": {
baseUrl: "https://www.perplexity.ai/rest/sse/perplexity_ask",
format: "perplexity-web",
authType: "cookie"
},
azure: {
baseUrl: "",
headers: {}
},
// Cloudflare Workers AI - {accountId} resolved from credentials.providerSpecificData.accountId
"cloudflare-ai": {
baseUrl: "https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions",
},
"xiaomi-mimo": {
baseUrl: "https://api.xiaomimimo.com/v1/chat/completions",
},
"mimo-free": { baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", noAuth: true },
mmf: { baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", noAuth: true },
"xiaomi-tokenplan": {
baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1/chat/completions",
},
// Region map for Xiaomi MiMo Token Plan (keys are cluster-specific)
// Used by resolveXiaomiTokenplanBaseUrl below
// === Free-tier providers (synced from OmniRoute) ===
// Claude-format with Claude CLI header spoofing (auth: x-api-key)
agentrouter: { baseUrl: "https://agentrouter.org/v1/messages", format: "claude", headers: { ...CLAUDE_CLI_SPOOF_HEADERS } },
// OpenAI-compatible (auth: bearer)
aimlapi: { baseUrl: "https://api.aimlapi.com/v1/chat/completions" },
novita: { baseUrl: "https://api.novita.ai/v3/openai/chat/completions" },
modal: { baseUrl: "https://api.modal.com/v1/chat/completions" },
reka: { baseUrl: "https://api.reka.ai/v1/chat/completions" },
nlpcloud: { baseUrl: "https://api.nlpcloud.io/v1/gpu/chatbot" },
bazaarlink: { baseUrl: "https://bazaarlink.ai/api/v1/chat/completions" },
completions: { baseUrl: "https://completions.me/api/v1/chat/completions" },
// enally uses X-API-Key header (not bearer); handled in validate route
enally: { baseUrl: "https://ai.enally.in/v1/chat/completions", authHeader: "x-api-key" },
freetheai: { baseUrl: "https://api.freetheai.xyz/v1/chat/completions" },
llm7: { baseUrl: "https://api.llm7.io/v1/chat/completions" },
lepton: { baseUrl: "https://api.lepton.ai/api/v1/chat/completions" },
kluster: { baseUrl: "https://api.kluster.ai/v1/chat/completions" },
ai21: { baseUrl: "https://api.ai21.com/studio/v1/chat/completions" },
"inference-net": { baseUrl: "https://api.inference.net/v1/chat/completions" },
predibase: { baseUrl: "https://serving.app.predibase.com/v1/chat/completions" },
bytez: { baseUrl: "https://api.bytez.com/models/v2" },
morph: { baseUrl: "https://api.morphllm.com/v1/chat/completions" },
longcat: { baseUrl: "https://api.longcat.chat/openai/v1/chat/completions" },
puter: { baseUrl: "https://api.puter.com/puterai/openai/v1/chat/completions" },
uncloseai: { baseUrl: "https://hermes.ai.unturf.com/v1/chat/completions", noAuth: true },
scaleway: { baseUrl: "https://api.scaleway.ai/v1/chat/completions" },
deepinfra: { baseUrl: "https://api.deepinfra.com/v1/openai/chat/completions" },
sambanova: { baseUrl: "https://api.sambanova.ai/v1/chat/completions" },
nscale: { baseUrl: "https://inference.api.nscale.com/v1/chat/completions" },
baseten: { baseUrl: "https://inference.baseten.co/v1/chat/completions" },
publicai: { baseUrl: "https://api.publicai.co/v1/chat/completions" },
"nous-research": { baseUrl: "https://inference-api.nousresearch.com/v1/chat/completions" },
glhf: { baseUrl: "https://glhf.chat/api/openai/v1/chat/completions" },
blackbox: { baseUrl: "https://api.blackbox.ai/chat/completions" },
});
// Barrel: PROVIDERS now built from providers/registry (transport co-located with models)
export { PROVIDERS } from "../providers/index.js";
export const OLLAMA_LOCAL_DEFAULT_HOST = "http://localhost:11434";
+22
View File
@@ -0,0 +1,22 @@
// Single source: build PROVIDERS + PROVIDER_MODELS from registry/{id}.js (transport + models co-located).
import REGISTRY from "./registry/index.js";
import { PROVIDER_DEFAULTS } from "./schema.js";
import { buildTtsProviderModels } from "../config/ttsModels.js";
// transport: re-apply shared default (format:"openai") like the old defineProviders()
function buildTransport(transport) {
const t = { ...transport };
if (!t.format) t.format = PROVIDER_DEFAULTS.format;
return t;
}
export const PROVIDERS = {};
export const PROVIDER_MODELS = {};
for (const entry of REGISTRY) {
if (entry.transport) PROVIDERS[entry.id] = buildTransport(entry.transport);
// models omitted (undefined) → provider has no model list key; [] is a valid explicit empty list
if (entry.models !== undefined) PROVIDER_MODELS[entry.alias] = entry.models;
}
// TTS model/voice tables keyed by special names (openai-tts-models, ...), not provider ids
Object.assign(PROVIDER_MODELS, buildTtsProviderModels());
+20
View File
@@ -0,0 +1,20 @@
// Codex auto-generates a "-review" variant for each llm model (review quota family)
const CODEX_REVIEW_SUFFIX = "-review";
export function withCodexReviewModels(models) {
return models.flatMap((model) => {
if ((model.type || "llm") !== "llm" || model.id.endsWith(CODEX_REVIEW_SUFFIX)) {
return [model];
}
return [
model,
{
...model,
id: `${model.id}${CODEX_REVIEW_SUFFIX}`,
name: `${model.name} Review`,
upstreamModelId: model.upstreamModelId || model.id,
quotaFamily: "review"
}
];
});
}
@@ -0,0 +1,17 @@
import { CLAUDE_CLI_SPOOF_HEADERS } from "../shared.js";
export default {
id: "agentrouter",
alias: "agentrouter",
transport: {
baseUrl: "https://agentrouter.org/v1/messages",
format: "claude",
headers: { ...CLAUDE_CLI_SPOOF_HEADERS }
},
models: [
{ id: "claude-opus-4-6", name: "Claude 4.6 Opus" },
{ id: "claude-haiku-4-5-20251001", name: "Claude 4.5 Haiku" },
{ id: "glm-5.1", name: "GLM 5.1" },
{ id: "deepseek-v3.2", name: "DeepSeek V3.2" }
]
};
+17
View File
@@ -0,0 +1,17 @@
export default {
"id": "ai21",
"alias": "ai21",
"transport": {
"baseUrl": "https://api.ai21.com/studio/v1/chat/completions"
},
"models": [
{
"id": "jamba-large",
"name": "Jamba 1.5 Large"
},
{
"id": "jamba-mini",
"name": "Jamba 1.5 Mini"
}
]
};
+29
View File
@@ -0,0 +1,29 @@
export default {
"id": "aimlapi",
"alias": "aimlapi",
"transport": {
"baseUrl": "https://api.aimlapi.com/v1/chat/completions"
},
"models": [
{
"id": "gpt-4o",
"name": "GPT-4o"
},
{
"id": "gpt-4o-mini",
"name": "GPT-4o Mini"
},
{
"id": "claude-3-5-sonnet-20241022",
"name": "Claude 3.5 Sonnet"
},
{
"id": "gemini-2.0-flash-exp",
"name": "Gemini 2.0 Flash"
},
{
"id": "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo",
"name": "Llama 3.1 70B"
}
]
};
@@ -0,0 +1,38 @@
export default {
"id": "alicode-intl",
"alias": "alicode-intl",
"transport": {
"baseUrl": "https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",
"headers": {}
},
"models": [
{
"id": "qwen3.5-plus",
"name": "Qwen3.5 Plus"
},
{
"id": "kimi-k2.5",
"name": "Kimi K2.5"
},
{
"id": "glm-5",
"name": "GLM 5"
},
{
"id": "MiniMax-M2.5",
"name": "MiniMax M2.5"
},
{
"id": "qwen3-coder-next",
"name": "Qwen3 Coder Next"
},
{
"id": "qwen3-coder-plus",
"name": "Qwen3 Coder Plus"
},
{
"id": "glm-4.7",
"name": "GLM 4.7"
}
]
};
+42
View File
@@ -0,0 +1,42 @@
export default {
"id": "alicode",
"alias": "alicode",
"transport": {
"baseUrl": "https://coding.dashscope.aliyuncs.com/v1/chat/completions",
"headers": {}
},
"models": [
{
"id": "qwen3.5-plus",
"name": "Qwen3.5 Plus"
},
{
"id": "kimi-k2.5",
"name": "Kimi K2.5"
},
{
"id": "glm-5",
"name": "GLM 5"
},
{
"id": "MiniMax-M2.5",
"name": "MiniMax M2.5"
},
{
"id": "qwen3-max-2026-01-23",
"name": "Qwen3 Max"
},
{
"id": "qwen3-coder-next",
"name": "Qwen3 Coder Next"
},
{
"id": "qwen3-coder-plus",
"name": "Qwen3 Coder Plus"
},
{
"id": "glm-4.7",
"name": "GLM 4.7"
}
]
};
+16
View File
@@ -0,0 +1,16 @@
import { CLAUDE_API_HEADERS } from "../shared.js";
export default {
id: "anthropic",
alias: "anthropic",
transport: {
baseUrl: "https://api.anthropic.com/v1/messages",
format: "claude",
headers: { ...CLAUDE_API_HEADERS }
},
models: [
{ id: "claude-sonnet-4-20250514", name: "Claude Sonnet 4" },
{ id: "claude-opus-4-20250514", name: "Claude Opus 4" },
{ id: "claude-3-5-sonnet-20241022", name: "Claude 3.5 Sonnet" }
]
};
@@ -0,0 +1,27 @@
import { platform, arch } from "os";
export default {
id: "antigravity",
alias: "ag",
transport: {
baseUrls: [
"https://daily-cloudcode-pa.googleapis.com",
"https://daily-cloudcode-pa.sandbox.googleapis.com"
],
format: "antigravity",
headers: { "User-Agent": `antigravity/1.107.0 ${platform()}/${arch()}` },
clientId: "1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",
clientSecret: "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"
},
models: [
{ id: "gemini-3-flash-agent", name: "Gemini 3.5 Flash (High)" },
{ id: "gemini-3.5-flash-low", name: "Gemini 3.5 Flash (Medium)" },
{ id: "gemini-3.5-flash-extra-low", name: "Gemini 3.5 Flash (Low)" },
{ id: "gemini-pro-agent", name: "Gemini 3.1 Pro (High)" },
{ id: "gemini-3.1-pro-low", name: "Gemini 3.1 Pro (Low)" },
{ id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6 (Thinking)" },
{ id: "claude-opus-4-6-thinking", name: "Claude Opus 4.6 (Thinking)" },
{ id: "gpt-oss-120b-medium", name: "GPT-OSS 120B (Medium)" },
{ id: "gemini-3-flash", name: "Gemini 3 Flash", thinking: false }
]
};
+25
View File
@@ -0,0 +1,25 @@
export default {
"id": "assemblyai",
"alias": "assemblyai",
"transport": {
"baseUrl": "https://api.assemblyai.com/v1/audio/transcriptions"
},
"models": [
{
"id": "universal-3-pro",
"name": "Universal 3 Pro",
"type": "stt",
"params": [
"language"
]
},
{
"id": "universal-2",
"name": "Universal 2",
"type": "stt",
"params": [
"language"
]
}
]
};
+8
View File
@@ -0,0 +1,8 @@
export default {
"id": "azure",
"alias": "azure",
"transport": {
"baseUrl": "",
"headers": {}
}
};
+17
View File
@@ -0,0 +1,17 @@
export default {
"id": "baseten",
"alias": "baseten",
"transport": {
"baseUrl": "https://inference.baseten.co/v1/chat/completions"
},
"models": [
{
"id": "deepseek-ai/DeepSeek-R1",
"name": "DeepSeek R1"
},
{
"id": "meta-llama/Llama-3.3-70B-Instruct",
"name": "Llama 3.3 70B"
}
]
};
+17
View File
@@ -0,0 +1,17 @@
export default {
"id": "bazaarlink",
"alias": "bazaarlink",
"transport": {
"baseUrl": "https://bazaarlink.ai/api/v1/chat/completions"
},
"models": [
{
"id": "auto:free",
"name": "Auto Free (Zero Cost)"
},
{
"id": "auto",
"name": "Auto (Best Model)"
}
]
};
@@ -0,0 +1,64 @@
export default {
"id": "black-forest-labs",
"alias": "black-forest-labs",
"transport": null,
"models": [
{
"id": "flux-pro-1.1",
"name": "FLUX Pro 1.1",
"type": "image",
"params": [
"n",
"size"
]
},
{
"id": "flux-pro-1.1-ultra",
"name": "FLUX Pro 1.1 Ultra",
"type": "image",
"params": [
"size"
]
},
{
"id": "flux-pro",
"name": "FLUX Pro",
"type": "image",
"params": [
"n",
"size"
]
},
{
"id": "flux-dev",
"name": "FLUX Dev",
"type": "image",
"params": [
"n",
"size"
]
},
{
"id": "flux-kontext-pro",
"name": "FLUX Kontext Pro (Edit)",
"type": "image",
"params": [
"size"
],
"capabilities": [
"edit"
]
},
{
"id": "flux-kontext-max",
"name": "FLUX Kontext Max (Edit)",
"type": "image",
"params": [
"size"
],
"capabilities": [
"edit"
]
}
]
};
+77
View File
@@ -0,0 +1,77 @@
export default {
"id": "blackbox",
"alias": "blackbox",
"transport": {
"baseUrl": "https://api.blackbox.ai/chat/completions"
},
"models": [
{
"id": "gpt-4o",
"name": "GPT-4o"
},
{
"id": "gpt-4o-mini",
"name": "GPT-4o mini"
},
{
"id": "claude-sonnet-4.6",
"name": "Claude Sonnet 4.6"
},
{
"id": "claude-sonnet-4.5",
"name": "Claude Sonnet 4.5"
},
{
"id": "claude-opus-4.6",
"name": "Claude Opus 4.6"
},
{
"id": "claude-sonnet-4-6",
"name": "Claude Sonnet 4.6 (Legacy)"
},
{
"id": "claude-opus-4-6",
"name": "Claude Opus 4.6 (Legacy)"
},
{
"id": "deepseek-chat",
"name": "DeepSeek Chat"
},
{
"id": "deepseek-v3-671b",
"name": "DeepSeek V3 671B"
},
{
"id": "deepseek-r1",
"name": "DeepSeek R1"
},
{
"id": "o1",
"name": "OpenAI o1"
},
{
"id": "o3-mini",
"name": "OpenAI o3-mini"
},
{
"id": "gemini-2.5-flash",
"name": "Gemini 2.5 Flash"
},
{
"id": "gemini-3-flash-preview",
"name": "Gemini 3 Flash Preview"
},
{
"id": "qwen3-coder-plus",
"name": "Qwen3 Coder Plus"
},
{
"id": "qwen3-max",
"name": "Qwen3 Max"
},
{
"id": "qwen3-vl-plus",
"name": "Qwen3 VL Plus"
}
]
};
+38
View File
@@ -0,0 +1,38 @@
export default {
"id": "byteplus",
"alias": "byteplus",
"transport": {
"baseUrl": "https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",
"headers": {}
},
"models": [
{
"id": "seed-2-0-pro-260328",
"name": "Seed 2.0 Pro"
},
{
"id": "seed-2-0-code-preview-260328",
"name": "Seed 2.0 Code Preview"
},
{
"id": "seed-2-0-mini-260215",
"name": "Seed 2.0 Mini"
},
{
"id": "seed-2-0-lite-260228",
"name": "Seed 2.0 Lite"
},
{
"id": "kimi-k2-thinking-251104",
"name": "Kimi K2 Thinking"
},
{
"id": "glm-4-7-251222",
"name": "GLM 4.7"
},
{
"id": "gpt-oss-120b-250805",
"name": "GPT-OSS-120B"
}
]
};
+21
View File
@@ -0,0 +1,21 @@
export default {
"id": "bytez",
"alias": "bytez",
"transport": {
"baseUrl": "https://api.bytez.com/models/v2"
},
"models": [
{
"id": "meta-llama/Llama-3.3-70B-Instruct",
"name": "Llama 3.3 70B"
},
{
"id": "mistralai/Mistral-7B-Instruct-v0.3",
"name": "Mistral 7B v0.3"
},
{
"id": "Qwen/Qwen2.5-72B-Instruct",
"name": "Qwen 2.5 72B"
}
]
};
+33
View File
@@ -0,0 +1,33 @@
export default {
"id": "cerebras",
"alias": "cerebras",
"transport": {
"baseUrl": "https://api.cerebras.ai/v1/chat/completions"
},
"models": [
{
"id": "gpt-oss-120b",
"name": "GPT OSS 120B"
},
{
"id": "zai-glm-4.7",
"name": "ZAI GLM 4.7"
},
{
"id": "llama-3.3-70b",
"name": "Llama 3.3 70B"
},
{
"id": "llama-4-scout-17b-16e-instruct",
"name": "Llama 4 Scout"
},
{
"id": "qwen-3-235b-a22b-instruct-2507",
"name": "Qwen3 235B A22B"
},
{
"id": "qwen-3-32b",
"name": "Qwen3 32B"
}
]
};
+7
View File
@@ -0,0 +1,7 @@
export default {
"id": "chutes",
"alias": "chutes",
"transport": {
"baseUrl": "https://llm.chutes.ai/v1/chat/completions"
}
};
+22
View File
@@ -0,0 +1,22 @@
import { CLAUDE_CLI_SPOOF_HEADERS } from "../shared.js";
export default {
id: "claude",
alias: "cc",
transport: {
baseUrl: "https://api.anthropic.com/v1/messages",
format: "claude",
headers: { ...CLAUDE_CLI_SPOOF_HEADERS },
clientId: "9d1c250a-e61b-44d9-88ed-5944d1962f5e",
tokenUrl: "https://api.anthropic.com/v1/oauth/token"
},
models: [
{ id: "claude-opus-4-8", name: "Claude Opus 4.8" },
{ id: "claude-opus-4-7", name: "Claude Opus 4.7" },
{ id: "claude-opus-4-6", name: "Claude Opus 4.6" },
{ id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6" },
{ id: "claude-opus-4-5-20251101", name: "Claude 4.5 Opus" },
{ id: "claude-sonnet-4-5-20250929", name: "Claude 4.5 Sonnet" },
{ id: "claude-haiku-4-5-20251001", name: "Claude 4.5 Haiku" }
]
};
+47
View File
@@ -0,0 +1,47 @@
export default {
"id": "cline",
"alias": "cl",
"transport": {
"baseUrl": "https://api.cline.bot/api/v1/chat/completions",
"headers": {
"HTTP-Referer": "https://cline.bot",
"X-Title": "Cline"
},
"tokenUrl": "https://api.cline.bot/api/v1/auth/token",
"refreshUrl": "https://api.cline.bot/api/v1/auth/refresh"
},
"models": [
{
"id": "anthropic/claude-opus-4.7",
"name": "Claude Opus 4.7"
},
{
"id": "anthropic/claude-sonnet-4.6",
"name": "Claude Sonnet 4.6"
},
{
"id": "anthropic/claude-opus-4.6",
"name": "Claude Opus 4.6"
},
{
"id": "openai/gpt-5.3-codex",
"name": "GPT-5.3 Codex"
},
{
"id": "openai/gpt-5.4",
"name": "GPT-5.4"
},
{
"id": "google/gemini-3.1-pro-preview",
"name": "Gemini 3.1 Pro Preview"
},
{
"id": "google/gemini-3.1-flash-lite-preview",
"name": "Gemini 3.1 Flash Lite Preview"
},
{
"id": "kwaipilot/kat-coder-pro",
"name": "KAT Coder Pro"
}
]
};
@@ -0,0 +1,156 @@
export default {
"id": "cloudflare-ai",
"alias": "cloudflare-ai",
"transport": {
"baseUrl": "https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions"
},
"models": [
{
"id": "@cf/meta/llama-3.2-1b-instruct",
"name": "Llama 3.2 1B Instruct"
},
{
"id": "@cf/meta/llama-3.2-3b-instruct",
"name": "Llama 3.2 3B Instruct"
},
{
"id": "@cf/meta/llama-3.1-8b-instruct-fp8-fast",
"name": "Llama 3.1 8B Instruct FP8 Fast"
},
{
"id": "@cf/meta/llama-3.1-8b-instruct-awq",
"name": "Llama 3.1 8B Instruct AWQ"
},
{
"id": "@cf/mistralai/mistral-small-3.1-24b-instruct",
"name": "Mistral Small 3.1 24B Instruct"
},
{
"id": "@cf/meta/llama-3.1-70b-instruct-fp8-fast",
"name": "Llama 3.1 70B Instruct FP8 Fast"
},
{
"id": "@cf/meta/llama-3.3-70b-instruct-fp8-fast",
"name": "Llama 3.3 70B Instruct FP8 Fast"
},
{
"id": "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",
"name": "DeepSeek R1 Distill Qwen 32B"
},
{
"id": "@cf/moonshotai/kimi-k2.5",
"name": "Kimi K2.5"
},
{
"id": "@cf/moonshotai/kimi-k2.6",
"name": "Kimi K2.6"
},
{
"id": "@cf/zai-org/glm-4.7-flash",
"name": "GLM 4.7 Flash"
},
{
"id": "@cf/qwen/qwq-32b",
"name": "QwQ 32B"
},
{
"id": "@cf/qwen/qwen2.5-coder-32b-instruct",
"name": "Qwen 2.5 Coder 32B Instruct"
},
{
"id": "@cf/black-forest-labs/flux-2-klein-9b",
"name": "FLUX.2 Klein 9B",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/black-forest-labs/flux-2-klein-4b",
"name": "FLUX.2 Klein 4B",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/black-forest-labs/flux-2-dev",
"name": "FLUX.2 Dev",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/leonardo/lucid-origin",
"name": "Lucid Origin",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/leonardo/phoenix-1.0",
"name": "Phoenix 1.0",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/black-forest-labs/flux-1-schnell",
"name": "FLUX.1 Schnell",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/bytedance/stable-diffusion-xl-lightning",
"name": "SDXL Lightning",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/lykon/dreamshaper-8-lcm",
"name": "DreamShaper 8 LCM",
"type": "image",
"params": [
"size"
]
},
{
"id": "@cf/runwayml/stable-diffusion-v1-5-img2img",
"name": "Stable Diffusion v1.5 Img2Img",
"type": "image",
"params": [
"size"
],
"capabilities": [
"edit"
]
},
{
"id": "@cf/runwayml/stable-diffusion-v1-5-inpainting",
"name": "Stable Diffusion v1.5 Inpainting",
"type": "image",
"params": [
"size"
],
"capabilities": [
"edit",
"mask"
]
},
{
"id": "@cf/stabilityai/stable-diffusion-xl-base-1.0",
"name": "SDXL Base 1.0",
"type": "image",
"params": [
"size"
]
}
]
};
+7
View File
@@ -0,0 +1,7 @@
export default {
"id": "codebuddy",
"alias": "codebuddy",
"transport": {
"baseUrl": "https://copilot.tencent.com/v1/chat/completions"
}
};
+30
View File
@@ -0,0 +1,30 @@
import { withCodexReviewModels } from "../models/helpers.js";
export default {
id: "codex",
alias: "cx",
transport: {
baseUrl: "https://chatgpt.com/backend-api/codex/responses",
format: "openai-responses",
headers: {
"originator": "codex_cli_rs",
"User-Agent": "codex_cli_rs/0.136.0"
},
clientId: "app_EMoamEEZ73f0CkXaXp7hrann",
tokenUrl: "https://auth.openai.com/oauth/token"
},
models: withCodexReviewModels([
{ id: "gpt-5.5", name: "GPT 5.5" },
{ id: "gpt-5.4", name: "GPT 5.4" },
{ id: "gpt-5.4-mini", name: "GPT 5.4 Mini" },
{ id: "gpt-5.3-codex", name: "GPT 5.3 Codex" },
{ id: "gpt-5.3-codex-xhigh", name: "GPT 5.3 Codex (xHigh)" },
{ id: "gpt-5.3-codex-high", name: "GPT 5.3 Codex (High)" },
{ id: "gpt-5.3-codex-low", name: "GPT 5.3 Codex (Low)" },
{ id: "gpt-5.3-codex-none", name: "GPT 5.3 Codex (None)" },
{ id: "gpt-5.3-codex-spark", name: "GPT 5.3 Codex Spark" },
{ id: "gpt-5.5-image", name: "GPT 5.5 Image", type: "image", capabilities: ["text2img", "edit"], params: ["size", "quality", "background", "image_detail", "output_format"] },
{ id: "gpt-5.4-image", name: "GPT 5.4 Image", type: "image", capabilities: ["text2img", "edit"], params: ["size", "quality", "background", "image_detail", "output_format"] },
{ id: "gpt-5.3-image", name: "GPT 5.3 Image", type: "image", capabilities: ["text2img", "edit"], params: ["size", "quality", "background", "image_detail", "output_format"] }
])
};
+21
View File
@@ -0,0 +1,21 @@
export default {
"id": "cohere",
"alias": "cohere",
"transport": {
"baseUrl": "https://api.cohere.ai/v1/chat/completions"
},
"models": [
{
"id": "command-r-plus-08-2024",
"name": "Command R+ (Aug 2024)"
},
{
"id": "command-r-08-2024",
"name": "Command R (Aug 2024)"
},
{
"id": "command-a-03-2025",
"name": "Command A (Mar 2025)"
}
]
};
+25
View File
@@ -0,0 +1,25 @@
export default {
"id": "comfyui",
"alias": "comfyui",
"transport": null,
"models": [
{
"id": "flux-dev",
"name": "FLUX Dev",
"type": "image",
"params": [
"n",
"size"
]
},
{
"id": "sdxl",
"name": "SDXL",
"type": "image",
"params": [
"n",
"size"
]
}
]
};
@@ -0,0 +1,58 @@
export default {
"id": "commandcode",
"alias": "commandcode",
"transport": {
"baseUrl": "https://api.commandcode.ai/alpha/generate",
"format": "commandcode",
"headers": {
"x-command-code-version": "0.25.7",
"x-cli-environment": "cli"
}
},
"models": [
{
"id": "deepseek/deepseek-v4-pro",
"name": "DeepSeek V4 Pro"
},
{
"id": "deepseek/deepseek-v4-flash",
"name": "DeepSeek V4 Flash"
},
{
"id": "moonshotai/Kimi-K2.6",
"name": "Kimi K2.6"
},
{
"id": "moonshotai/Kimi-K2.5",
"name": "Kimi K2.5"
},
{
"id": "zai-org/GLM-5.1",
"name": "GLM 5.1"
},
{
"id": "zai-org/GLM-5",
"name": "GLM 5"
},
{
"id": "MiniMaxAI/MiniMax-M2.7",
"name": "MiniMax M2.7"
},
{
"id": "MiniMaxAI/MiniMax-M2.5",
"name": "MiniMax M2.5"
},
{
"id": "Qwen/Qwen3.6-Max-Preview",
"name": "Qwen 3.6 Max Preview"
},
{
"id": "Qwen/Qwen3.6-Plus",
"name": "Qwen 3.6 Plus"
},
{
"id": "stepfun/Step-3.5-Flash",
"name": "Step 3.5 Flash"
}
]
};
@@ -0,0 +1,25 @@
export default {
"id": "completions",
"alias": "completions",
"transport": {
"baseUrl": "https://completions.me/api/v1/chat/completions"
},
"models": [
{
"id": "claude-opus-4",
"name": "Claude Opus 4"
},
{
"id": "claude-sonnet-4",
"name": "Claude Sonnet 4"
},
{
"id": "gpt-4o",
"name": "GPT-4o"
},
{
"id": "gemini-2.0-flash",
"name": "Gemini 2.0 Flash"
}
]
};
+74
View File
@@ -0,0 +1,74 @@
export default {
"id": "cursor",
"alias": "cu",
"transport": {
"baseUrl": "https://api2.cursor.sh",
"chatPath": "/aiserver.v1.ChatService/StreamUnifiedChatWithTools",
"format": "cursor",
"headers": {
"connect-accept-encoding": "gzip",
"connect-protocol-version": "1",
"Content-Type": "application/connect+proto",
"User-Agent": "connect-es/1.6.1"
},
"clientVersion": "3.1.0"
},
"models": [
{
"id": "default",
"name": "Auto (Server Picks)"
},
{
"id": "claude-4.5-opus-high-thinking",
"name": "Claude 4.5 Opus High Thinking"
},
{
"id": "claude-4.5-opus-high",
"name": "Claude 4.5 Opus High"
},
{
"id": "claude-4.5-sonnet-thinking",
"name": "Claude 4.5 Sonnet Thinking"
},
{
"id": "claude-4.5-sonnet",
"name": "Claude 4.5 Sonnet"
},
{
"id": "claude-4.5-haiku",
"name": "Claude 4.5 Haiku"
},
{
"id": "claude-4.5-opus",
"name": "Claude 4.5 Opus"
},
{
"id": "gpt-5.2-codex",
"name": "GPT 5.2 Codex"
},
{
"id": "claude-4.6-opus-max",
"name": "Claude 4.6 Opus Max"
},
{
"id": "claude-4.6-sonnet-medium-thinking",
"name": "Claude 4.6 Sonnet Medium Thinking"
},
{
"id": "kimi-k2.5",
"name": "Kimi K2.5"
},
{
"id": "gemini-3-flash-preview",
"name": "Gemini 3 Flash Preview"
},
{
"id": "gpt-5.2",
"name": "GPT 5.2"
},
{
"id": "gpt-5.3-codex",
"name": "GPT 5.3 Codex"
}
]
};
+33
View File
@@ -0,0 +1,33 @@
export default {
"id": "deepgram",
"alias": "deepgram",
"transport": {
"baseUrl": "https://api.deepgram.com/v1/listen"
},
"models": [
{
"id": "nova-3",
"name": "Nova 3",
"type": "stt",
"params": [
"language"
]
},
{
"id": "nova-2",
"name": "Nova 2",
"type": "stt",
"params": [
"language"
]
},
{
"id": "whisper-large",
"name": "Whisper Large",
"type": "stt",
"params": [
"language"
]
}
]
};
+21
View File
@@ -0,0 +1,21 @@
export default {
"id": "deepinfra",
"alias": "deepinfra",
"transport": {
"baseUrl": "https://api.deepinfra.com/v1/openai/chat/completions"
},
"models": [
{
"id": "meta-llama/Meta-Llama-3.1-70B-Instruct",
"name": "Llama 3.1 70B"
},
{
"id": "deepseek-ai/DeepSeek-V3",
"name": "DeepSeek V3"
},
{
"id": "Qwen/Qwen2.5-72B-Instruct",
"name": "Qwen 2.5 72B"
}
]
};
+35
View File
@@ -0,0 +1,35 @@
export default {
"id": "deepseek",
"alias": "deepseek",
"transport": {
"baseUrl": "https://api.deepseek.com/chat/completions"
},
"models": [
{
"id": "deepseek-v4-pro",
"name": "DeepSeek V4 Pro"
},
{
"id": "deepseek-v4-pro-max",
"name": "DeepSeek V4 Pro Max",
"upstreamModelId": "deepseek-v4-pro"
},
{
"id": "deepseek-v4-pro-none",
"name": "DeepSeek V4 Pro No Thinking",
"upstreamModelId": "deepseek-v4-pro"
},
{
"id": "deepseek-v4-flash",
"name": "DeepSeek V4 Flash"
},
{
"id": "deepseek-chat",
"name": "DeepSeek V3.2 Chat"
},
{
"id": "deepseek-reasoner",
"name": "DeepSeek V3.2 Reasoner"
}
]
};
+22
View File
@@ -0,0 +1,22 @@
export default {
"id": "enally",
"alias": "enally",
"transport": {
"baseUrl": "https://ai.enally.in/v1/chat/completions",
"authHeader": "x-api-key"
},
"models": [
{
"id": "gpt-4o",
"name": "GPT-4o"
},
{
"id": "gpt-4o-mini",
"name": "GPT-4o Mini"
},
{
"id": "claude-3-5-sonnet",
"name": "Claude 3.5 Sonnet"
}
]
};
+72
View File
@@ -0,0 +1,72 @@
export default {
"id": "fal-ai",
"alias": "fal-ai",
"transport": null,
"models": [
{
"id": "fal-ai/flux/schnell",
"name": "FLUX Schnell",
"type": "image",
"params": [
"n",
"size"
]
},
{
"id": "fal-ai/flux/dev",
"name": "FLUX Dev",
"type": "image",
"params": [
"n",
"size"
]
},
{
"id": "fal-ai/flux-pro/v1.1",
"name": "FLUX Pro v1.1",
"type": "image",
"params": [
"n",
"size"
]
},
{
"id": "fal-ai/flux-pro/v1.1-ultra",
"name": "FLUX Pro v1.1 Ultra",
"type": "image",
"params": [
"n",
"size"
]
},
{
"id": "fal-ai/recraft-v3",
"name": "Recraft V3",
"type": "image",
"params": [
"n",
"size",
"style"
]
},
{
"id": "fal-ai/ideogram/v2",
"name": "Ideogram V2",
"type": "image",
"params": [
"n",
"size",
"style"
]
},
{
"id": "fal-ai/stable-diffusion-v35-large",
"name": "SD 3.5 Large",
"type": "image",
"params": [
"n",
"size"
]
}
]
};
+26
View File
@@ -0,0 +1,26 @@
export default {
"id": "fireworks",
"alias": "fireworks",
"transport": {
"baseUrl": "https://api.fireworks.ai/inference/v1/chat/completions"
},
"models": [
{
"id": "accounts/fireworks/models/deepseek-v3p1",
"name": "DeepSeek V3.1"
},
{
"id": "accounts/fireworks/models/llama-v3p3-70b-instruct",
"name": "Llama 3.3 70B"
},
{
"id": "accounts/fireworks/models/qwen3-235b-a22b",
"name": "Qwen3 235B"
},
{
"id": "nomic-ai/nomic-embed-text-v1.5",
"name": "Nomic Embed Text v1.5",
"type": "embedding"
}
]
};
+25
View File
@@ -0,0 +1,25 @@
export default {
"id": "freetheai",
"alias": "freetheai",
"transport": {
"baseUrl": "https://api.freetheai.xyz/v1/chat/completions"
},
"models": [
{
"id": "gpt-4o",
"name": "GPT-4o"
},
{
"id": "claude-3-5-sonnet",
"name": "Claude 3.5 Sonnet"
},
{
"id": "gemini-1.5-pro",
"name": "Gemini 1.5 Pro"
},
{
"id": "deepseek-chat",
"name": "DeepSeek Chat"
}
]
};
+20
View File
@@ -0,0 +1,20 @@
export default {
"id": "gemini-cli",
"alias": "gc",
"transport": {
"baseUrl": "https://cloudcode-pa.googleapis.com/v1internal",
"format": "gemini-cli",
"clientId": "681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",
"clientSecret": "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"
},
"models": [
{
"id": "gemini-3-flash-preview",
"name": "Gemini 3 Flash Preview"
},
{
"id": "gemini-3-pro-preview",
"name": "Gemini 3 Pro Preview"
}
]
};
+122
View File
@@ -0,0 +1,122 @@
export default {
"id": "gemini",
"alias": "gemini",
"transport": {
"baseUrl": "https://generativelanguage.googleapis.com/v1beta/models",
"format": "gemini",
"clientId": "681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",
"clientSecret": "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"
},
"models": [
{
"id": "gemini-3.1-pro-preview",
"name": "Gemini 3.1 Pro Preview"
},
{
"id": "gemini-3.1-flash-lite-preview",
"name": "Gemini 3.1 Flash Lite Preview"
},
{
"id": "gemini-3-flash-preview",
"name": "Gemini 3 Flash Preview"
},
{
"id": "gemini-2.5-pro",
"name": "Gemini 2.5 Pro"
},
{
"id": "gemini-2.5-flash",
"name": "Gemini 2.5 Flash"
},
{
"id": "gemini-2.5-flash-lite",
"name": "Gemini 2.5 Flash Lite"
},
{
"id": "gemini-2.0-flash",
"name": "Gemini 2.0 Flash"
},
{
"id": "gemini-2.0-flash-lite",
"name": "Gemini 2.0 Flash Lite"
},
{
"id": "gemma-4-31b-it",
"name": "Gemma 4 31B IT"
},
{
"id": "gemini-embedding-2-preview",
"name": "Gemini Embedding 2 Preview",
"type": "embedding"
},
{
"id": "gemini-embedding-001",
"name": "Gemini Embedding 001",
"type": "embedding"
},
{
"id": "text-embedding-005",
"name": "Text Embedding 005",
"type": "embedding"
},
{
"id": "text-embedding-004",
"name": "Text Embedding 004 (Legacy)",
"type": "embedding"
},
{
"id": "gemini-3.1-flash-image-preview",
"name": "Gemini 3.1 Flash Image (Nano Banana 2)",
"type": "image",
"params": []
},
{
"id": "gemini-3-pro-image-preview",
"name": "Gemini 3 Pro Image (Nano Banana Pro)",
"type": "image",
"params": []
},
{
"id": "gemini-2.5-flash-image",
"name": "Gemini 2.5 Flash Image (Nano Banana)",
"type": "image",
"params": []
},
{
"id": "gemini-2.5-pro",
"name": "Gemini 2.5 Pro (Best)",
"type": "stt",
"params": [
"language",
"prompt"
]
},
{
"id": "gemini-2.5-flash",
"name": "Gemini 2.5 Flash",
"type": "stt",
"params": [
"language",
"prompt"
]
},
{
"id": "gemini-2.5-flash-lite",
"name": "Gemini 2.5 Flash Lite (Cheapest)",
"type": "stt",
"params": [
"language",
"prompt"
]
},
{
"id": "gemini-2.0-flash",
"name": "Gemini 2.0 Flash",
"type": "stt",
"params": [
"language",
"prompt"
]
}
]
};
+129
View File
@@ -0,0 +1,129 @@
export default {
"id": "github",
"alias": "gh",
"transport": {
"baseUrl": "https://api.githubcopilot.com/chat/completions",
"responsesUrl": "https://api.githubcopilot.com/responses",
"headers": {
"copilot-integration-id": "vscode-chat",
"editor-version": "vscode/1.110.0",
"editor-plugin-version": "copilot-chat/0.38.0",
"user-agent": "GitHubCopilotChat/0.38.0",
"openai-intent": "conversation-panel",
"x-github-api-version": "2025-04-01",
"x-vscode-user-agent-library-version": "electron-fetch",
"X-Initiator": "user",
"Accept": "application/json",
"Content-Type": "application/json"
},
"clientId": "Iv1.b507a08c87ecfe98"
},
"models": [
{
"id": "gpt-3.5-turbo",
"name": "GPT-3.5 Turbo"
},
{
"id": "gpt-4",
"name": "GPT-4"
},
{
"id": "gpt-4o",
"name": "GPT-4o"
},
{
"id": "gpt-4o-mini",
"name": "GPT-4o mini"
},
{
"id": "gpt-4.1",
"name": "GPT-4.1"
},
{
"id": "gpt-5-mini",
"name": "GPT-5 Mini"
},
{
"id": "gpt-5.2",
"name": "GPT-5.2"
},
{
"id": "gpt-5.2-codex",
"name": "GPT-5.2 Codex"
},
{
"id": "gpt-5.3-codex",
"name": "GPT-5.3 Codex"
},
{
"id": "gpt-5.4",
"name": "GPT-5.4"
},
{
"id": "gpt-5.4-mini",
"name": "GPT-5.4 Mini"
},
{
"id": "claude-haiku-4.5",
"name": "Claude Haiku 4.5"
},
{
"id": "claude-opus-4.5",
"name": "Claude Opus 4.5"
},
{
"id": "claude-sonnet-4",
"name": "Claude Sonnet 4"
},
{
"id": "claude-sonnet-4.5",
"name": "Claude Sonnet 4.5"
},
{
"id": "claude-sonnet-4.6",
"name": "Claude Sonnet 4.6"
},
{
"id": "claude-opus-4.6",
"name": "Claude Opus 4.6"
},
{
"id": "claude-opus-4.7",
"name": "Claude Opus 4.7"
},
{
"id": "gemini-2.5-pro",
"name": "Gemini 2.5 Pro"
},
{
"id": "gemini-3-flash-preview",
"name": "Gemini 3 Flash"
},
{
"id": "gemini-3.1-pro-preview",
"name": "Gemini 3.1 Pro"
},
{
"id": "grok-code-fast-1",
"name": "Grok Code Fast 1"
},
{
"id": "oswe-vscode-prime",
"name": "Raptor Mini"
},
{
"id": "goldeneye-free-auto",
"name": "GoldenEye"
},
{
"id": "text-embedding-3-small",
"name": "Text Embedding 3 Small (GitHub)",
"type": "embedding"
},
{
"id": "text-embedding-3-large",
"name": "Text Embedding 3 Large (GitHub)",
"type": "embedding"
}
]
};
+7
View File
@@ -0,0 +1,7 @@
export default {
"id": "gitlab",
"alias": "gitlab",
"transport": {
"baseUrl": "https://gitlab.com/api/v4/chat/completions"
}
};
+21
View File
@@ -0,0 +1,21 @@
export default {
"id": "glhf",
"alias": "glhf",
"transport": {
"baseUrl": "https://glhf.chat/api/openai/v1/chat/completions"
},
"models": [
{
"id": "hf:meta-llama/Meta-Llama-3.1-405B-Instruct",
"name": "Llama 3.1 405B"
},
{
"id": "hf:meta-llama/Meta-Llama-3.1-70B-Instruct",
"name": "Llama 3.1 70B"
},
{
"id": "hf:Qwen/Qwen2.5-72B-Instruct",
"name": "Qwen 2.5 72B"
}
]
};
+30
View File
@@ -0,0 +1,30 @@
export default {
"id": "glm-cn",
"alias": "glm-cn",
"transport": {
"baseUrl": "https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",
"headers": {}
},
"models": [
{
"id": "glm-5.1",
"name": "GLM 5.1"
},
{
"id": "glm-5",
"name": "GLM 5"
},
{
"id": "glm-4.7",
"name": "GLM-4.7"
},
{
"id": "glm-4.6",
"name": "GLM-4.6"
},
{
"id": "glm-4.5-air",
"name": "GLM-4.5-Air"
}
]
};
+17
View File
@@ -0,0 +1,17 @@
import { CLAUDE_API_HEADERS } from "../shared.js";
export default {
id: "glm",
alias: "glm",
transport: {
baseUrl: "https://api.z.ai/api/anthropic/v1/messages",
format: "claude",
headers: { ...CLAUDE_API_HEADERS }
},
models: [
{ id: "glm-5.1", name: "GLM 5.1" },
{ id: "glm-5", name: "GLM 5" },
{ id: "glm-4.7", name: "GLM 4.7" },
{ id: "glm-4.6v", name: "GLM 4.6V (Vision)" }
]
};
+59
View File
@@ -0,0 +1,59 @@
export default {
"id": "grok-web",
"alias": "grok-web",
"transport": {
"baseUrl": "https://grok.com/rest/app-chat/conversations/new",
"format": "grok-web",
"authType": "cookie"
},
"models": [
{
"id": "grok-3",
"name": "Grok 3"
},
{
"id": "grok-3-mini",
"name": "Grok 3 Mini (Thinking)"
},
{
"id": "grok-3-thinking",
"name": "Grok 3 Thinking"
},
{
"id": "grok-4",
"name": "Grok 4"
},
{
"id": "grok-4-mini",
"name": "Grok 4 Mini (Thinking)"
},
{
"id": "grok-4-thinking",
"name": "Grok 4 Thinking"
},
{
"id": "grok-4-heavy",
"name": "Grok 4 Heavy (SuperGrok)"
},
{
"id": "grok-4.1-mini",
"name": "Grok 4.1 Mini (Thinking)"
},
{
"id": "grok-4.1-fast",
"name": "Grok 4.1 Fast"
},
{
"id": "grok-4.1-expert",
"name": "Grok 4.1 Expert"
},
{
"id": "grok-4.1-thinking",
"name": "Grok 4.1 Thinking"
},
{
"id": "grok-4.2",
"name": "Grok 4.2 (4.20 Beta)"
}
]
};
+58
View File
@@ -0,0 +1,58 @@
export default {
"id": "groq",
"alias": "groq",
"transport": {
"baseUrl": "https://api.groq.com/openai/v1/chat/completions"
},
"models": [
{
"id": "llama-3.3-70b-versatile",
"name": "Llama 3.3 70B"
},
{
"id": "meta-llama/llama-4-maverick-17b-128e-instruct",
"name": "Llama 4 Maverick"
},
{
"id": "qwen/qwen3-32b",
"name": "Qwen3 32B"
},
{
"id": "openai/gpt-oss-120b",
"name": "GPT-OSS 120B"
},
{
"id": "whisper-large-v3",
"name": "Whisper Large v3",
"type": "stt",
"params": [
"language",
"response_format",
"temperature",
"prompt"
]
},
{
"id": "whisper-large-v3-turbo",
"name": "Whisper Large v3 Turbo",
"type": "stt",
"params": [
"language",
"response_format",
"temperature",
"prompt"
]
},
{
"id": "distil-whisper-large-v3-en",
"name": "Distil Whisper Large v3 EN",
"type": "stt",
"params": [
"language",
"response_format",
"temperature",
"prompt"
]
}
]
};
@@ -0,0 +1,35 @@
export default {
"id": "huggingface",
"alias": "huggingface",
"transport": null,
"models": [
{
"id": "black-forest-labs/FLUX.1-schnell",
"name": "FLUX.1 Schnell",
"type": "image",
"params": []
},
{
"id": "stabilityai/stable-diffusion-xl-base-1.0",
"name": "SDXL Base 1.0",
"type": "image",
"params": []
},
{
"id": "openai/whisper-large-v3",
"name": "Whisper Large v3 (HF)",
"type": "stt",
"params": [
"language"
]
},
{
"id": "openai/whisper-small",
"name": "Whisper Small (HF)",
"type": "stt",
"params": [
"language"
]
}
]
};
+41
View File
@@ -0,0 +1,41 @@
export default {
"id": "hyperbolic",
"alias": "hyperbolic",
"transport": {
"baseUrl": "https://api.hyperbolic.xyz/v1/chat/completions"
},
"models": [
{
"id": "Qwen/QwQ-32B",
"name": "QwQ 32B"
},
{
"id": "deepseek-ai/DeepSeek-R1",
"name": "DeepSeek R1"
},
{
"id": "deepseek-ai/DeepSeek-V3",
"name": "DeepSeek V3"
},
{
"id": "meta-llama/Llama-3.3-70B-Instruct",
"name": "Llama 3.3 70B"
},
{
"id": "meta-llama/Llama-3.2-3B-Instruct",
"name": "Llama 3.2 3B"
},
{
"id": "Qwen/Qwen2.5-72B-Instruct",
"name": "Qwen 2.5 72B"
},
{
"id": "Qwen/Qwen2.5-Coder-32B-Instruct",
"name": "Qwen 2.5 Coder 32B"
},
{
"id": "NousResearch/Hermes-3-Llama-3.1-70B",
"name": "Hermes 3 70B"
}
]
};
+76
View File
@@ -0,0 +1,76 @@
export default {
"id": "iflow",
"alias": "if",
"transport": {
"baseUrl": "https://apis.iflow.cn/v1/chat/completions",
"headers": {
"User-Agent": "iFlow-Cli"
},
"clientId": "10009311001",
"clientSecret": "4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",
"tokenUrl": "https://iflow.cn/oauth/token",
"authUrl": "https://iflow.cn/oauth"
},
"models": [
{
"id": "qwen3-coder-plus",
"name": "Qwen3 Coder Plus"
},
{
"id": "qwen3-max",
"name": "Qwen3 Max"
},
{
"id": "qwen3-vl-plus",
"name": "Qwen3 VL Plus"
},
{
"id": "qwen3-max-preview",
"name": "Qwen3 Max Preview"
},
{
"id": "qwen3-235b",
"name": "Qwen3 235B A22B"
},
{
"id": "qwen3-235b-a22b-instruct",
"name": "Qwen3 235B A22B Instruct"
},
{
"id": "qwen3-235b-a22b-thinking-2507",
"name": "Qwen3 235B A22B Thinking"
},
{
"id": "qwen3-32b",
"name": "Qwen3 32B"
},
{
"id": "kimi-k2",
"name": "Kimi K2"
},
{
"id": "deepseek-v3.2",
"name": "DeepSeek V3.2 Exp"
},
{
"id": "deepseek-v3.1",
"name": "DeepSeek V3.1 Terminus"
},
{
"id": "deepseek-v3",
"name": "DeepSeek V3 671B"
},
{
"id": "deepseek-r1",
"name": "DeepSeek R1"
},
{
"id": "glm-4.7",
"name": "GLM 4.7"
},
{
"id": "iflow-rome-30ba3b",
"name": "iFlow ROME"
}
]
};
+204
View File
@@ -0,0 +1,204 @@
// Auto-generated: static imports of all registry entries
import p0 from './agentrouter.js';
import p1 from './ai21.js';
import p2 from './aimlapi.js';
import p3 from './alicode-intl.js';
import p4 from './alicode.js';
import p5 from './anthropic.js';
import p6 from './antigravity.js';
import p7 from './assemblyai.js';
import p8 from './azure.js';
import p9 from './baseten.js';
import p10 from './bazaarlink.js';
import p11 from './black-forest-labs.js';
import p12 from './blackbox.js';
import p13 from './byteplus.js';
import p14 from './bytez.js';
import p15 from './cerebras.js';
import p16 from './chutes.js';
import p17 from './claude.js';
import p18 from './cline.js';
import p19 from './cloudflare-ai.js';
import p20 from './codebuddy.js';
import p21 from './codex.js';
import p22 from './cohere.js';
import p23 from './comfyui.js';
import p24 from './commandcode.js';
import p25 from './completions.js';
import p26 from './cursor.js';
import p27 from './deepgram.js';
import p28 from './deepinfra.js';
import p29 from './deepseek.js';
import p30 from './enally.js';
import p31 from './fal-ai.js';
import p32 from './fireworks.js';
import p33 from './freetheai.js';
import p34 from './gemini-cli.js';
import p35 from './gemini.js';
import p36 from './github.js';
import p37 from './gitlab.js';
import p38 from './glhf.js';
import p39 from './glm-cn.js';
import p40 from './glm.js';
import p41 from './grok-web.js';
import p42 from './groq.js';
import p43 from './huggingface.js';
import p44 from './hyperbolic.js';
import p45 from './iflow.js';
import p46 from './inference-net.js';
import p47 from './kilocode.js';
import p48 from './kimi-coding.js';
import p49 from './kimi.js';
import p50 from './kiro.js';
import p51 from './kluster.js';
import p52 from './lepton.js';
import p53 from './llm7.js';
import p54 from './longcat.js';
import p55 from './mimo-free.js';
import p56 from './minimax-cn.js';
import p57 from './minimax.js';
import p58 from './mistral.js';
import p59 from './mmf.js';
import p60 from './modal.js';
import p61 from './morph.js';
import p62 from './nanobanana.js';
import p63 from './nebius.js';
import p64 from './nlpcloud.js';
import p65 from './nous-research.js';
import p66 from './novita.js';
import p67 from './nscale.js';
import p68 from './nvidia.js';
import p69 from './ollama-local.js';
import p70 from './ollama.js';
import p71 from './openai.js';
import p72 from './opencode-go.js';
import p73 from './opencode.js';
import p74 from './openrouter.js';
import p75 from './perplexity-web.js';
import p76 from './perplexity.js';
import p77 from './predibase.js';
import p78 from './publicai.js';
import p79 from './puter.js';
import p80 from './qoder.js';
import p81 from './qwen.js';
import p82 from './recraft.js';
import p83 from './reka.js';
import p84 from './runwayml.js';
import p85 from './sambanova.js';
import p86 from './scaleway.js';
import p87 from './sdwebui.js';
import p88 from './siliconflow.js';
import p89 from './stability-ai.js';
import p90 from './together.js';
import p91 from './uncloseai.js';
import p92 from './vercel-ai-gateway.js';
import p93 from './vertex-partner.js';
import p94 from './vertex.js';
import p95 from './volcengine-ark.js';
import p96 from './voyage-ai.js';
import p97 from './xai.js';
import p98 from './xiaomi-mimo.js';
import p99 from './xiaomi-tokenplan.js';
export default [
p0,
p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
p10,
p11,
p12,
p13,
p14,
p15,
p16,
p17,
p18,
p19,
p20,
p21,
p22,
p23,
p24,
p25,
p26,
p27,
p28,
p29,
p30,
p31,
p32,
p33,
p34,
p35,
p36,
p37,
p38,
p39,
p40,
p41,
p42,
p43,
p44,
p45,
p46,
p47,
p48,
p49,
p50,
p51,
p52,
p53,
p54,
p55,
p56,
p57,
p58,
p59,
p60,
p61,
p62,
p63,
p64,
p65,
p66,
p67,
p68,
p69,
p70,
p71,
p72,
p73,
p74,
p75,
p76,
p77,
p78,
p79,
p80,
p81,
p82,
p83,
p84,
p85,
p86,
p87,
p88,
p89,
p90,
p91,
p92,
p93,
p94,
p95,
p96,
p97,
p98,
p99
];
@@ -0,0 +1,21 @@
export default {
"id": "inference-net",
"alias": "inference-net",
"transport": {
"baseUrl": "https://api.inference.net/v1/chat/completions"
},
"models": [
{
"id": "meta-llama/llama-3.3-70b-instruct/fp-16",
"name": "Llama 3.3 70B"
},
{
"id": "deepseek/deepseek-v3-0324",
"name": "DeepSeek V3"
},
{
"id": "mistralai/mistral-nemo-12b-instruct/fp-16",
"name": "Mistral Nemo 12B"
}
]
};
+42
View File
@@ -0,0 +1,42 @@
export default {
"id": "kilocode",
"alias": "kc",
"transport": {
"baseUrl": "https://api.kilo.ai/api/openrouter/chat/completions",
"headers": {}
},
"models": [
{
"id": "anthropic/claude-sonnet-4-20250514",
"name": "Claude Sonnet 4"
},
{
"id": "anthropic/claude-opus-4-20250514",
"name": "Claude Opus 4"
},
{
"id": "google/gemini-2.5-pro",
"name": "Gemini 2.5 Pro"
},
{
"id": "google/gemini-2.5-flash",
"name": "Gemini 2.5 Flash"
},
{
"id": "openai/gpt-4.1",
"name": "GPT-4.1"
},
{
"id": "openai/o3",
"name": "o3"
},
{
"id": "deepseek/deepseek-chat",
"name": "DeepSeek Chat"
},
{
"id": "deepseek/deepseek-reasoner",
"name": "DeepSeek Reasoner"
}
]
};
@@ -0,0 +1,20 @@
import { CLAUDE_API_HEADERS, KIMI_CODING_BASE_URL } from "../shared.js";
export default {
id: "kimi-coding",
alias: "kmc",
transport: {
baseUrl: KIMI_CODING_BASE_URL,
format: "claude",
headers: { ...CLAUDE_API_HEADERS },
clientId: "17e5f671-d194-4dfb-9706-5516cb48c098",
tokenUrl: "https://auth.kimi.com/api/oauth/token",
refreshUrl: "https://auth.kimi.com/api/oauth/token"
},
models: [
{ id: "kimi-k2.6", name: "Kimi K2.6" },
{ id: "kimi-k2.5", name: "Kimi K2.5" },
{ id: "kimi-k2.5-thinking", name: "Kimi K2.5 Thinking" },
{ id: "kimi-latest", name: "Kimi Latest" }
]
};
+17
View File
@@ -0,0 +1,17 @@
import { CLAUDE_API_HEADERS, KIMI_CODING_BASE_URL } from "../shared.js";
export default {
id: "kimi",
alias: "kimi",
transport: {
baseUrl: KIMI_CODING_BASE_URL,
format: "claude",
headers: { ...CLAUDE_API_HEADERS }
},
models: [
{ id: "kimi-k2.6", name: "Kimi K2.6" },
{ id: "kimi-k2.5", name: "Kimi K2.5" },
{ id: "kimi-k2.5-thinking", name: "Kimi K2.5 Thinking" },
{ id: "kimi-latest", name: "Kimi Latest" }
]
};
+83
View File
@@ -0,0 +1,83 @@
export default {
"id": "kiro",
"alias": "kr",
"transport": {
"baseUrl": "https://runtime.us-east-1.kiro.dev/generateAssistantResponse",
"baseUrls": [
"https://runtime.us-east-1.kiro.dev/generateAssistantResponse",
"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",
"https://q.us-east-1.amazonaws.com/generateAssistantResponse"
],
"format": "kiro",
"retry": {
"429": 0
},
"headers": {
"Content-Type": "application/json",
"Accept": "application/vnd.amazon.eventstream",
"X-Amz-Target": "AmazonCodeWhispererStreamingService.GenerateAssistantResponse",
"User-Agent": "AWS-SDK-JS/3.0.0 kiro-ide/1.0.0",
"X-Amz-User-Agent": "aws-sdk-js/3.0.0 kiro-ide/1.0.0"
},
"tokenUrl": "https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",
"authUrl": "https://prod.us-east-1.auth.desktop.kiro.dev"
},
"models": [
{
"id": "claude-sonnet-4.5",
"name": "Claude Sonnet 4.5"
},
{
"id": "claude-haiku-4.5",
"name": "Claude Haiku 4.5"
},
{
"id": "deepseek-3.2",
"name": "DeepSeek 3.2",
"strip": [
"image",
"audio"
]
},
{
"id": "qwen3-coder-next",
"name": "Qwen3 Coder Next",
"strip": [
"image",
"audio"
]
},
{
"id": "glm-5",
"name": "GLM 5"
},
{
"id": "MiniMax-M2.5",
"name": "MiniMax M2.5"
},
{
"id": "claude-sonnet-4.5-thinking",
"name": "Claude Sonnet 4.5 (Thinking)"
},
{
"id": "claude-haiku-4.5-thinking",
"name": "Claude Haiku 4.5 (Thinking)"
},
{
"id": "claude-sonnet-4.5-agentic",
"name": "Claude Sonnet 4.5 (Agentic)"
},
{
"id": "claude-haiku-4.5-agentic",
"name": "Claude Haiku 4.5 (Agentic)"
},
{
"id": "claude-sonnet-4.5-thinking-agentic",
"name": "Claude Sonnet 4.5 (Thinking + Agentic)"
},
{
"id": "claude-haiku-4.5-thinking-agentic",
"name": "Claude Haiku 4.5 (Thinking + Agentic)"
}
]
};
+25
View File
@@ -0,0 +1,25 @@
export default {
"id": "kluster",
"alias": "kluster",
"transport": {
"baseUrl": "https://api.kluster.ai/v1/chat/completions"
},
"models": [
{
"id": "deepseek-ai/DeepSeek-R1",
"name": "DeepSeek R1"
},
{
"id": "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
"name": "Llama 4 Maverick"
},
{
"id": "meta-llama/Llama-4-Scout-17B-16E-Instruct",
"name": "Llama 4 Scout"
},
{
"id": "Qwen/Qwen3-235B-A22B-Instruct",
"name": "Qwen3 235B"
}
]
};
+25
View File
@@ -0,0 +1,25 @@
export default {
"id": "lepton",
"alias": "lepton",
"transport": {
"baseUrl": "https://api.lepton.ai/api/v1/chat/completions"
},
"models": [
{
"id": "llama3-1-405b",
"name": "Llama 3.1 405B"
},
{
"id": "llama3-1-70b",
"name": "Llama 3.1 70B"
},
{
"id": "llama3-1-8b",
"name": "Llama 3.1 8B"
},
{
"id": "mixtral-8x7b",
"name": "Mixtral 8x7B"
}
]
};
+21
View File
@@ -0,0 +1,21 @@
export default {
"id": "llm7",
"alias": "llm7",
"transport": {
"baseUrl": "https://api.llm7.io/v1/chat/completions"
},
"models": [
{
"id": "gpt-4o-mini",
"name": "GPT-4o Mini"
},
{
"id": "gpt-4.1-mini",
"name": "GPT-4.1 Mini"
},
{
"id": "gemini-1.5-flash",
"name": "Gemini 1.5 Flash"
}
]
};
+21
View File
@@ -0,0 +1,21 @@
export default {
"id": "longcat",
"alias": "longcat",
"transport": {
"baseUrl": "https://api.longcat.chat/openai/v1/chat/completions"
},
"models": [
{
"id": "LongCat-Flash-Chat",
"name": "LongCat Flash Chat"
},
{
"id": "LongCat-Flash-Thinking",
"name": "LongCat Flash Thinking"
},
{
"id": "LongCat-Flash-Lite",
"name": "LongCat Flash Lite"
}
]
};
+14
View File
@@ -0,0 +1,14 @@
export default {
"id": "mimo-free",
"alias": "mmf",
"transport": {
"baseUrl": "https://api.xiaomimimo.com/api/free-ai/openai/chat",
"noAuth": true
},
"models": [
{
"id": "mimo-auto",
"name": "MiMo Auto"
}
]
};
+17
View File
@@ -0,0 +1,17 @@
import { CLAUDE_API_HEADERS } from "../shared.js";
export default {
id: "minimax-cn",
alias: "minimax-cn",
transport: {
baseUrl: "https://api.minimaxi.com/anthropic/v1/messages",
format: "claude",
headers: { ...CLAUDE_API_HEADERS }
},
models: [
{ id: "MiniMax-M3", name: "MiniMax M3", targetFormat: "claude" },
{ id: "MiniMax-M2.7", name: "MiniMax M2.7" },
{ id: "MiniMax-M2.5", name: "MiniMax M2.5" },
{ id: "MiniMax-M2.1", name: "MiniMax M2.1" }
]
};
+18
View File
@@ -0,0 +1,18 @@
import { CLAUDE_API_HEADERS } from "../shared.js";
export default {
id: "minimax",
alias: "minimax",
transport: {
baseUrl: "https://api.minimax.io/anthropic/v1/messages",
format: "claude",
headers: { ...CLAUDE_API_HEADERS }
},
models: [
{ id: "MiniMax-M3", name: "MiniMax M3", targetFormat: "claude" },
{ id: "MiniMax-M2.7", name: "MiniMax M2.7" },
{ id: "MiniMax-M2.5", name: "MiniMax M2.5" },
{ id: "MiniMax-M2.1", name: "MiniMax M2.1" },
{ id: "minimax-image-01", name: "MiniMax Image 01", type: "image", params: ["n", "size", "response_format"] }
]
};
+26
View File
@@ -0,0 +1,26 @@
export default {
"id": "mistral",
"alias": "mistral",
"transport": {
"baseUrl": "https://api.mistral.ai/v1/chat/completions"
},
"models": [
{
"id": "mistral-large-latest",
"name": "Mistral Large 3"
},
{
"id": "codestral-latest",
"name": "Codestral"
},
{
"id": "mistral-medium-latest",
"name": "Mistral Medium 3"
},
{
"id": "mistral-embed",
"name": "Mistral Embed",
"type": "embedding"
}
]
};
+14
View File
@@ -0,0 +1,14 @@
export default {
"id": "mmf",
"alias": "mmf",
"transport": {
"baseUrl": "https://api.xiaomimimo.com/api/free-ai/openai/chat",
"noAuth": true
},
"models": [
{
"id": "mimo-auto",
"name": "MiMo Auto"
}
]
};
+13
View File
@@ -0,0 +1,13 @@
export default {
"id": "modal",
"alias": "modal",
"transport": {
"baseUrl": "https://api.modal.com/v1/chat/completions"
},
"models": [
{
"id": "auto",
"name": "Auto (User-hosted)"
}
]
};
+17
View File
@@ -0,0 +1,17 @@
export default {
"id": "morph",
"alias": "morph",
"transport": {
"baseUrl": "https://api.morphllm.com/v1/chat/completions"
},
"models": [
{
"id": "morph-v3-large",
"name": "Morph V3 Large"
},
{
"id": "morph-v3-fast",
"name": "Morph V3 Fast"
}
]
};
+27
View File
@@ -0,0 +1,27 @@
export default {
"id": "nanobanana",
"alias": "nanobanana",
"transport": {
"baseUrl": "https://api.nanobananaapi.ai/v1/chat/completions"
},
"models": [
{
"id": "nanobanana-flash",
"name": "NanoBanana Flash",
"type": "image",
"params": [
"n",
"size"
]
},
{
"id": "nanobanana-pro",
"name": "NanoBanana Pro",
"type": "image",
"params": [
"n",
"size"
]
}
]
};
+18
View File
@@ -0,0 +1,18 @@
export default {
"id": "nebius",
"alias": "nebius",
"transport": {
"baseUrl": "https://api.studio.nebius.ai/v1/chat/completions"
},
"models": [
{
"id": "meta-llama/Llama-3.3-70B-Instruct",
"name": "Llama 3.3 70B Instruct"
},
{
"id": "Qwen/Qwen3-Embedding-8B",
"name": "Qwen3 Embedding 8B",
"type": "embedding"
}
]
};
+21
View File
@@ -0,0 +1,21 @@
export default {
"id": "nlpcloud",
"alias": "nlpcloud",
"transport": {
"baseUrl": "https://api.nlpcloud.io/v1/gpu/chatbot"
},
"models": [
{
"id": "chatdolphin",
"name": "ChatDolphin"
},
{
"id": "dolphin",
"name": "Dolphin"
},
{
"id": "finetuned-llama-3-70b",
"name": "Llama 3 70B (Finetuned)"
}
]
};
@@ -0,0 +1,17 @@
export default {
"id": "nous-research",
"alias": "nous-research",
"transport": {
"baseUrl": "https://inference-api.nousresearch.com/v1/chat/completions"
},
"models": [
{
"id": "Hermes-4-405B",
"name": "Hermes 4 405B"
},
{
"id": "Hermes-4-70B",
"name": "Hermes 4 70B"
}
]
};
+25
View File
@@ -0,0 +1,25 @@
export default {
"id": "novita",
"alias": "novita",
"transport": {
"baseUrl": "https://api.novita.ai/v3/openai/chat/completions"
},
"models": [
{
"id": "deepseek/deepseek-r1",
"name": "DeepSeek R1"
},
{
"id": "deepseek/deepseek-v3",
"name": "DeepSeek V3"
},
{
"id": "meta-llama/llama-3.3-70b-instruct",
"name": "Llama 3.3 70B"
},
{
"id": "qwen/qwen-2.5-72b-instruct",
"name": "Qwen 2.5 72B"
}
]
};
+17
View File
@@ -0,0 +1,17 @@
export default {
"id": "nscale",
"alias": "nscale",
"transport": {
"baseUrl": "https://inference.api.nscale.com/v1/chat/completions"
},
"models": [
{
"id": "meta-llama/Llama-3.3-70B-Instruct",
"name": "Llama 3.3 70B"
},
{
"id": "Qwen/Qwen2.5-Coder-32B-Instruct",
"name": "Qwen 2.5 Coder 32B"
}
]
};
+30
View File
@@ -0,0 +1,30 @@
export default {
"id": "nvidia",
"alias": "nvidia",
"transport": {
"baseUrl": "https://integrate.api.nvidia.com/v1/chat/completions"
},
"models": [
{
"id": "minimaxai/minimax-m2.7",
"name": "Minimax M2.7"
},
{
"id": "z-ai/glm4.7",
"name": "GLM 4.7"
},
{
"id": "nvidia/nv-embedqa-e5-v5",
"name": "NV EmbedQA E5 v5",
"type": "embedding"
},
{
"id": "nvidia/parakeet-ctc-1.1b-asr",
"name": "Parakeet CTC 1.1B",
"type": "stt",
"params": [
"language"
]
}
]
};
@@ -0,0 +1,8 @@
export default {
"id": "ollama-local",
"alias": "ollama-local",
"transport": {
"baseUrl": "http://localhost:11434/api/chat",
"format": "ollama"
}
};
+34
View File
@@ -0,0 +1,34 @@
export default {
"id": "ollama",
"alias": "ollama",
"transport": {
"baseUrl": "https://ollama.com/api/chat",
"format": "ollama"
},
"models": [
{
"id": "gpt-oss:120b",
"name": "GPT OSS 120B"
},
{
"id": "kimi-k2.5",
"name": "Kimi K2.5"
},
{
"id": "glm-5",
"name": "GLM 5"
},
{
"id": "minimax-m2.5",
"name": "MiniMax M2.5"
},
{
"id": "glm-4.7-flash",
"name": "GLM 4.7 Flash"
},
{
"id": "qwen3.5",
"name": "Qwen3.5"
}
]
};
+184
View File
@@ -0,0 +1,184 @@
export default {
"id": "openai",
"alias": "openai",
"transport": {
"baseUrl": "https://api.openai.com/v1/chat/completions"
},
"models": [
{
"id": "gpt-5.4",
"name": "GPT-5.4"
},
{
"id": "gpt-5.4-mini",
"name": "GPT-5.4 Mini"
},
{
"id": "gpt-5.4-nano",
"name": "GPT-5.4 Nano"
},
{
"id": "gpt-5.2",
"name": "GPT-5.2"
},
{
"id": "gpt-5.1",
"name": "GPT-5.1"
},
{
"id": "gpt-5",
"name": "GPT-5"
},
{
"id": "gpt-5-mini",
"name": "GPT-5 Mini"
},
{
"id": "gpt-5-nano",
"name": "GPT-5 Nano"
},
{
"id": "gpt-4o",
"name": "GPT-4o"
},
{
"id": "gpt-4o-mini",
"name": "GPT-4o Mini"
},
{
"id": "gpt-4-turbo",
"name": "GPT-4 Turbo"
},
{
"id": "gpt-4.1",
"name": "GPT-4.1"
},
{
"id": "gpt-4.1-mini",
"name": "GPT-4.1 Mini"
},
{
"id": "gpt-4.1-nano",
"name": "GPT-4.1 Nano"
},
{
"id": "o3",
"name": "O3"
},
{
"id": "o3-mini",
"name": "O3 Mini"
},
{
"id": "o3-pro",
"name": "O3 Pro"
},
{
"id": "o4-mini",
"name": "O4 Mini"
},
{
"id": "o1",
"name": "O1"
},
{
"id": "o1-mini",
"name": "O1 Mini"
},
{
"id": "text-embedding-3-large",
"name": "Text Embedding 3 Large",
"type": "embedding"
},
{
"id": "text-embedding-3-small",
"name": "Text Embedding 3 Small",
"type": "embedding"
},
{
"id": "text-embedding-ada-002",
"name": "Text Embedding Ada 002",
"type": "embedding"
},
{
"id": "tts-1",
"name": "TTS-1",
"type": "tts"
},
{
"id": "tts-1-hd",
"name": "TTS-1 HD",
"type": "tts"
},
{
"id": "gpt-4o-mini-tts",
"name": "GPT-4o Mini TTS",
"type": "tts"
},
{
"id": "whisper-1",
"name": "Whisper 1",
"type": "stt",
"params": [
"language",
"response_format",
"temperature",
"prompt"
]
},
{
"id": "gpt-4o-transcribe",
"name": "GPT-4o Transcribe",
"type": "stt",
"params": [
"language",
"response_format",
"temperature",
"prompt"
]
},
{
"id": "gpt-4o-mini-transcribe",
"name": "GPT-4o Mini Transcribe",
"type": "stt",
"params": [
"language",
"response_format",
"temperature",
"prompt"
]
},
{
"id": "gpt-image-1",
"name": "GPT Image 1",
"type": "image",
"params": [
"n",
"size",
"quality",
"response_format"
]
},
{
"id": "dall-e-3",
"name": "DALL-E 3",
"type": "image",
"params": [
"size",
"quality",
"style",
"response_format"
]
},
{
"id": "dall-e-2",
"name": "DALL-E 2",
"type": "image",
"params": [
"n",
"size",
"response_format"
]
}
]
};
@@ -0,0 +1,52 @@
export default {
"id": "opencode-go",
"alias": "opencode-go",
"transport": {
"baseUrl": "https://opencode.ai/zen/go/v1/chat/completions",
"headers": {}
},
"models": [
{
"id": "kimi-k2.6",
"name": "Kimi K2.6"
},
{
"id": "kimi-k2.5",
"name": "Kimi K2.5"
},
{
"id": "glm-5.1",
"name": "GLM 5.1"
},
{
"id": "glm-5",
"name": "GLM 5"
},
{
"id": "qwen3.5-plus",
"name": "Qwen 3.5 Plus"
},
{
"id": "qwen3.6-plus",
"name": "Qwen 3.6 Plus"
},
{
"id": "mimo-v2-pro",
"name": "MiMo V2 Pro"
},
{
"id": "mimo-v2-omni",
"name": "MiMo V2 Omni"
},
{
"id": "minimax-m2.7",
"name": "MiniMax M2.7",
"targetFormat": "claude"
},
{
"id": "minimax-m2.5",
"name": "MiniMax M2.5",
"targetFormat": "claude"
}
]
};
+12
View File
@@ -0,0 +1,12 @@
export default {
"id": "opencode",
"alias": "oc",
"transport": {
"baseUrl": "https://opencode.ai",
"headers": {
"x-opencode-client": "desktop"
},
"noAuth": true
},
"models": []
};
+103
View File
@@ -0,0 +1,103 @@
export default {
"id": "openrouter",
"alias": "openrouter",
"transport": {
"baseUrl": "https://openrouter.ai/api/v1/chat/completions",
"headers": {
"HTTP-Referer": "https://endpoint-proxy.local",
"X-Title": "Endpoint Proxy"
}
},
"models": [
{
"id": "openai/text-embedding-3-large",
"name": "OpenAI Text Embedding 3 Large",
"type": "embedding"
},
{
"id": "openai/text-embedding-3-small",
"name": "OpenAI Text Embedding 3 Small",
"type": "embedding"
},
{
"id": "openai/text-embedding-ada-002",
"name": "OpenAI Text Embedding Ada 002",
"type": "embedding"
},
{
"id": "qwen/qwen3-embedding-8b",
"name": "Qwen3 Embedding 8B",
"type": "embedding"
},
{
"id": "perplexity/pplx-embed-v1-4b",
"name": "Perplexity Embed V1 4B",
"type": "embedding"
},
{
"id": "perplexity/pplx-embed-v1-0.6b",
"name": "Perplexity Embed V1 0.6B",
"type": "embedding"
},
{
"id": "nvidia/llama-nemotron-embed-vl-1b-v2:free",
"name": "NVIDIA Nemotron Embed VL 1B V2 (Free)",
"type": "embedding"
},
{
"id": "openai/gpt-4o-mini-tts",
"name": "GPT-4o Mini TTS",
"type": "tts"
},
{
"id": "openai/tts-1-hd",
"name": "TTS-1 HD",
"type": "tts"
},
{
"id": "openai/tts-1",
"name": "TTS-1",
"type": "tts"
},
{
"id": "openai/dall-e-3",
"name": "DALL-E 3 (via OpenRouter)",
"type": "image",
"params": [
"size",
"quality",
"style",
"response_format"
]
},
{
"id": "openai/gpt-image-1",
"name": "GPT Image 1 (via OpenRouter)",
"type": "image",
"params": [
"n",
"size",
"quality",
"response_format"
]
},
{
"id": "google/imagen-3.0-generate-002",
"name": "Imagen 3 (via OpenRouter)",
"type": "image",
"params": [
"n",
"size"
]
},
{
"id": "black-forest-labs/FLUX.1-schnell",
"name": "FLUX.1 Schnell (via OpenRouter)",
"type": "image",
"params": [
"n",
"size"
]
}
]
};
@@ -0,0 +1,39 @@
export default {
"id": "perplexity-web",
"alias": "perplexity-web",
"transport": {
"baseUrl": "https://www.perplexity.ai/rest/sse/perplexity_ask",
"format": "perplexity-web",
"authType": "cookie"
},
"models": [
{
"id": "pplx-auto",
"name": "Perplexity Auto (Free)"
},
{
"id": "pplx-sonar",
"name": "Perplexity Sonar"
},
{
"id": "pplx-gpt",
"name": "GPT-5.4 (via Perplexity)"
},
{
"id": "pplx-gemini",
"name": "Gemini 3.1 Pro (via Perplexity)"
},
{
"id": "pplx-sonnet",
"name": "Claude Sonnet 4.6 (via Perplexity)"
},
{
"id": "pplx-opus",
"name": "Claude Opus 4.6 (via Perplexity)"
},
{
"id": "pplx-nemotron",
"name": "Nemotron 3 Super (via Perplexity)"
}
]
};
+17
View File
@@ -0,0 +1,17 @@
export default {
"id": "perplexity",
"alias": "perplexity",
"transport": {
"baseUrl": "https://api.perplexity.ai/chat/completions"
},
"models": [
{
"id": "sonar-pro",
"name": "Sonar Pro"
},
{
"id": "sonar",
"name": "Sonar"
}
]
};
+21
View File
@@ -0,0 +1,21 @@
export default {
"id": "predibase",
"alias": "predibase",
"transport": {
"baseUrl": "https://serving.app.predibase.com/v1/chat/completions"
},
"models": [
{
"id": "llama-3-2-3b-instruct",
"name": "Llama 3.2 3B"
},
{
"id": "llama-3-1-8b-instruct",
"name": "Llama 3.1 8B"
},
{
"id": "qwen2-5-7b-instruct",
"name": "Qwen 2.5 7B"
}
]
};
+13
View File
@@ -0,0 +1,13 @@
export default {
"id": "publicai",
"alias": "publicai",
"transport": {
"baseUrl": "https://api.publicai.co/v1/chat/completions"
},
"models": [
{
"id": "auto",
"name": "Auto (Community)"
}
]
};
+29
View File
@@ -0,0 +1,29 @@
export default {
"id": "puter",
"alias": "puter",
"transport": {
"baseUrl": "https://api.puter.com/puterai/openai/v1/chat/completions"
},
"models": [
{
"id": "gpt-5",
"name": "GPT-5"
},
{
"id": "claude-opus-4",
"name": "Claude Opus 4"
},
{
"id": "gemini-3-pro-preview",
"name": "Gemini 3 Pro"
},
{
"id": "grok-4",
"name": "Grok 4"
},
{
"id": "deepseek-chat",
"name": "DeepSeek V3"
}
]
};
+60
View File
@@ -0,0 +1,60 @@
export default {
"id": "qoder",
"alias": "qd",
"transport": {
"baseUrl": "https://api3.qoder.sh/algo/api/v2/service/pro/sse/agent_chat_generation",
"headers": {},
"timeoutMs": 120000,
"stallTimeoutMs": 120000
},
"models": [
{
"id": "auto",
"name": "Qoder Auto"
},
{
"id": "ultimate",
"name": "Qoder Ultimate"
},
{
"id": "performance",
"name": "Qoder Performance"
},
{
"id": "efficient",
"name": "Qoder Efficient"
},
{
"id": "lite",
"name": "Qoder Lite"
},
{
"id": "qmodel",
"name": "Qwen 3.6 Plus (Qoder)"
},
{
"id": "qmodel_latest",
"name": "Qoder Qwen 3.7 Max"
},
{
"id": "dmodel",
"name": "DeepSeek V4 Pro (Qoder)"
},
{
"id": "dfmodel",
"name": "DeepSeek V4 Flash (Qoder)"
},
{
"id": "gm51model",
"name": "GLM 5.1 (Qoder)"
},
{
"id": "kmodel",
"name": "Kimi K2.6 (Qoder)"
},
{
"id": "mmodel",
"name": "MiniMax M2.7 (Qoder)"
}
]
};
+28
View File
@@ -0,0 +1,28 @@
export default {
"id": "qwen",
"alias": "qw",
"transport": {
"baseUrl": "https://portal.qwen.ai/v1/chat/completions",
"clientId": "f0304373b74a44d2b584a3fb70ca9e56",
"tokenUrl": "https://chat.qwen.ai/api/v1/oauth2/token",
"authUrl": "https://chat.qwen.ai/api/v1/oauth2/device/code"
},
"models": [
{
"id": "qwen3-coder-plus",
"name": "Qwen3 Coder Plus"
},
{
"id": "qwen3-coder-flash",
"name": "Qwen3 Coder Flash"
},
{
"id": "vision-model",
"name": "Qwen3 Vision Model"
},
{
"id": "coder-model",
"name": "Qwen3.6 Coder Model"
}
]
};
+27
View File
@@ -0,0 +1,27 @@
export default {
"id": "recraft",
"alias": "recraft",
"transport": null,
"models": [
{
"id": "recraftv3",
"name": "Recraft V3",
"type": "image",
"params": [
"n",
"size",
"style"
]
},
{
"id": "recraftv2",
"name": "Recraft V2",
"type": "image",
"params": [
"n",
"size",
"style"
]
}
]
};
+17
View File
@@ -0,0 +1,17 @@
export default {
"id": "reka",
"alias": "reka",
"transport": {
"baseUrl": "https://api.reka.ai/v1/chat/completions"
},
"models": [
{
"id": "reka-flash-3",
"name": "Reka Flash 3"
},
{
"id": "reka-edge-2603",
"name": "Reka Edge 2603"
}
]
};
+35
View File
@@ -0,0 +1,35 @@
export default {
"id": "runwayml",
"alias": "runwayml",
"transport": null,
"models": [
{
"id": "gen4_image",
"name": "Gen-4 Image",
"type": "image",
"params": [
"size"
]
},
{
"id": "gen4_image_turbo",
"name": "Gen-4 Image Turbo",
"type": "image",
"params": [
"size"
]
},
{
"id": "gen4_turbo",
"name": "Gen-4 Turbo",
"type": "video",
"params": []
},
{
"id": "gen3a_turbo",
"name": "Gen-3 Alpha Turbo",
"type": "video",
"params": []
}
]
};
+21
View File
@@ -0,0 +1,21 @@
export default {
"id": "sambanova",
"alias": "sambanova",
"transport": {
"baseUrl": "https://api.sambanova.ai/v1/chat/completions"
},
"models": [
{
"id": "Meta-Llama-3.1-405B-Instruct",
"name": "Llama 3.1 405B"
},
{
"id": "Meta-Llama-3.1-70B-Instruct",
"name": "Llama 3.1 70B"
},
{
"id": "Meta-Llama-3.1-8B-Instruct",
"name": "Llama 3.1 8B"
}
]
};
+21
View File
@@ -0,0 +1,21 @@
export default {
"id": "scaleway",
"alias": "scaleway",
"transport": {
"baseUrl": "https://api.scaleway.ai/v1/chat/completions"
},
"models": [
{
"id": "qwen3-235b-a22b-instruct-2507",
"name": "Qwen3 235B"
},
{
"id": "llama-3.3-70b-instruct",
"name": "Llama 3.3 70B"
},
{
"id": "mistral-small-3.1-24b-instruct-2503",
"name": "Mistral Small 3.1"
}
]
};
+25
View File
@@ -0,0 +1,25 @@
export default {
"id": "sdwebui",
"alias": "sdwebui",
"transport": null,
"models": [
{
"id": "stable-diffusion-v1-5",
"name": "Stable Diffusion v1.5",
"type": "image",
"params": [
"n",
"size"
]
},
{
"id": "sdxl-base-1.0",
"name": "SDXL Base 1.0",
"type": "image",
"params": [
"n",
"size"
]
}
]
};
@@ -0,0 +1,73 @@
export default {
"id": "siliconflow",
"alias": "siliconflow",
"transport": {
"baseUrl": "https://api.siliconflow.com/v1/chat/completions"
},
"models": [
{
"id": "deepseek-ai/DeepSeek-V4-Pro",
"name": "DeepSeek V4 Pro"
},
{
"id": "deepseek-ai/DeepSeek-V4-Flash",
"name": "DeepSeek V4 Flash"
},
{
"id": "deepseek-ai/DeepSeek-V3.2",
"name": "DeepSeek V3.2"
},
{
"id": "deepseek-ai/DeepSeek-V3.2-Exp",
"name": "DeepSeek V3.2 Exp"
},
{
"id": "deepseek-ai/DeepSeek-V3.1",
"name": "DeepSeek V3.1"
},
{
"id": "deepseek-ai/DeepSeek-V3.1-Terminus",
"name": "DeepSeek V3.1 Terminus"
},
{
"id": "deepseek-ai/DeepSeek-R1",
"name": "DeepSeek R1"
},
{
"id": "Qwen/Qwen3.5-397B-A17B",
"name": "Qwen 3.5 397B A17B"
},
{
"id": "Qwen/Qwen3.5-122B-A10B",
"name": "Qwen 3.5 122B A10B"
},
{
"id": "zai-org/GLM-5.1",
"name": "GLM 5.1"
},
{
"id": "zai-org/GLM-5",
"name": "GLM 5"
},
{
"id": "moonshotai/Kimi-K2.6",
"name": "Kimi K2.6"
},
{
"id": "moonshotai/Kimi-K2.5",
"name": "Kimi K2.5"
},
{
"id": "openai/gpt-oss-120b",
"name": "GPT OSS 120B"
},
{
"id": "MiniMaxAI/MiniMax-M2.5",
"name": "MiniMax M2.5"
},
{
"id": "inclusionAI/Ling-flash-2.0",
"name": "Ling Flash 2.0"
}
]
};
@@ -0,0 +1,48 @@
export default {
"id": "stability-ai",
"alias": "stability-ai",
"transport": null,
"models": [
{
"id": "stable-image-ultra",
"name": "Stable Image Ultra",
"type": "image",
"params": [
"size"
]
},
{
"id": "stable-image-core",
"name": "Stable Image Core",
"type": "image",
"params": [
"size",
"style"
]
},
{
"id": "sd3.5-large",
"name": "Stable Diffusion 3.5 Large",
"type": "image",
"params": [
"size"
]
},
{
"id": "sd3.5-large-turbo",
"name": "Stable Diffusion 3.5 Large Turbo",
"type": "image",
"params": [
"size"
]
},
{
"id": "sd3.5-medium",
"name": "Stable Diffusion 3.5 Medium",
"type": "image",
"params": [
"size"
]
}
]
};
+35
View File
@@ -0,0 +1,35 @@
export default {
"id": "together",
"alias": "together",
"transport": {
"baseUrl": "https://api.together.xyz/v1/chat/completions"
},
"models": [
{
"id": "meta-llama/Llama-3.3-70B-Instruct-Turbo",
"name": "Llama 3.3 70B Turbo"
},
{
"id": "deepseek-ai/DeepSeek-R1",
"name": "DeepSeek R1"
},
{
"id": "Qwen/Qwen3-235B-A22B",
"name": "Qwen3 235B"
},
{
"id": "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
"name": "Llama 4 Maverick"
},
{
"id": "BAAI/bge-large-en-v1.5",
"name": "BGE Large EN v1.5",
"type": "embedding"
},
{
"id": "togethercomputer/m2-bert-80M-8k-retrieval",
"name": "M2 BERT 80M 8K",
"type": "embedding"
}
]
};
+18
View File
@@ -0,0 +1,18 @@
export default {
"id": "uncloseai",
"alias": "uncloseai",
"transport": {
"baseUrl": "https://hermes.ai.unturf.com/v1/chat/completions",
"noAuth": true
},
"models": [
{
"id": "auto",
"name": "Auto (Free)"
},
{
"id": "gpt-4o-mini",
"name": "GPT-4o Mini"
}
]
};
@@ -0,0 +1,10 @@
export default {
"id": "vercel-ai-gateway",
"alias": "vercel-ai-gateway",
"transport": {
"baseUrl": "https://ai-gateway.vercel.sh/v1/chat/completions",
"retry": {
"429": 2
}
}
};
@@ -0,0 +1,25 @@
export default {
"id": "vertex-partner",
"alias": "vertex-partner",
"transport": {
"baseUrl": "https://aiplatform.googleapis.com"
},
"models": [
{
"id": "deepseek-ai/deepseek-v3.2-maas",
"name": "DeepSeek V3.2 (Vertex)"
},
{
"id": "qwen/qwen3-next-80b-a3b-thinking-maas",
"name": "Qwen3 Next 80B Thinking (Vertex)"
},
{
"id": "qwen/qwen3-next-80b-a3b-instruct-maas",
"name": "Qwen3 Next 80B Instruct (Vertex)"
},
{
"id": "zai-org/glm-5-maas",
"name": "GLM-5 (Vertex)"
}
]
};
+26
View File
@@ -0,0 +1,26 @@
export default {
"id": "vertex",
"alias": "vertex",
"transport": {
"baseUrl": "https://aiplatform.googleapis.com",
"format": "vertex"
},
"models": [
{
"id": "gemini-3.1-pro-preview",
"name": "Gemini 3.1 Pro Preview"
},
{
"id": "gemini-3.1-flash-lite-preview",
"name": "Gemini 3.1 Flash Lite Preview"
},
{
"id": "gemini-3-flash-preview",
"name": "Gemini 3 Flash Preview"
},
{
"id": "gemini-2.5-flash",
"name": "Gemini 2.5 Flash"
}
]
};

Some files were not shown because too many files have changed in this diff Show More