diff --git a/src-tauri/src/chat_manager/provider_adapter/mod.rs b/src-tauri/src/chat_manager/provider_adapter/mod.rs index 21a697a5a..223cd0e0b 100644 --- a/src-tauri/src/chat_manager/provider_adapter/mod.rs +++ b/src-tauri/src/chat_manager/provider_adapter/mod.rs @@ -372,6 +372,7 @@ pub fn adapter_for(credential: &ProviderCredential) -> Box Box::new(openai::OpenRouterAdapter), "literouter" => Box::new(literouter::LiteRouterAdapter), "pollinations" => Box::new(pollinations::PollinationsAdapter), + "modelrunner" => Box::new(openai::OpenAIAdapter), "lettuce-host" => Box::new(openai::OpenAIAdapter), "lettuce-engine" => Box::new(lettuce_engine::LettuceEngineAdapter), _ => Box::new(openai::OpenAIAdapter), diff --git a/src-tauri/src/providers/config.rs b/src-tauri/src/providers/config.rs index 1adf46e6c..cae2185b1 100644 --- a/src-tauri/src/providers/config.rs +++ b/src-tauri/src/providers/config.rs @@ -161,6 +161,7 @@ fn get_all_provider_configs_internal() -> Vec { "https://integrate.api.nvidia.com/v1", ), ("anannas", "Anannas AI", "https://api.anannas.ai/v1"), + ("modelrunner", "ModelRunner", "https://queue.modelrunner.run/v1"), ("groq", "Groq", "https://api.groq.com"), ("stability", "Stability AI", "https://api.stability.ai"), ( diff --git a/src/assets/modelrunner.png b/src/assets/modelrunner.png new file mode 100644 index 000000000..ed9dac222 Binary files /dev/null and b/src/assets/modelrunner.png differ diff --git a/src/core/i18n/locales/de.ts b/src/core/i18n/locales/de.ts index 6e2367b48..8cd9b519d 100644 --- a/src/core/i18n/locales/de.ts +++ b/src/core/i18n/locales/de.ts @@ -7781,6 +7781,13 @@ export const deMessages: DeepPartialMessageTree = { s3: "Erstelle einen neuen Key, falls keiner vorhanden ist.", s4: "Kopiere den Key und füge ihn in LettuceAI ein.", }, + modelrunner: { + title: "So findest du deinen ModelRunner-API-Key", + s1: "Besuche modelrunner.ai und melde dich an.", + s2: "Öffne Settings und dann API Keys.", + s3: "Erstelle einen neuen Key, falls keiner vorhanden ist.", + s4: "Kopiere den Key und füge ihn in LettuceAI ein.", + }, anannas: { title: "So findest du deinen Anannas-API-Key", s1: "Gehe zu dashboard.anannas.ai und melde dich an.", diff --git a/src/core/i18n/locales/el.ts b/src/core/i18n/locales/el.ts index 2c0849034..e7ed08717 100644 --- a/src/core/i18n/locales/el.ts +++ b/src/core/i18n/locales/el.ts @@ -7781,6 +7781,13 @@ export const elMessages: DeepPartialMessageTree = { s3: "Δημιουργήστε νέο κλειδί αν δεν βλέπετε κανένα.", s4: "Αντιγράψτε το κλειδί και επικολλήστε το στο LettuceAI.", }, + modelrunner: { + title: "Πώς να βρείτε το κλειδί API ModelRunner", + s1: "Επισκεφτείτε το modelrunner.ai και συνδεθείτε.", + s2: "Ανοίξτε το Settings και μετά το API Keys.", + s3: "Δημιουργήστε νέο κλειδί αν δεν βλέπετε κανένα.", + s4: "Αντιγράψτε το κλειδί και επικολλήστε το στο LettuceAI.", + }, anannas: { title: "Πώς να βρείτε το κλειδί API Anannas", s1: "Μεταβείτε στο dashboard.anannas.ai και συνδεθείτε.", diff --git a/src/core/i18n/locales/en.ts b/src/core/i18n/locales/en.ts index 70e5b1c27..f61962014 100644 --- a/src/core/i18n/locales/en.ts +++ b/src/core/i18n/locales/en.ts @@ -8703,6 +8703,13 @@ export const enMessages = { s3: "Create a new key if you do not see one.", s4: "Copy the key and paste it into LettuceAI.", }, + modelrunner: { + title: "How to find your ModelRunner API key", + s1: "Visit modelrunner.ai and sign in.", + s2: "Open Settings, then API Keys.", + s3: "Create a new key if you do not see one.", + s4: "Copy the key and paste it into LettuceAI.", + }, anannas: { title: "How to find your Anannas API key", s1: "Go to dashboard.anannas.ai and log in.", diff --git a/src/core/i18n/locales/es.ts b/src/core/i18n/locales/es.ts index a7ed8aab9..411d0eb84 100644 --- a/src/core/i18n/locales/es.ts +++ b/src/core/i18n/locales/es.ts @@ -7781,6 +7781,13 @@ export const esMessages: DeepPartialMessageTree = { s3: "Crea una nueva key si no ves ninguna.", s4: "Copia la key y pégala en LettuceAI.", }, + modelrunner: { + title: "Cómo encontrar tu API key de ModelRunner", + s1: "Visita modelrunner.ai e inicia sesión.", + s2: "Abre Settings y luego API Keys.", + s3: "Crea una nueva key si no ves ninguna.", + s4: "Copia la key y pégala en LettuceAI.", + }, anannas: { title: "Cómo encontrar tu API key de Anannas", s1: "Ve a dashboard.anannas.ai e inicia sesión.", diff --git a/src/core/i18n/locales/fil.ts b/src/core/i18n/locales/fil.ts index 666fd8799..0d18715ea 100644 --- a/src/core/i18n/locales/fil.ts +++ b/src/core/i18n/locales/fil.ts @@ -7781,6 +7781,13 @@ export const filMessages: DeepPartialMessageTree = { s3: "Gumawa ng bagong key kung wala kang nakita.", s4: "Kopyahin ang key at i-paste ito sa LettuceAI.", }, + modelrunner: { + title: "Paano mahanap ang iyong ModelRunner API key", + s1: "Bisitahin ang modelrunner.ai at mag-sign in.", + s2: "Buksan ang Settings, tapos ang API Keys.", + s3: "Gumawa ng bagong key kung wala kang nakita.", + s4: "Kopyahin ang key at i-paste ito sa LettuceAI.", + }, anannas: { title: "Paano mahanap ang iyong Anannas API key", s1: "Pumunta sa dashboard.anannas.ai at mag-log in.", diff --git a/src/core/i18n/locales/fr.ts b/src/core/i18n/locales/fr.ts index 6e28540e8..75d2d61c7 100644 --- a/src/core/i18n/locales/fr.ts +++ b/src/core/i18n/locales/fr.ts @@ -7781,6 +7781,13 @@ export const frMessages: DeepPartialMessageTree = { s3: "Crée une nouvelle clé si tu n'en vois pas.", s4: "Copie la clé et colle-la dans LettuceAI.", }, + modelrunner: { + title: "Comment trouver ta clé API ModelRunner", + s1: "Visite modelrunner.ai et connecte-toi.", + s2: "Ouvre Settings, puis API Keys.", + s3: "Crée une nouvelle clé si tu n'en vois pas.", + s4: "Copie la clé et colle-la dans LettuceAI.", + }, anannas: { title: "Comment trouver ta clé API Anannas", s1: "Va sur dashboard.anannas.ai et connecte-toi.", diff --git a/src/core/i18n/locales/hi.ts b/src/core/i18n/locales/hi.ts index 20d766ea4..7190a2f3b 100644 --- a/src/core/i18n/locales/hi.ts +++ b/src/core/i18n/locales/hi.ts @@ -6965,6 +6965,13 @@ export const hiMessages: DeepPartialMessageTree = { s3: "यदि आपको कोई नहीं दिखे तो एक नई key बनाएँ।", s4: "Key कॉपी करें और LettuceAI में पेस्ट करें।", }, + modelrunner: { + title: "अपनी ModelRunner API key कैसे खोजें", + s1: "modelrunner.ai पर जाएँ और साइन इन करें।", + s2: "Settings खोलें, फिर API Keys।", + s3: "यदि आपको कोई नहीं दिखे तो एक नई key बनाएँ।", + s4: "Key कॉपी करें और LettuceAI में पेस्ट करें।", + }, anannas: { title: "अपनी Anannas API key कैसे खोजें", s1: "dashboard.anannas.ai पर जाएँ और लॉग इन करें।", diff --git a/src/core/i18n/locales/id.ts b/src/core/i18n/locales/id.ts index d5d5ca577..76c276e61 100644 --- a/src/core/i18n/locales/id.ts +++ b/src/core/i18n/locales/id.ts @@ -6965,6 +6965,13 @@ export const idMessages: DeepPartialMessageTree = { s3: "Buat kunci baru jika belum ada.", s4: "Salin kunci dan tempelkan ke LettuceAI.", }, + modelrunner: { + title: "Cara menemukan kunci API ModelRunner Anda", + s1: "Kunjungi modelrunner.ai dan masuk.", + s2: "Buka Settings, lalu API Keys.", + s3: "Buat kunci baru jika belum ada.", + s4: "Salin kunci dan tempelkan ke LettuceAI.", + }, anannas: { title: "Cara menemukan kunci API Anannas Anda", s1: "Buka dashboard.anannas.ai dan masuk.", diff --git a/src/core/i18n/locales/it.ts b/src/core/i18n/locales/it.ts index c9b2b6b3d..a74d81d51 100644 --- a/src/core/i18n/locales/it.ts +++ b/src/core/i18n/locales/it.ts @@ -6965,6 +6965,13 @@ export const itMessages: DeepPartialMessageTree = { s3: "Crea una nuova chiave se non ne vedi una.", s4: "Copia la chiave e incollala in LettuceAI.", }, + modelrunner: { + title: "Come trovare la tua chiave API ModelRunner", + s1: "Visita modelrunner.ai e accedi.", + s2: "Apri Settings e poi API Keys.", + s3: "Crea una nuova chiave se non ne vedi una.", + s4: "Copia la chiave e incollala in LettuceAI.", + }, anannas: { title: "Come trovare la tua chiave API Anannas", s1: "Vai su dashboard.anannas.ai e accedi.", diff --git a/src/core/i18n/locales/ja.ts b/src/core/i18n/locales/ja.ts index c6c45230e..8d0934240 100644 --- a/src/core/i18n/locales/ja.ts +++ b/src/core/i18n/locales/ja.ts @@ -6965,6 +6965,13 @@ export const jaMessages: DeepPartialMessageTree = { s3: "見当たらない場合は新しいキーを作成します。", s4: "キーをコピーしてLettuceAIに貼り付けます。", }, + modelrunner: { + title: "ModelRunner APIキーの見つけ方", + s1: "modelrunner.aiにアクセスしてサインインします。", + s2: "Settings を開き、API Keys に移動します。", + s3: "見当たらない場合は新しいキーを作成します。", + s4: "キーをコピーしてLettuceAIに貼り付けます。", + }, anannas: { title: "Anannas APIキーの見つけ方", s1: "dashboard.anannas.aiにアクセスしてログインします。", diff --git a/src/core/i18n/locales/ko.ts b/src/core/i18n/locales/ko.ts index ea8164e4f..9a46a9a63 100644 --- a/src/core/i18n/locales/ko.ts +++ b/src/core/i18n/locales/ko.ts @@ -7781,6 +7781,13 @@ export const koMessages: DeepPartialMessageTree = { s3: "없으면 새 키를 만드세요.", s4: "키를 복사하여 LettuceAI에 붙여넣으세요.", }, + modelrunner: { + title: "ModelRunner API 키를 찾는 방법", + s1: "modelrunner.ai를 방문하여 로그인하세요.", + s2: "Settings를 연 다음 API Keys로 이동하세요.", + s3: "없으면 새 키를 만드세요.", + s4: "키를 복사하여 LettuceAI에 붙여넣으세요.", + }, anannas: { title: "Anannas API 키를 찾는 방법", s1: "dashboard.anannas.ai로 이동하여 로그인하세요.", diff --git a/src/core/i18n/locales/nl.ts b/src/core/i18n/locales/nl.ts index 81b27e43d..0c33b1523 100644 --- a/src/core/i18n/locales/nl.ts +++ b/src/core/i18n/locales/nl.ts @@ -7781,6 +7781,13 @@ export const nlMessages: DeepPartialMessageTree = { s3: "Maak een nieuwe sleutel aan als je er geen ziet.", s4: "Kopieer de sleutel en plak hem in LettuceAI.", }, + modelrunner: { + title: "Hoe vind je je ModelRunner API-sleutel", + s1: "Bezoek modelrunner.ai en meld je aan.", + s2: "Open Settings en daarna API Keys.", + s3: "Maak een nieuwe sleutel aan als je er geen ziet.", + s4: "Kopieer de sleutel en plak hem in LettuceAI.", + }, anannas: { title: "Hoe vind je je Anannas API-sleutel", s1: "Ga naar dashboard.anannas.ai en log in.", diff --git a/src/core/i18n/locales/no.ts b/src/core/i18n/locales/no.ts index e59b8d60c..e785af063 100644 --- a/src/core/i18n/locales/no.ts +++ b/src/core/i18n/locales/no.ts @@ -7781,6 +7781,13 @@ export const noMessages: DeepPartialMessageTree = { s3: "Opprett en ny nøkkel hvis du ikke ser en.", s4: "Kopier nøkkelen og lim den inn i LettuceAI.", }, + modelrunner: { + title: "Slik finner du ModelRunner API-nøkkelen", + s1: "Besøk modelrunner.ai og logg inn.", + s2: "Åpne Settings og deretter API Keys.", + s3: "Opprett en ny nøkkel hvis du ikke ser en.", + s4: "Kopier nøkkelen og lim den inn i LettuceAI.", + }, anannas: { title: "Slik finner du Anannas API-nøkkelen", s1: "Gå til dashboard.anannas.ai og logg inn.", diff --git a/src/core/i18n/locales/pl.ts b/src/core/i18n/locales/pl.ts index 507305a5d..b08a14f5f 100644 --- a/src/core/i18n/locales/pl.ts +++ b/src/core/i18n/locales/pl.ts @@ -7054,6 +7054,13 @@ export const plMessages: DeepPartialMessageTree = { s3: "Utwórz nowy klucz jeśli go nie widzisz.", s4: "Skopiuj klucz i wklej go do LettuceAI.", }, + modelrunner: { + title: "Jak znaleźć klucz API ModelRunner", + s1: "Odwiedź modelrunner.ai i zaloguj się.", + s2: "Otwórz Settings, a następnie API Keys.", + s3: "Utwórz nowy klucz jeśli go nie widzisz.", + s4: "Skopiuj klucz i wklej go do LettuceAI.", + }, anannas: { title: "Jak znaleźć klucz API Anannas", s1: "Przejdź na dashboard.anannas.ai i zaloguj się.", diff --git a/src/core/i18n/locales/pt.ts b/src/core/i18n/locales/pt.ts index 15df3f406..52990f10e 100644 --- a/src/core/i18n/locales/pt.ts +++ b/src/core/i18n/locales/pt.ts @@ -6965,6 +6965,13 @@ export const ptMessages: DeepPartialMessageTree = { s3: "Create a new key if you do not see one.", s4: "Copy the key and paste it into LettuceAI.", }, + modelrunner: { + title: "Como encontrar a sua chave de API do ModelRunner", + s1: "Acesse modelrunner.ai e faça login.", + s2: "Abra Settings e depois API Keys.", + s3: "Crie uma nova chave se não vir nenhuma.", + s4: "Copie a chave e cole-a no LettuceAI.", + }, anannas: { title: "How to find your Anannas API key", s1: "Go to dashboard.anannas.ai and log in.", diff --git a/src/core/i18n/locales/ru.ts b/src/core/i18n/locales/ru.ts index bbe48c645..ff522bfc2 100644 --- a/src/core/i18n/locales/ru.ts +++ b/src/core/i18n/locales/ru.ts @@ -7781,6 +7781,13 @@ export const ruMessages: DeepPartialMessageTree = { s3: "Создайте новый ключ, если вы его не видите.", s4: "Скопируйте ключ и вставьте его в LettuceAI.", }, + modelrunner: { + title: "Как найти ключ API ModelRunner", + s1: "Посетите сайт modelrunner.ai и войдите в систему.", + s2: "Откройте Settings, затем API Keys.", + s3: "Создайте новый ключ, если вы его не видите.", + s4: "Скопируйте ключ и вставьте его в LettuceAI.", + }, anannas: { title: "Как найти ключ API Anannas", s1: "Перейдите на Dashboard.anannas.ai и войдите в систему.", diff --git a/src/core/i18n/locales/tr.ts b/src/core/i18n/locales/tr.ts index 42c3d577c..e0709c9e8 100644 --- a/src/core/i18n/locales/tr.ts +++ b/src/core/i18n/locales/tr.ts @@ -7781,6 +7781,13 @@ export const trMessages: DeepPartialMessageTree = { s3: "Görmüyorsanız yeni bir anahtar oluşturun.", s4: "Anahtarı kopyalayıp LettuceAI'ye yapıştırın.", }, + modelrunner: { + title: "ModelRunner API anahtarınızı nasıl bulursunuz", + s1: "modelrunner.ai adresini ziyaret edin ve oturum açın.", + s2: "Settings ve ardından API Keys bölümünü açın.", + s3: "Görmüyorsanız yeni bir anahtar oluşturun.", + s4: "Anahtarı kopyalayıp LettuceAI'ye yapıştırın.", + }, anannas: { title: "_Nasıl yapılır? ", s1: "Dashboard.anannas.ai adresine gidin ve giriş yapın.", diff --git a/src/core/i18n/locales/vi.ts b/src/core/i18n/locales/vi.ts index c0539e518..307b95d25 100644 --- a/src/core/i18n/locales/vi.ts +++ b/src/core/i18n/locales/vi.ts @@ -6965,6 +6965,13 @@ export const viMessages: DeepPartialMessageTree = { s3: "Create a new key if you do not see one.", s4: "Copy the key and paste it into LettuceAI.", }, + modelrunner: { + title: "Cách tìm khóa API ModelRunner của bạn", + s1: "Truy cập modelrunner.ai và đăng nhập.", + s2: "Mở Settings, rồi API Keys.", + s3: "Tạo khóa mới nếu bạn không thấy khóa nào.", + s4: "Sao chép khóa và dán vào LettuceAI.", + }, anannas: { title: "How to find your Anannas API key", s1: "Go to dashboard.anannas.ai and log in.", diff --git a/src/core/i18n/locales/zh-Hans.ts b/src/core/i18n/locales/zh-Hans.ts index 73035b32e..945a51290 100644 --- a/src/core/i18n/locales/zh-Hans.ts +++ b/src/core/i18n/locales/zh-Hans.ts @@ -7781,6 +7781,13 @@ export const zhHansMessages: DeepPartialMessageTree = { s3: "如未看到密钥请创建新密钥。", s4: "复制密钥并粘贴到 LettuceAI 中。", }, + modelrunner: { + title: "如何找到你的 ModelRunner API 密钥", + s1: "访问 modelrunner.ai 并登录。", + s2: "打开 Settings,然后进入 API Keys。", + s3: "如未看到密钥请创建新密钥。", + s4: "复制密钥并粘贴到 LettuceAI 中。", + }, anannas: { title: "如何找到你的 Anannas API 密钥", s1: "前往 dashboard.anannas.ai 并登录。", diff --git a/src/core/i18n/locales/zh-Hant.ts b/src/core/i18n/locales/zh-Hant.ts index 1d0d55bb0..4f989b126 100644 --- a/src/core/i18n/locales/zh-Hant.ts +++ b/src/core/i18n/locales/zh-Hant.ts @@ -7781,6 +7781,13 @@ export const zhHantMessages: DeepPartialMessageTree = { s3: "如果看不到金鑰,請建立新金鑰。", s4: "複製金鑰並貼入 LettuceAI。", }, + modelrunner: { + title: "如何找到您的 ModelRunner API 金鑰", + s1: "前往 modelrunner.ai 並登入。", + s2: "開啟 Settings,然後前往 API Keys。", + s3: "如果看不到金鑰,請建立新金鑰。", + s4: "複製金鑰並貼入 LettuceAI。", + }, anannas: { title: "如何找到您的 Anannas API 金鑰", s1: "前往 dashboard.anannas.ai 並登入。", diff --git a/src/core/storage/schemas.ts b/src/core/storage/schemas.ts index 5afc8fc1a..79f91532c 100644 --- a/src/core/storage/schemas.ts +++ b/src/core/storage/schemas.ts @@ -2037,6 +2037,57 @@ export const PROVIDER_PARAMETER_SUPPORT = { ollamaStop: false, }, }, + + modelrunner: { + providerId: "modelrunner", + displayName: "ModelRunner", + reasoningSupport: "none" as ReasoningSupport, + supportedParameters: { + temperature: true, + topP: true, + maxOutputTokens: true, + contextLength: false, + frequencyPenalty: true, + presencePenalty: true, + topK: false, + reasoningEnabled: false, + reasoningEffort: false, + reasoningBudgetTokens: false, + llamaGpuLayers: false, + llamaThreads: false, + llamaThreadsBatch: false, + llamaSeed: false, + llamaRopeFreqBase: false, + llamaRopeFreqScale: false, + llamaOffloadKqv: false, + llamaBatchSize: false, + llamaKvType: false, + llamaFlashAttention: false, + llamaChatTemplateOverride: false, + llamaMmprojPath: false, + llamaChatTemplatePreset: false, + llamaRawCompletionFallback: false, + llamaSamplerProfile: false, + llamaSamplerOrder: false, + llamaMinP: false, + llamaTypicalP: false, + ollamaNumCtx: false, + ollamaNumPredict: false, + ollamaNumKeep: false, + ollamaNumBatch: false, + ollamaNumGpu: false, + ollamaNumThread: false, + ollamaTfsZ: false, + ollamaTypicalP: false, + ollamaMinP: false, + ollamaMirostat: false, + ollamaMirostatTau: false, + ollamaMirostatEta: false, + ollamaRepeatPenalty: false, + ollamaSeed: false, + ollamaStop: false, + }, + }, ollama: { providerId: "ollama", displayName: "Ollama", diff --git a/src/core/utils/providerIcons.tsx b/src/core/utils/providerIcons.tsx index 516e4f141..e9aa81d0b 100644 --- a/src/core/utils/providerIcons.tsx +++ b/src/core/utils/providerIcons.tsx @@ -25,6 +25,7 @@ import MoonShotAIIcon from "../../assets/moonshot_light.svg"; import GeminiIcon from "../../assets/gemini.svg"; import QwenIcon from "../../assets/qwen.svg"; import FeatherlessIcon from "../../assets/featherless.svg"; +import ModelRunnerIcon from "../../assets/modelrunner.png"; import NvidiaIcon from "../../assets/nvidia.svg"; import ChutesAIIcon from "../../assets/chutes_ai.jpeg"; import OllamaIcon from "../../assets/ollama_light.png"; @@ -55,6 +56,7 @@ const ICON_MAP: Record = { qwen: Qwen, groq: Groq, featherless: Featherless, + modelrunner: ModelRunner, nvidia: NVIDIA, chutes: Chutes, ollama: Ollama, diff --git a/src/ui/pages/onboarding/ProviderSetup.tsx b/src/ui/pages/onboarding/ProviderSetup.tsx index ae47ab269..f5ef2c3aa 100644 --- a/src/ui/pages/onboarding/ProviderSetup.tsx +++ b/src/ui/pages/onboarding/ProviderSetup.tsx @@ -452,6 +452,7 @@ function getProviderDescription(providerId: string, t: TFunction): string { return t("onboarding.provider.descriptions.anthropic"); case "nanogpt": case "featherless": + case "modelrunner": case "openrouter": return t("onboarding.provider.descriptions.aggregator"); case "openai-compatible": @@ -491,6 +492,7 @@ function getProviderDescriptionShort(providerId: string, t: TFunction): string { return t("onboarding.provider.descriptionsShort.anthropic"); case "nanogpt": case "featherless": + case "modelrunner": case "openrouter": return t("onboarding.provider.descriptionsShort.aggregator"); case "openai-compatible": diff --git a/src/ui/pages/onboarding/WhereToFind.tsx b/src/ui/pages/onboarding/WhereToFind.tsx index 953382872..97610881f 100644 --- a/src/ui/pages/onboarding/WhereToFind.tsx +++ b/src/ui/pages/onboarding/WhereToFind.tsx @@ -99,6 +99,11 @@ function buildGuides(t: TFunction): Record { steps: guideSteps("featherless"), url: "https://featherless.ai/", }, + modelrunner: { + title: guideTitle("modelrunner"), + steps: guideSteps("modelrunner"), + url: "https://modelrunner.ai/settings/api-keys", + }, anannas: { title: guideTitle("anannas"), steps: guideSteps("anannas"), diff --git a/src/ui/pages/onboarding/components/ProviderCard.tsx b/src/ui/pages/onboarding/components/ProviderCard.tsx index e1fdf2fd8..bc7772a3b 100644 --- a/src/ui/pages/onboarding/components/ProviderCard.tsx +++ b/src/ui/pages/onboarding/components/ProviderCard.tsx @@ -114,6 +114,7 @@ function getProviderDescription(providerId: string, t: TFunction): string { return t("onboarding.provider.descriptions.anthropic"); case "nanogpt": case "featherless": + case "modelrunner": case "openrouter": return t("onboarding.provider.descriptions.aggregator"); case "openai-compatible": @@ -155,6 +156,7 @@ function getProviderDescriptionShort(providerId: string, t: TFunction): string { return t("onboarding.provider.descriptionsShort.anthropic"); case "nanogpt": case "featherless": + case "modelrunner": case "openrouter": return t("onboarding.provider.descriptionsShort.aggregator"); case "openai-compatible": diff --git a/src/ui/pages/onboarding/hooks/onboardingReducer.ts b/src/ui/pages/onboarding/hooks/onboardingReducer.ts index 5df6517e1..e44c163d7 100644 --- a/src/ui/pages/onboarding/hooks/onboardingReducer.ts +++ b/src/ui/pages/onboarding/hooks/onboardingReducer.ts @@ -221,6 +221,8 @@ export function getDefaultBaseUrl(providerId: string): string { return "https://llm.chutes.ai"; case "featherless": return "https://api.featherless.ai/v1"; + case "modelrunner": + return "https://queue.modelrunner.run/v1"; case "openrouter": return "https://openrouter.ai/api"; case "openai": diff --git a/src/ui/pages/onboarding/hooks/providerReducer.ts b/src/ui/pages/onboarding/hooks/providerReducer.ts index 036910c17..325402338 100644 --- a/src/ui/pages/onboarding/hooks/providerReducer.ts +++ b/src/ui/pages/onboarding/hooks/providerReducer.ts @@ -70,6 +70,8 @@ export function getDefaultBaseUrl(providerId: string): string { return "https://llm.chutes.ai"; case "featherless": return "https://api.featherless.ai/v1"; + case "modelrunner": + return "https://queue.modelrunner.run/v1"; case "openrouter": return "https://openrouter.ai/api"; case "openai":