From 4cb1f4cff6e3635ac7576b44d9dcdb216982b3fe Mon Sep 17 00:00:00 2001 From: Thibault Jaigu Date: Wed, 24 Jun 2026 08:38:20 +0100 Subject: [PATCH] feat: add Requesty as an OpenAI-compatible LLM provider --- app/src/components/chat/ModelSelector.tsx | 1 + app/src/components/models/providers.ts | 13 +++++++++++++ orchestrator/app/services/model_adapters.py | 10 ++++++++++ 3 files changed, 24 insertions(+) diff --git a/app/src/components/chat/ModelSelector.tsx b/app/src/components/chat/ModelSelector.tsx index 18ac72d2..b72bfde4 100644 --- a/app/src/components/chat/ModelSelector.tsx +++ b/app/src/components/chat/ModelSelector.tsx @@ -56,6 +56,7 @@ function getProviderLabel(provider: string, providerName?: string): string { deepseek: 'DeepSeek', fireworks: 'Fireworks', openrouter: 'OpenRouter', + requesty: 'Requesty', 'nano-gpt': 'NanoGPT', }; return labels[provider] || provider.charAt(0).toUpperCase() + provider.slice(1); diff --git a/app/src/components/models/providers.ts b/app/src/components/models/providers.ts index f13922f4..6ee1c745 100644 --- a/app/src/components/models/providers.ts +++ b/app/src/components/models/providers.ts @@ -67,6 +67,12 @@ const OPENROUTER_ICON = dataUri( '' ); +const REQUESTY_ICON = dataUri( + '' + + '' + + '' +); + const NANOGPT_ICON = dataUri( '' + '' + @@ -114,6 +120,13 @@ export const PROVIDER_META: ProviderMeta[] = [ iconUrl: OPENROUTER_ICON, website: 'https://openrouter.ai/keys', }, + { + key: 'requesty', + name: 'Requesty', + brandColor: '#6366f1', + iconUrl: REQUESTY_ICON, + website: 'https://app.requesty.ai/api-keys', + }, { key: 'groq', name: 'Groq', diff --git a/orchestrator/app/services/model_adapters.py b/orchestrator/app/services/model_adapters.py index c59bc816..850d55ac 100644 --- a/orchestrator/app/services/model_adapters.py +++ b/orchestrator/app/services/model_adapters.py @@ -36,6 +36,7 @@ "openai": "OPENAI_API_KEY", "anthropic": "ANTHROPIC_API_KEY", "openrouter": "OPENROUTER_API_KEY", + "requesty": "REQUESTY_API_KEY", "groq": "GROQ_API_KEY", "together": "TOGETHER_API_KEY", "deepseek": "DEEPSEEK_API_KEY", @@ -100,6 +101,15 @@ def __init__(self, env_var: str, message: str) -> None: "website": "https://openrouter.ai", "requires_key": True, }, + "requesty": { + "name": "Requesty", + "description": "Access to 300+ AI models through a unified OpenAI-compatible API", + "base_url": "https://router.requesty.ai/v1", + "api_type": "openai", + "default_headers": {"HTTP-Referer": "https://tesslate.com", "X-Title": "OpenSail"}, + "website": "https://requesty.ai", + "requires_key": True, + }, "nano-gpt": { "name": "NanoGPT", "description": "Pay-per-prompt access to 200+ AI models",