Spaces:
Paused
Paused
| // CLI Tools configuration | |
| import { getClaudeCodeDefaultModels } from "@omniroute/open-sse/config/providerRegistry"; | |
| const _cc = getClaudeCodeDefaultModels(); | |
| export const CLI_TOOLS = { | |
| claude: { | |
| id: "claude", | |
| name: "Claude Code", | |
| icon: "terminal", | |
| color: "#D97757", | |
| description: "Anthropic Claude Code CLI", | |
| docsUrl: "https://docs.anthropic.com/en/docs/claude-code/overview", | |
| configType: "env", | |
| envVars: { | |
| baseUrl: "ANTHROPIC_BASE_URL", | |
| model: "ANTHROPIC_MODEL", | |
| opusModel: "ANTHROPIC_DEFAULT_OPUS_MODEL", | |
| sonnetModel: "ANTHROPIC_DEFAULT_SONNET_MODEL", | |
| haikuModel: "ANTHROPIC_DEFAULT_HAIKU_MODEL", | |
| }, | |
| modelAliases: ["default", "sonnet", "opus", "haiku", "opusplan"], | |
| settingsFile: "~/.claude/settings.json", | |
| defaultCommand: "claude", | |
| defaultModels: [ | |
| { | |
| id: "model", | |
| name: "Default Model", | |
| alias: "model", | |
| envKey: "ANTHROPIC_MODEL", | |
| defaultValue: _cc.sonnet ? `cc/${_cc.sonnet}` : "cc/claude-sonnet-4-5-20250929", | |
| isTopLevel: true, | |
| }, | |
| { | |
| id: "smallFast", | |
| name: "Small Fast Model", | |
| alias: "smallFast", | |
| envKey: "ANTHROPIC_SMALL_FAST_MODEL", | |
| defaultValue: _cc.haiku ? `cc/${_cc.haiku}` : "cc/claude-haiku-4-5-20251001", | |
| isTopLevel: true, | |
| }, | |
| { | |
| id: "opus", | |
| name: "Claude Opus", | |
| alias: "opus", | |
| envKey: "ANTHROPIC_DEFAULT_OPUS_MODEL", | |
| defaultValue: _cc.opus ? `cc/${_cc.opus}` : "cc/claude-opus-4-5-20251101", | |
| }, | |
| { | |
| id: "sonnet", | |
| name: "Claude Sonnet", | |
| alias: "sonnet", | |
| envKey: "ANTHROPIC_DEFAULT_SONNET_MODEL", | |
| defaultValue: _cc.sonnet ? `cc/${_cc.sonnet}` : "cc/claude-sonnet-4-5-20250929", | |
| }, | |
| { | |
| id: "haiku", | |
| name: "Claude Haiku", | |
| alias: "haiku", | |
| envKey: "ANTHROPIC_DEFAULT_HAIKU_MODEL", | |
| defaultValue: _cc.haiku ? `cc/${_cc.haiku}` : "cc/claude-haiku-4-5-20251001", | |
| }, | |
| ], | |
| }, | |
| codex: { | |
| id: "codex", | |
| name: "OpenAI Codex CLI", | |
| image: "/providers/codex.png", | |
| color: "#10A37F", | |
| description: "OpenAI Codex CLI", | |
| docsUrl: "https://github.com/openai/codex", | |
| configType: "custom", | |
| defaultCommand: "codex", | |
| }, | |
| droid: { | |
| id: "droid", | |
| name: "Factory Droid", | |
| image: "/providers/droid.png", | |
| color: "#00D4FF", | |
| description: "Factory Droid AI Assistant", | |
| docsUrl: "/docs?section=cli-tools&tool=droid", | |
| configType: "custom", | |
| defaultCommand: "droid", | |
| }, | |
| openclaw: { | |
| id: "openclaw", | |
| name: "Open Claw", | |
| image: "/providers/openclaw.png", | |
| color: "#FF6B35", | |
| description: "Open Claw AI Assistant", | |
| docsUrl: "/docs?section=cli-tools&tool=openclaw", | |
| configType: "custom", | |
| defaultCommand: "openclaw", | |
| }, | |
| cursor: { | |
| id: "cursor", | |
| name: "Cursor", | |
| image: "/providers/cursor.png", | |
| color: "#000000", | |
| description: "Cursor AI Code Editor", | |
| docsUrl: "https://docs.cursor.com/settings/models", | |
| configType: "guide", | |
| requiresCloud: true, | |
| defaultCommands: ["agent", "cursor"], | |
| notes: [ | |
| { type: "warning", text: "Requires Cursor Pro account to use this feature." }, | |
| { | |
| type: "cloudCheck", | |
| text: "Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings.", | |
| }, | |
| ], | |
| guideSteps: [ | |
| { step: 1, title: "Open Settings", desc: "Go to Settings → Models" }, | |
| { step: 2, title: "Enable OpenAI API", desc: 'Enable "OpenAI API key" option' }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "API Key", type: "apiKeySelector" }, | |
| { step: 5, title: "Add Custom Model", desc: 'Click "View All Model" → "Add Custom Model"' }, | |
| { step: 6, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| }, | |
| windsurf: { | |
| id: "windsurf", | |
| name: "Windsurf", | |
| image: "/providers/windsurf.svg", | |
| color: "#4A90E2", | |
| description: "Windsurf AI-first IDE by Codeium", | |
| docsUrl: "https://windsurf.com/", | |
| configType: "guide", | |
| notes: [ | |
| { | |
| type: "warning", | |
| text: "Official Windsurf docs currently describe BYOK for select Claude models plus enterprise URL/token settings, not a generic custom OpenAI-compatible provider.", | |
| }, | |
| ], | |
| guideSteps: [ | |
| { | |
| step: 1, | |
| title: "Open AI Settings", | |
| desc: "Click the AI Settings icon in Windsurf or go to Settings", | |
| }, | |
| { | |
| step: 2, | |
| title: "Add Custom Provider", | |
| desc: 'Select "Add custom provider" (OpenAI-compatible)', | |
| }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "API Key", type: "apiKeySelector" }, | |
| { step: 5, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| }, | |
| cline: { | |
| id: "cline", | |
| name: "Cline", | |
| image: "/providers/cline.png", | |
| color: "#00D1B2", | |
| description: "Cline AI Coding Assistant CLI", | |
| docsUrl: "https://docs.cline.bot/", | |
| configType: "custom", | |
| defaultCommand: "cline", | |
| }, | |
| kilo: { | |
| id: "kilo", | |
| name: "Kilo Code", | |
| image: "/providers/kilocode.png", | |
| color: "#FF6B6B", | |
| description: "Kilo Code AI Assistant CLI", | |
| docsUrl: "/docs?section=cli-tools&tool=kilocode", | |
| configType: "custom", | |
| defaultCommand: "kilocode", | |
| }, | |
| continue: { | |
| id: "continue", | |
| name: "Continue", | |
| image: "/providers/continue.png", | |
| color: "#7C3AED", | |
| description: "Continue AI Assistant", | |
| docsUrl: "https://docs.continue.dev/", | |
| configType: "guide", | |
| guideSteps: [ | |
| { step: 1, title: "Open Config", desc: "Open Continue configuration file" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Select Model", type: "modelSelector" }, | |
| { | |
| step: 4, | |
| title: "Add Model Config", | |
| desc: "Add the following configuration to your models array:", | |
| }, | |
| ], | |
| codeBlock: { | |
| language: "json", | |
| code: `{ | |
| "apiBase": "{{baseUrl}}", | |
| "title": "{{model}}", | |
| "model": "{{model}}", | |
| "provider": "openai", | |
| "apiKey": "{{apiKey}}" | |
| }`, | |
| }, | |
| }, | |
| antigravity: { | |
| id: "antigravity", | |
| name: "Antigravity", | |
| image: "/providers/antigravity.png", | |
| color: "#4285F4", | |
| description: "Google Antigravity IDE with MITM", | |
| docsUrl: "/docs?section=cli-tools&tool=antigravity", | |
| configType: "mitm", | |
| modelAliases: [ | |
| "claude-opus-4-6-thinking", | |
| "claude-sonnet-4-6", | |
| "gemini-3-flash", | |
| "gpt-oss-120b-medium", | |
| "gemini-3.1-pro-high", | |
| "gemini-3.1-pro-low", | |
| ], | |
| defaultModels: [ | |
| { id: "gemini-3.1-pro-high", name: "Gemini 3.1 Pro High", alias: "gemini-3.1-pro-high" }, | |
| { id: "gemini-3.1-pro-low", name: "Gemini 3.1 Pro Low", alias: "gemini-3.1-pro-low" }, | |
| { id: "gemini-3-flash", name: "Gemini 3 Flash", alias: "gemini-3-flash" }, | |
| { | |
| id: "claude-sonnet-4-6", | |
| name: "Claude Sonnet 4.6", | |
| alias: "claude-sonnet-4-6", | |
| }, | |
| { | |
| id: "claude-opus-4-6-thinking", | |
| name: "Claude Opus 4.6 Thinking", | |
| alias: "claude-opus-4-6-thinking", | |
| }, | |
| { id: "gpt-oss-120b-medium", name: "GPT OSS 120B Medium", alias: "gpt-oss-120b-medium" }, | |
| ], | |
| }, | |
| copilot: { | |
| id: "copilot", | |
| name: "GitHub Copilot", | |
| image: "/providers/copilot.png", | |
| color: "#1F6FEB", | |
| description: "GitHub Copilot Chat — VS Code Extension", | |
| docsUrl: "https://code.visualstudio.com/docs/copilot/overview", | |
| configType: "custom", | |
| }, | |
| opencode: { | |
| id: "opencode", | |
| name: "OpenCode", | |
| imageLight: "/providers/opencode-light.svg", | |
| imageDark: "/providers/opencode-dark.svg", | |
| icon: "terminal", | |
| color: "#FF6B35", | |
| description: "OpenCode AI coding agent (Terminal)", | |
| docsUrl: "/docs?section=cli-tools&tool=opencode", | |
| configType: "guide", | |
| defaultCommand: "opencode", | |
| modelSelectionMode: "multiple", | |
| hideComboModels: true, | |
| previewConfigMode: "opencode", | |
| notes: [ | |
| { | |
| type: "warning", | |
| text: "Config path: Linux/macOS ~/.config/opencode/opencode.json • Windows %APPDATA%\\\\opencode\\\\opencode.json", | |
| }, | |
| { | |
| type: "warning", | |
| text: 'Thinking variant example: opencode run "implement this feature" --model omniroute/claude-sonnet-4-5-thinking --variant high', | |
| }, | |
| ], | |
| guideSteps: [ | |
| { step: 1, title: "Install OpenCode", desc: "Install via npm: npm install -g opencode-ai" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Set Base URL", desc: "opencode config set baseUrl {{baseUrl}}" }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| { | |
| step: 5, | |
| title: "Use Thinking Variant", | |
| desc: "For thinking models, run with --variant high/low/max (example command below).", | |
| }, | |
| ], | |
| codeBlock: { | |
| language: "json", | |
| code: `{ | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "omniroute": { | |
| "npm": "@ai-sdk/openai-compatible", | |
| "name": "OmniRoute", | |
| "options": { | |
| "baseURL": "{{baseUrl}}", | |
| "apiKey": "{{apiKey}}" | |
| }, | |
| "models": { | |
| "{{model}}": { "name": "{{model}}" }, | |
| "claude-sonnet-4-5-thinking": { "name": "claude-sonnet-4-5-thinking" }, | |
| "gemini-3.1-pro-high": { "name": "gemini-3.1-pro-high" }, | |
| "gemini-3-flash": { "name": "gemini-3-flash" } | |
| } | |
| } | |
| } | |
| }`, | |
| }, | |
| }, | |
| hermes: { | |
| id: "hermes", | |
| name: "Hermes", | |
| icon: "terminal", | |
| color: "#8B5CF6", | |
| description: "Hermes coding agent quick configuration", | |
| docsUrl: "/docs?section=cli-tools&tool=hermes", | |
| configType: "guide", | |
| defaultCommand: "hermes", | |
| guideSteps: [ | |
| { | |
| step: 1, | |
| title: "Open Hermes Config", | |
| desc: "Open your Hermes configuration file or create one if this is the first run.", | |
| }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| { | |
| step: 5, | |
| title: "Save Provider Block", | |
| desc: "Use the JSON block below as the OpenAI-compatible provider definition for OmniRoute.", | |
| }, | |
| ], | |
| codeBlock: { | |
| language: "json", | |
| code: `{ | |
| "provider": { | |
| "type": "openai", | |
| "baseURL": "{{baseUrl}}", | |
| "apiKey": "{{apiKey}}", | |
| "model": "{{model}}" | |
| } | |
| }`, | |
| }, | |
| }, | |
| amp: { | |
| id: "amp", | |
| name: "Amp CLI", | |
| icon: "terminal", | |
| color: "#F97316", | |
| description: "Sourcegraph Amp coding assistant CLI", | |
| docsUrl: "/docs?section=cli-tools&tool=amp", | |
| configType: "guide", | |
| defaultCommand: "amp", | |
| modelAliases: ["g25p", "g25f", "cs45", "g54"], | |
| notes: [ | |
| { | |
| type: "info", | |
| text: "Use OmniRoute model aliases to keep Amp shorthand mappings stable across provider updates.", | |
| }, | |
| { | |
| type: "warning", | |
| text: "Suggested shorthand examples: g25p → gemini/gemini-2.5-pro, g25f → gemini/gemini-2.5-flash, cs45 → cc/claude-sonnet-4-5-20250929.", | |
| }, | |
| ], | |
| guideSteps: [ | |
| { | |
| step: 1, | |
| title: "Install Amp", | |
| desc: "Install the Amp CLI using the package manager supported by your environment.", | |
| }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| { | |
| step: 5, | |
| title: "Add Shorthands", | |
| desc: "Map Amp shorthand names such as g25p or cs45 to OmniRoute aliases in your local config.", | |
| }, | |
| ], | |
| codeBlock: { | |
| language: "bash", | |
| code: `export OPENAI_API_KEY="{{apiKey}}" | |
| export OPENAI_BASE_URL="{{baseUrl}}" | |
| amp --model "{{model}}" | |
| # Example shorthand aliases you can map locally: | |
| # g25p -> gemini/gemini-2.5-pro | |
| # cs45 -> cc/claude-sonnet-4-5-20250929`, | |
| }, | |
| }, | |
| kiro: { | |
| id: "kiro", | |
| name: "Kiro AI", | |
| image: "/providers/kiro.png", | |
| icon: "psychology_alt", | |
| color: "#FF6B35", | |
| description: "Amazon Kiro — AI-powered IDE with MITM", | |
| docsUrl: "/docs?section=cli-tools&tool=kiro", | |
| configType: "mitm", | |
| guideSteps: [ | |
| { step: 1, title: "Open Kiro Settings", desc: "Go to Settings → AI Provider" }, | |
| { step: 2, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 3, title: "API Key", type: "apiKeySelector" }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| ], | |
| }, | |
| qwen: { | |
| id: "qwen", | |
| name: "Qwen Code", | |
| icon: "psychology", | |
| color: "#10B981", | |
| description: | |
| "Alibaba Qwen Code CLI — supports OpenAI, Anthropic & Gemini providers via OmniRoute", | |
| docsUrl: "https://qwenlm.github.io/qwen-code-docs/en/users/configuration/model-providers/", | |
| configType: "guide", | |
| defaultCommand: "qwen", | |
| notes: [ | |
| { | |
| type: "info", | |
| text: "Qwen Code supports multiple provider types (openai, anthropic, gemini) via modelProviders in settings.json. OmniRoute works as an OpenAI-compatible endpoint.", | |
| }, | |
| { | |
| type: "info", | |
| text: "Any model available in OmniRoute can be used — not just Qwen models. Select from Qwen, Claude, Gemini, GPT, and more.", | |
| }, | |
| { | |
| type: "warning", | |
| text: "Config path: Linux/macOS ~/.qwen/settings.json • Windows %USERPROFILE%\\.qwen\\settings.json", | |
| }, | |
| { | |
| type: "error", | |
| text: "Qwen OAuth free tier was discontinued on 2026-04-15. Use OmniRoute with alicode/openrouter/anthropic/gemini providers instead.", | |
| }, | |
| ], | |
| modelAliases: [ | |
| "coder-model", | |
| "qwen3-coder-plus", | |
| "qwen3-coder-flash", | |
| "vision-model", | |
| "claude-sonnet-4-6", | |
| "claude-opus-4-6-thinking", | |
| "gemini-3-flash", | |
| "gemini-3.1-pro-high", | |
| ], | |
| defaultModels: [ | |
| { | |
| id: "coder-model", | |
| name: "Coder Model (Qwen 3.6 Plus)", | |
| alias: "coder-model", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "coder-model", | |
| isTopLevel: true, | |
| }, | |
| { | |
| id: "qwen3-coder-plus", | |
| name: "Qwen 3 Coder Plus", | |
| alias: "qwen3-coder-plus", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "qwen3-coder-plus", | |
| }, | |
| { | |
| id: "qwen3-coder-flash", | |
| name: "Qwen 3 Coder Flash", | |
| alias: "qwen3-coder-flash", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "qwen3-coder-flash", | |
| }, | |
| { | |
| id: "vision-model", | |
| name: "Vision Model (Multimodal)", | |
| alias: "vision-model", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "vision-model", | |
| }, | |
| { | |
| id: "claude-sonnet-4-6", | |
| name: "Claude Sonnet 4.6", | |
| alias: "claude-sonnet-4-6", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "claude-sonnet-4-6", | |
| }, | |
| { | |
| id: "claude-opus-4-6-thinking", | |
| name: "Claude Opus 4.6 Thinking", | |
| alias: "claude-opus-4-6-thinking", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "claude-opus-4-6-thinking", | |
| }, | |
| { | |
| id: "gemini-3.1-pro-high", | |
| name: "Gemini 3.1 Pro High", | |
| alias: "gemini-3.1-pro-high", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "gemini-3.1-pro-high", | |
| }, | |
| { | |
| id: "gemini-3-flash", | |
| name: "Gemini 3 Flash", | |
| alias: "gemini-3-flash", | |
| envKey: "OPENAI_MODEL", | |
| defaultValue: "gemini-3-flash", | |
| }, | |
| ], | |
| guideSteps: [ | |
| { step: 1, title: "Install Qwen Code", desc: "npm install -g @qwen-code/qwen-code" }, | |
| { step: 2, title: "API Key", type: "apiKeySelector" }, | |
| { step: 3, title: "Base URL", value: "{{baseUrl}}", copyable: true }, | |
| { step: 4, title: "Select Model", type: "modelSelector" }, | |
| { | |
| step: 5, | |
| title: "Save Config", | |
| desc: "Click Save Config below to write your settings.json automatically.", | |
| }, | |
| ], | |
| codeBlock: { | |
| language: "json", | |
| code: `# ~/.qwen/settings.json — OmniRoute via security.auth | |
| { | |
| "security": { | |
| "auth": { | |
| "selectedType": "openai", | |
| "apiKey": "{{apiKey}}", | |
| "baseUrl": "{{baseUrl}}" | |
| } | |
| }, | |
| "model": { | |
| "name": "{{model}}" | |
| } | |
| }`, | |
| }, | |
| }, | |
| custom: { | |
| id: "custom", | |
| name: "Custom CLI", | |
| icon: "terminal", | |
| color: "#10B981", | |
| description: "Generic OpenAI-compatible CLI or SDK configuration generator", | |
| docsUrl: "/docs?section=cli-tools", | |
| configType: "custom-builder", | |
| }, | |
| }; | |
| // Get all provider models for mapping dropdown | |
| export const getProviderModelsForMapping = (providers) => { | |
| const result = []; | |
| providers.forEach((conn) => { | |
| if (conn.isActive && (conn.testStatus === "active" || conn.testStatus === "success")) { | |
| result.push({ | |
| connectionId: conn.id, | |
| provider: conn.provider, | |
| name: conn.name, | |
| models: conn.models || [], | |
| }); | |
| } | |
| }); | |
| return result; | |
| }; | |