From 08256a3502f8598342665f10e89a032c74ab1634 Mon Sep 17 00:00:00 2001 From: Regis <92858615+Regis-RCR@users.noreply.github.com> Date: Mon, 16 Mar 2026 17:26:27 +0100 Subject: [PATCH] feat(api): add Kilo Gateway provider (335+ models, 6 free, auto-routing) Kilo Gateway (api.kilo.ai/api/gateway) is an OpenAI-compatible API offering 335+ models via a single API key, including 6 free models and 3 auto-routing models (frontier/balanced/free). This is distinct from the existing KiloCode provider which uses OAuth + /api/openrouter/ endpoint. - Register kilo-gateway in providerRegistry.ts (alias: kg) - Add to APIKEY_PROVIDERS in providers.ts - Add models endpoint config in route.ts - Add official Kilo AI icon (favicon) --- open-sse/config/providerRegistry.ts | 20 ++++++++++++++++++++ public/providers/kilo-gateway.png | Bin 0 -> 472 bytes src/app/api/providers/[id]/models/route.ts | 8 ++++++++ src/shared/constants/providers.ts | 10 ++++++++++ 4 files changed, 38 insertions(+) create mode 100644 public/providers/kilo-gateway.png diff --git a/open-sse/config/providerRegistry.ts b/open-sse/config/providerRegistry.ts index 531c111c4b..6e6cca0a94 100644 --- a/open-sse/config/providerRegistry.ts +++ b/open-sse/config/providerRegistry.ts @@ -939,6 +939,26 @@ export const REGISTRY: Record = { passthroughModels: true, }, + "kilo-gateway": { + id: "kilo-gateway", + alias: "kg", + format: "openai", + executor: "default", + baseUrl: "https://api.kilo.ai/api/gateway/chat/completions", + modelsUrl: "https://api.kilo.ai/api/gateway/models", + authType: "apikey", + authHeader: "bearer", + models: [ + { id: "kilo-auto/frontier", name: "Kilo Auto Frontier" }, + { id: "kilo-auto/balanced", name: "Kilo Auto Balanced" }, + { id: "kilo-auto/free", name: "Kilo Auto Free" }, + { id: "nvidia/nemotron-3-super-120b-a12b:free", name: "Nemotron 3 Super 120B (Free)" }, + { id: "minimax/minimax-m2.5:free", name: "MiniMax M2.5 (Free)" }, + { id: "arcee-ai/trinity-large-preview:free", name: "Trinity Large Preview (Free)" }, + ], + passthroughModels: true, + }, + vertex: { id: "vertex", alias: "vertex", diff --git a/public/providers/kilo-gateway.png b/public/providers/kilo-gateway.png new file mode 100644 index 0000000000000000000000000000000000000000..fd8d4bdd1bc9b91e6d38e848174cc02af4e85ea2 GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz07Sip>6gA}f5OZp5{=H%((7!twx zcA6pIAp;)Q;3EyY%3bCxXirLiCU7Q(tB~u+jlD_DQIEopZ4KV8)H|U=M74CzkDtri z#1vc7uW#NOy6wdK1N9AC_cXazPg%C!KL1p3ecCr|2@M7lKTk7_#W$C}t+Q@frBxVG z;r6l&U7+yP5o{*!wKYfqo9+K~>c2eJUA?uMS&?V9?qqz%CUJYZ?1C2@_WRg9UR~)8?}}`@ z)7ij~c9T)}`pI+NVs#SYJDVa-&f;pgV4M|sx|W4e^ye)lt`7}Gc9D#_+?5(NHmCmd zF@>3(n6^6MXOa9FU)FWgZEGg=sX4@kALMo{%`*++i2ZEHc;Y6vgnp|vd$@?2>|&Vt1JKj literal 0 HcmV?d00001 diff --git a/src/app/api/providers/[id]/models/route.ts b/src/app/api/providers/[id]/models/route.ts index 216bafd0bc..3ddd9b0d6d 100644 --- a/src/app/api/providers/[id]/models/route.ts +++ b/src/app/api/providers/[id]/models/route.ts @@ -263,6 +263,14 @@ const PROVIDER_MODELS_CONFIG: Record = { authPrefix: "Bearer ", parseResponse: (data) => data.data || data.models || [], }, + "kilo-gateway": { + url: "https://api.kilo.ai/api/gateway/models", + method: "GET", + headers: { "Content-Type": "application/json" }, + authHeader: "Authorization", + authPrefix: "Bearer ", + parseResponse: (data) => data.data || data.models || [], + }, }; /** diff --git a/src/shared/constants/providers.ts b/src/shared/constants/providers.ts index 53871bc490..b35847f13b 100644 --- a/src/shared/constants/providers.ts +++ b/src/shared/constants/providers.ts @@ -370,6 +370,16 @@ export const APIKEY_PROVIDERS = { website: "https://synthetic.new", passthroughModels: true, }, + "kilo-gateway": { + id: "kilo-gateway", + alias: "kg", + name: "Kilo Gateway", + icon: "hub", + color: "#617A91", + textIcon: "KG", + website: "https://kilo.ai", + passthroughModels: true, + }, vertex: { id: "vertex", alias: "vertex",