diff --git a/src/config/claudeDesktopProviderPresets.ts b/src/config/claudeDesktopProviderPresets.ts index d5dbff51a..0bb548ec6 100644 --- a/src/config/claudeDesktopProviderPresets.ts +++ b/src/config/claudeDesktopProviderPresets.ts @@ -766,7 +766,7 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ icon: "atlascloud", }, { - name: "SudoCode", + name: "SudoCode.chat", websiteUrl: "https://sudocode.chat", apiKeyUrl: "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", @@ -780,6 +780,19 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ partnerPromotionKey: "sudocode", icon: "sudocode", }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + category: "third_party", + baseUrl: "https://sudocode.us", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + endpointCandidates: ["https://sudocode.us", "https://sudocode.run"], + isPartner: true, + icon: "sudocode-us", + }, { name: "ClaudeAPI", websiteUrl: "https://claudeapi.com", diff --git a/src/config/claudeProviderPresets.ts b/src/config/claudeProviderPresets.ts index 837fbb10f..9673ecc6a 100644 --- a/src/config/claudeProviderPresets.ts +++ b/src/config/claudeProviderPresets.ts @@ -837,7 +837,7 @@ export const providerPresets: ProviderPreset[] = [ icon: "atlascloud", }, { - name: "SudoCode", + name: "SudoCode.chat", websiteUrl: "https://sudocode.chat", apiKeyUrl: "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", @@ -854,6 +854,22 @@ export const providerPresets: ProviderPreset[] = [ partnerPromotionKey: "sudocode", icon: "sudocode", }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://sudocode.us", + ANTHROPIC_AUTH_TOKEN: "", + API_TIMEOUT_MS: "300000", + }, + }, + endpointCandidates: ["https://sudocode.us", "https://sudocode.run"], + category: "third_party", + isPartner: true, + icon: "sudocode-us", + }, { name: "ClaudeAPI", websiteUrl: "https://claudeapi.com", diff --git a/src/config/codexProviderPresets.ts b/src/config/codexProviderPresets.ts index 461200764..e8ab6b77b 100644 --- a/src/config/codexProviderPresets.ts +++ b/src/config/codexProviderPresets.ts @@ -1197,7 +1197,7 @@ requires_openai_auth = true`, icon: "atlascloud", }, { - name: "SudoCode", + name: "SudoCode.chat", websiteUrl: "https://sudocode.chat", apiKeyUrl: "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", @@ -1220,6 +1220,29 @@ requires_openai_auth = true`, partnerPromotionKey: "sudocode", icon: "sudocode", }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + category: "third_party", + auth: generateThirdPartyAuth(""), + config: `model_provider = "custom" +model = "gpt-5.5" +review_model = "gpt-5.5" +model_reasoning_effort = "high" +disable_response_storage = true +model_verbosity = "high" + +[model_providers.custom] +name = "sudocode" +base_url = "https://sudocode.us/v1" +wire_api = "responses" +requires_openai_auth = true`, + endpointCandidates: ["https://sudocode.us/v1", "https://sudocode.run/v1"], + apiFormat: "openai_responses", + isPartner: true, + icon: "sudocode-us", + }, { name: "ClaudeCN", websiteUrl: "https://claudecn.top", diff --git a/src/config/geminiProviderPresets.ts b/src/config/geminiProviderPresets.ts index ce580260f..8bb0b8f07 100644 --- a/src/config/geminiProviderPresets.ts +++ b/src/config/geminiProviderPresets.ts @@ -210,6 +210,25 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [ endpointCandidates: ["https://apinebula.com"], icon: "apinebula", }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + settingsConfig: { + env: { + GOOGLE_GEMINI_BASE_URL: "https://sudocode.us", + GEMINI_API_KEY: "", + GEMINI_MODEL: "gemini-3.1-flash-lite", + }, + }, + baseURL: "https://sudocode.us", + model: "gemini-3.1-flash-lite", + description: "SudoCode.us", + category: "third_party", + isPartner: true, + endpointCandidates: ["https://sudocode.us", "https://sudocode.run"], + icon: "sudocode-us", + }, { name: "Cubence", websiteUrl: "https://cubence.com", diff --git a/src/config/hermesProviderPresets.ts b/src/config/hermesProviderPresets.ts index ce1689b48..1b8dfd8b3 100644 --- a/src/config/hermesProviderPresets.ts +++ b/src/config/hermesProviderPresets.ts @@ -1060,7 +1060,7 @@ export const hermesProviderPresets: HermesProviderPreset[] = [ }, }, { - name: "SudoCode", + name: "SudoCode.chat", websiteUrl: "https://sudocode.chat", apiKeyUrl: "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", @@ -1084,6 +1084,29 @@ export const hermesProviderPresets: HermesProviderPreset[] = [ model: { default: "gpt-5.6-sol", provider: "sudocode" }, }, }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + settingsConfig: { + name: "sudocode_us", + base_url: "https://sudocode.us/v1", + api_key: "", + api_mode: "codex_responses", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + }, + ], + }, + category: "third_party", + isPartner: true, + icon: "sudocode-us", + suggestedDefaults: { + model: { default: "gpt-5.5", provider: "sudocode_us" }, + }, + }, { name: "Cubence", websiteUrl: "https://cubence.com", diff --git a/src/config/openclawProviderPresets.ts b/src/config/openclawProviderPresets.ts index 96c46492e..792a21f71 100644 --- a/src/config/openclawProviderPresets.ts +++ b/src/config/openclawProviderPresets.ts @@ -1946,7 +1946,7 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, { - name: "SudoCode", + name: "SudoCode.chat", websiteUrl: "https://sudocode.chat", apiKeyUrl: "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", @@ -1978,6 +1978,37 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + settingsConfig: { + baseUrl: "https://sudocode.us/v1", + apiKey: "", + api: "openai-responses", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + }, + ], + }, + category: "third_party", + isPartner: true, + icon: "sudocode-us", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "sudocode-us/gpt-5.5", + }, + }, + }, { name: "Cubence", websiteUrl: "https://cubence.com", diff --git a/src/config/opencodeProviderPresets.ts b/src/config/opencodeProviderPresets.ts index fea50e117..d43bd0cf4 100644 --- a/src/config/opencodeProviderPresets.ts +++ b/src/config/opencodeProviderPresets.ts @@ -1619,13 +1619,13 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, { - name: "SudoCode", + name: "SudoCode.chat", websiteUrl: "https://sudocode.chat", apiKeyUrl: "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", settingsConfig: { npm: "@ai-sdk/openai", - name: "SudoCode", + name: "SudoCode.chat", options: { baseURL: "https://api.sudocode.chat/v1", apiKey: "", @@ -1647,6 +1647,33 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + settingsConfig: { + npm: "@ai-sdk/openai", + name: "SudoCode.us", + options: { + baseURL: "https://sudocode.us/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "gpt-5.5": { name: "GPT-5.5" }, + }, + }, + category: "third_party", + isPartner: true, + icon: "sudocode-us", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, { name: "Cubence", websiteUrl: "https://cubence.com", diff --git a/src/icons/extracted/index.ts b/src/icons/extracted/index.ts index 8bb7e1f08..fa0d22321 100644 --- a/src/icons/extracted/index.ts +++ b/src/icons/extracted/index.ts @@ -24,6 +24,7 @@ import _runapi from "./runapi.jpg"; import _shengsuanyun from "./shengsuanyun.svg?url"; import _subrouter from "./subrouter.svg?url"; import _sudocode from "./sudocode.png"; +import _sudocodeUs from "./sudocode-us.png"; import _teamorouter from "./TeamoRouter-icon-dark.png"; import _unity2 from "./unity2.png"; import _zetaapi from "./zetaapi-icon.png"; @@ -125,6 +126,7 @@ export const iconUrls: Record = { shengsuanyun: _shengsuanyun, subrouter: _subrouter, sudocode: _sudocode, + "sudocode-us": _sudocodeUs, teamorouter: _teamorouter, unity2: _unity2, zetaapi: _zetaapi, diff --git a/src/icons/extracted/metadata.ts b/src/icons/extracted/metadata.ts index abb7852c3..fe65040cb 100644 --- a/src/icons/extracted/metadata.ts +++ b/src/icons/extracted/metadata.ts @@ -56,11 +56,29 @@ export const iconMetadata: Record = { }, sudocode: { name: "sudocode", - displayName: "SudoCode", + displayName: "SudoCode.chat", category: "ai-provider", keywords: [ "sudocode", "sudo code", + "chat", + "gateway", + "relay", + "claude", + "codex", + "gemini", + "openclaw", + ], + defaultColor: "#111111", + }, + "sudocode-us": { + name: "sudocode-us", + displayName: "SudoCode.us", + category: "ai-provider", + keywords: [ + "sudocode", + "sudo code", + "us", "gateway", "relay", "claude", diff --git a/src/icons/extracted/sudocode-us.png b/src/icons/extracted/sudocode-us.png new file mode 100644 index 000000000..cee5fe5c0 Binary files /dev/null and b/src/icons/extracted/sudocode-us.png differ