Files
OmniRoute/docs/i18n/fr

🚀 OmniRoute — The Free AI Gateway (Français)

🌐 Languages: 🇺🇸 English · 🇪🇸 es · 🇫🇷 fr · 🇩🇪 de · 🇮🇹 it · 🇷🇺 ru · 🇨🇳 zh-CN · 🇯🇵 ja · 🇰🇷 ko · 🇸🇦 ar · 🇮🇳 hi · 🇮🇳 in · 🇹🇭 th · 🇻🇳 vi · 🇮🇩 id · 🇲🇾 ms · 🇳🇱 nl · 🇵🇱 pl · 🇸🇪 sv · 🇳🇴 no · 🇩🇰 da · 🇫🇮 fi · 🇵🇹 pt · 🇷🇴 ro · 🇭🇺 hu · 🇧🇬 bg · 🇸🇰 sk · 🇺🇦 uk-UA · 🇮🇱 he · 🇵🇭 phi · 🇧🇷 pt-BR · 🇨🇿 cs · 🇹🇷 tr


Never stop coding. Smart routing to FREE & low-cost AI models with automatic fallback.

Votre proxy API universel : un point de terminaison, plus de 60 fournisseurs, aucun temps d'arrêt. Désormais avecServeur MCP (25 outils),Protocole A2A,Systèmes de mémoire/compétencesetApplication de bureau Electron.

Fin de discussions • Intégrations • Génération d'images • Vidéo • Musique • Audio • Reclassement •Recherche sur le Web• Serveur MCP • Protocole A2A • 100 % TypeScript---

npm version Docker Hub

NPM Downloads NPM Downloads

NPM Downloads Docker Pulls GitHub Downloads (all assets, all releases)

stars open issues license last commit total contributions code size pr closed tag github streak followers fork watch

License Website WhatsApp

🌐 Site Web • [🚀 Démarrage rapide](#-démarrage rapide) • 💡 Fonctionnalités📖 Documents • [💰 Tarification](#-tarification-en un coup d'œil) • 💬 WhatsApp

🌐Disponible en :🇺🇸 anglais | 🇧🇷 Português (Brésil) | 🇪🇸 Español | 🇫🇷 Français | 🇮🇹 Italien | 🇷🇺 Русский | 🇨🇳 中文 (简体) | 🇩🇪 Deutsch | 🇮🇳 हिन्दी | 🇹🇭 ไทย | 🇺🇦 Українська | 🇸🇦 العربية | 🇯🇵 日本語 | 🇻🇳 Tiếng Việt | 🇧🇬 Български | 🇩🇰 Dansk | 🇫🇮 Suomi | 🇮🇱 עברית | 🇭🇺 Magyar | 🇮🇩 Bahasa Indonésie | 🇰🇷 한국어 | 🇲🇾 Bahasa Melayu | 🇳🇱 Pays-Bas | 🇳🇴 Norsk | 🇵🇹 Português (Portugal) | 🇷🇴 Română | 🇵🇱 Polski | 🇸🇰 Slovenčina | 🇸🇪 Svenska | 🇵🇭 Philippin | 🇨🇿 Čeština---

🖼️ Main Dashboard

OmniRoute Dashboard

📸 Dashboard Preview

<détails>

Cliquez pour voir les captures d'écran du tableau de bord
Pages Capture d'écran
Fournisseurs Fournisseurs
Combinaisons Combos
Analyses Analyses
Santé Santé
Traducteur Traducteur
Paramètres Paramètres
Outils CLI Outils CLI
Journaux d'utilisation Utilisation
Points de terminaison Points de terminaison

🤖 Free AI Provider for your favorite coding agents

Connectez n'importe quel outil IDE ou CLI alimenté par l'IA via OmniRoute — une passerelle API gratuite pour un codage illimité.

OpenClaw
OpenClaw

205K NanoBot
NanoBot

20,9K PicoClaw
PicoGriffe

14,6K ZeroClaw
ZéroClaw

9,9K IronClaw
Griffe de Fer

2,1K OpenCode
OpenCode

106K Codex CLI
CLI Codex

60,8K Claude Code
Claude Code

67,3K Gemini CLI
CLI Gemini

94,7K Code kilo
Code kilo

15,5K

📡 Tous les agents se connectent via http://localhost:20128/v1 ou http://cloud.omniroute.online/v1 — une configuration, des modèles et un quota illimités---

🤔 Why OmniRoute?

Arrêtez de gaspiller de l'argent et d'atteindre vos limites :

  • Le quota d'abonnement expire chaque mois sans être utilisé
  • Les limites de débit vous empêchent de coder
  • API coûteuses (20-50 $/mois par fournisseur)
  • Commutation manuelle entre les fournisseurs

OmniRoute résout ce problème :

  • Maximiser les abonnements- Suivez le quota, utilisez chaque bit avant la réinitialisation
  • Repli automatique- Abonnement → Clé API → Pas cher → Gratuit, aucun temps d'arrêt
  • Multi-compte- Round-robin entre les comptes par fournisseur
  • Universel- Fonctionne avec Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, n'importe quel outil CLI---

📧 Support

💬Rejoignez notre communauté !Groupe WhatsApp — Obtenez de l'aide, partagez des conseils et restez informé.

-Site Internet: omniroute.online -GitHub : github.com/diegosouzapw/OmniRoute -Problèmes : github.com/diegosouzapw/OmniRoute/issues -WhatsApp : Groupe communautaire -Contribuer : voir CONTRIBUTING.md, ouvrir un PR ou choisir un « bon premier numéro » -Projet original : 9router par decolua### 🐛 Reporting a Bug?

Lors de l'ouverture d'un ticket, veuillez exécuter la commande system-info et joindre le fichier généré :```bash npm run system-info


Cela génère un `system-info.txt` avec votre version de Node.js, la version d'OmniRoute, les détails du système d'exploitation, les outils CLI installés (qoder, gemini, claude, codex, antigravity, droid, etc.), l'état Docker/PM2 et les packages système — tout ce dont nous avons besoin pour reproduire rapidement votre problème. Joignez le fichier directement à votre problème GitHub.---

## 🔄 How It Works

┌─────────────┐ │ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...) │ Tool │ └──────┬──────┘ │ http://localhost:20128/v1 ↓ ┌─────────────────────────────────────────┐ │ OmniRoute (Smart Router) │ │ • Format translation (OpenAI ↔ Claude) │ │ • Quota tracking + Embeddings + Images │ │ • Auto token refresh │ └──────┬──────────────────────────────────┘ │ ├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI │ ↓ quota exhausted ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc. │ ↓ budget limit ├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M) │ ↓ budget limit └─→ [Tier 4: FREE] Qoder, Qwen, Kiro (unlimited)

Result: Never stop coding, minimal cost


---

## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases

>**Tous les développeurs utilisant des outils d'IA sont confrontés quotidiennement à ces problèmes.**OmniRoute a été conçu pour tous les résoudre : des dépassements de coûts aux blocages régionaux, des flux OAuth interrompus aux opérations de protocole et à l'observabilité de l'entreprise.

<détails>
<summary><b>💸 1. "Je paie un abonnement coûteux mais je suis quand même interrompu par des limites"</b></summary>

Les développeurs paient entre 20 et 200 $/mois pour Claude Pro, Codex Pro ou GitHub Copilot. Même payant, le quota est plafonné : 5 heures d'utilisation, limites hebdomadaires ou limites de tarif à la minute. En cours de session de codage, le fournisseur ne répond plus et le développeur perd en fluidité et en productivité.

**Comment OmniRoute le résout :**

-**Smart 4-Tier Fallback**— Si le quota d'abonnement est épuisé, redirige automatiquement vers la clé API → Pas cher → Gratuit sans intervention manuelle
-**Suivi des limites du fournisseur**— Actualisation des instantanés de quotas mis en cache selon une planification côté serveur (par défaut `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES=70`) avec actualisation manuelle disponible dans l'interface utilisateur
-**Support multi-comptes**— Plusieurs comptes par fournisseur avec tourniquet automatique — lorsqu'un compte est épuisé, passe au suivant
-**Combos personnalisés**— Chaînes de secours personnalisables avec 9 stratégies d'équilibrage (priorité, pondérée, remplissage en premier, round-robin, P2C, aléatoire, la moins utilisée, optimisée en termes de coût, strictement aléatoire)
-**Codex Business Quotas**— Surveillance des quotas d'espace de travail Business/Équipe directement dans le tableau de bord</details>

<détails>
<summary><b>🔌 2. "Je dois utiliser plusieurs fournisseurs mais chacun a une API différente"</b></summary>

OpenAI utilise un format, Claude (Anthropic) en utilise un autre, Gemini encore un autre. Si un développeur souhaite tester des modèles de différents fournisseurs ou utiliser un modèle de secours entre eux, il doit reconfigurer les SDK, modifier les points de terminaison et gérer les formats incompatibles. Les fournisseurs personnalisés (FriendLI, NIM) ont des points de terminaison de modèle non standard.

**Comment OmniRoute le résout :**

-**Unified Endpoint**— Un seul « http://localhost:20128/v1 » sert de proxy pour plus de 60 fournisseurs.
-**Traduction de format**— Automatique et transparente : OpenAI ↔ Claude ↔ Gemini ↔ API Responses
-**Response Sanitization**— Supprime les champs non standard (`x_groq`, `usage_breakdown`, `service_tier`) qui cassent OpenAI SDK v1.83+
-**Role Normalization**— Convertit « développeur » → « système » pour les fournisseurs non OpenAI ; `système` → `utilisateur` pour GLM/ERNIE
-**Think Tag Extraction**— Extrait les blocs `<think>` de modèles comme DeepSeek R1 dans un `reasoning_content` standardisé
-**Sortie structurée pour Gemini**— Conversion automatique `json_schema` → `responseMimeType`/`responseSchema`
-**`stream` est par défaut `false`**— S'aligne sur les spécifications OpenAI, évitant ainsi le SSE inattendu dans les SDK Python/Rust/Go</details>

<détails>
<summary><b>🌐 3. "Mon fournisseur d'IA bloque ma région/mon pays"</b></summary>

Des fournisseurs comme OpenAI/Codex bloquent laccès depuis certaines régions géographiques. Les utilisateurs obtiennent des erreurs telles que « unsupported_country_region_territory » lors des connexions OAuth et API. Ceci est particulièrement frustrant pour les développeurs des pays en développement.

**Comment OmniRoute le résout :**

-**Configuration proxy à 3 niveaux**— Proxy configurable à 3 niveaux : global (tout le trafic), par fournisseur (un seul fournisseur) et par connexion/clé
-**Badges proxy à code couleur**— Indicateurs visuels : 🟢 proxy global, 🟡 proxy fournisseur, 🔵 proxy de connexion, affichant toujours l'adresse IP
-**Échange de jetons OAuth via proxy**— Le flux OAuth passe également par le proxy, résolvant `unsupported_country_region_territory`
-**Tests de connexion via proxy**— Les tests de connexion utilisent le proxy configuré (plus de contournement direct)
-**Support SOCKS5**— Prise en charge complète du proxy SOCKS5 pour le routage sortant
-**TLS Fingerprint Spoofing**— Empreinte digitale TLS de type navigateur via `wreq-js` pour contourner la détection des robots
-**🔏 Correspondance d'empreintes digitales CLI**— Réorganise les en-têtes et les champs de corps pour qu'ils correspondent aux signatures binaires CLI natives, réduisant ainsi considérablement le risque de signalement de compte. L'adresse IP du proxy est préservée : vous bénéficiez simultanément du masquage furtif**et**IP</details>

<détails>
<summary><b>🆓 4. "Je veux utiliser l'IA pour coder mais je n'ai pas d'argent"</b></summary>

Tout le monde ne peut pas payer entre 20 et 200 $/mois pour des abonnements à lIA. Les étudiants, les développeurs des pays émergents, les amateurs et les indépendants doivent avoir accès à des modèles de qualité à un coût nul.

**Comment OmniRoute le résout :**

-**Fournisseurs gratuits intégrés**— Prise en charge native des fournisseurs 100 % gratuits : Qoder (5 modèles illimités via OAuth : kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 modèles illimités : qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + ID AWS Builder gratuits), Gemini CLI (180 000 jetons/mois gratuits)
-**Ollama Cloud**— Modèles Ollama hébergés dans le cloud sur « api.ollama.com » avec niveau gratuit « Utilisation légère » ; utilisez le préfixe `ollamacloud/<model>`
-**Combos gratuits uniquement**— Chaîne `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 0 $/mois sans temps d'arrêt
-**NVIDIA NIM Free Access**— ~ 40 RPM d'accès gratuit pour toujours à plus de 70 modèles sur build.nvidia.com (passage des crédits aux limites de débit pures)
-**Stratégie d'optimisation des coûts**— Stratégie de routage qui choisit automatiquement le fournisseur disponible le moins cher</details>

<détails>
<summary><b>🔒 5. "Je dois protéger ma passerelle IA contre tout accès non autorisé"</b></summary>

Lors de l'exposition d'une passerelle IA au réseau (LAN, VPS, Docker), toute personne possédant l'adresse peut consommer les jetons/quota du développeur. Sans protection, les API sont vulnérables aux utilisations abusives, aux injections rapides et aux abus.

**Comment OmniRoute le résout :**

-**Gestion des clés API**— Génération, rotation et portée par fournisseur avec une page dédiée `/dashboard/api-manager`
-**Autorisations au niveau du modèle**— Restreindre les clés API à des modèles spécifiques (`openai/*`, modèles génériques), avec la bascule Autoriser tout/Restreindre
-**API Endpoint Protection**— Exiger une clé pour `/v1/models` et bloquer des fournisseurs spécifiques de la liste
-**Auth Guard + Protection CSRF**— Toutes les routes du tableau de bord protégées avec le middleware `withAuth` + les jetons CSRF
-**Rate Limiter**— Limitation du débit par IP avec fenêtres configurables
-**Filtrage IP**  Liste autorisée/liste de blocage pour le contrôle d'accès
-**Prompt Injection Guard**— Nettoyage contre les modèles d'invite malveillants
-**Chiffrement AES-256-GCM**— Informations d'identification chiffrées au repos</details>

<détails>
<summary><b>🛑 6. "Mon fournisseur est tombé en panne et j'ai perdu mon flux de codage"</b></summary>

Les fournisseurs dIA peuvent devenir instables, renvoyer des erreurs 5xx ou atteindre des limites de débit temporaires. Si un développeur dépend d'un seul fournisseur, il est interrompu. Sans disjoncteurs, des tentatives répétées peuvent faire planter lapplication.

**Comment OmniRoute le résout :**

-**Disjoncteur par modèle**— Ouverture/fermeture automatique avec seuils et temps de recharge configurables (Fermé/Ouvert/Semi-ouvert), limités par modèle pour éviter les blocages en cascade
-**Exponential Backoff**— Délais progressifs entre les tentatives
-**Anti-Thundering Herd**— Protection mutex + sémaphore contre les tempêtes de nouvelles tentatives simultanées
-**Chaînes de secours combinées**— Si le fournisseur principal échoue, passe automatiquement à travers la chaîne sans intervention
-**Combo Circuit Breaker**  Désactive automatiquement les fournisseurs défaillants au sein d'une chaîne combo
-**Tableau de bord de santé**— Surveillance de la disponibilité, états des disjoncteurs, verrouillages, statistiques du cache, latence p50/p95/p99</details>

<détails>
<summary><b>🔧 7. "La configuration de chaque outil d'IA est fastidieuse et répétitive"</b></summary>

Les développeurs utilisent Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Chaque outil nécessite une configuration différente (point de terminaison API, clé, modèle). La reconfiguration lors du changement de fournisseur ou de modèle est une perte de temps.

**Comment OmniRoute le résout :**

-**CLI Tools Dashboard**— Page dédiée avec configuration en un clic pour Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-**GitHub Copilot Config Generator**— Génère `chatLanguageModels.json` pour VS Code avec sélection groupée de modèles
-**Assistant d'intégration**— Configuration guidée en 4 étapes pour les nouveaux utilisateurs
-**Un point de terminaison, tous les modèles**— Configurez `http://localhost:20128/v1` une fois, accédez à plus de 60 fournisseurs</details>

<détails>
<summary><b>🔑 8. "Gérer les jetons OAuth de plusieurs fournisseurs est un enfer"</b></summary>

Claude Code, Codex, Gemini CLI, Copilot — tous utilisent OAuth 2.0 avec des jetons expirant. Les développeurs doivent se réauthentifier constamment, gérer « client_secret manquant », « redirect_uri_mismatch » et les échecs sur les serveurs distants. OAuth sur LAN/VPS est particulièrement problématique.

**Comment OmniRoute le résout :**

-**Actualisation automatique des jetons** : les jetons OAuth sont actualisés en arrière-plan avant leur expiration.
-**OAuth 2.0 (PKCE) intégré**— Flux automatique pour Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, Qoder
-**Multi-Account OAuth**— Plusieurs comptes par fournisseur via l'extraction de jetons JWT/ID
-**OAuth LAN/Remote Fix**— Détection d'adresse IP privée pour `redirect_uri` + mode URL manuel pour les serveurs distants
-**OAuth derrière Nginx**— Utilise `window.location.origin` pour la compatibilité du proxy inverse
-**Guide OAuth à distance**— Guide étape par étape pour les informations d'identification Google Cloud sur VPS/Docker</details>

<détails>
<summary><b>📊 9. "Je ne sais pas combien je dépense ni où"</b></summary>

Les développeurs utilisent plusieurs fournisseurs payants mais n'ont pas de vue unifiée des dépenses. Chaque fournisseur dispose de son propre tableau de bord de facturation, mais il n'existe pas de vue consolidée. Les coûts inattendus peuvent saccumuler.

**Comment OmniRoute le résout :**

-**Cost Analytics Dashboard**— Suivi des coûts par jeton et gestion du budget par fournisseur
-**Limites budgétaires par niveau**— Plafond de dépenses par niveau qui déclenche un repli automatique
-**Configuration de tarification par modèle**— Prix configurables par modèle
-**Statistiques d'utilisation par clé API**— Nombre de demandes et horodatage de la dernière utilisation par clé
-**Tableau de bord Analytics**— Cartes statistiques, tableau d'utilisation du modèle, tableau des fournisseurs avec taux de réussite et latence</details>

<détails>
<summary><b>🐛 10. "Je ne peux pas diagnostiquer les erreurs et les problèmes dans les appels IA"</b></summary>

Lorsqu'un appel échoue, le développeur ne sait pas s'il s'agit d'une limite de débit, d'un jeton expiré, d'un format incorrect ou d'une erreur du fournisseur. Journaux fragmentés sur différents terminaux. Sans observabilité, le débogage est un essai et une erreur.

**Comment OmniRoute le résout :**

-**Tableau de bord des journaux unifiés**— 4 onglets : journaux de requêtes, journaux proxy, journaux d'audit, console
-**Console Log Viewer**— Visualiseur de style terminal en temps réel avec niveaux de code couleur, défilement automatique, recherche, filtre
-**Journaux du proxy SQLite**— Journaux persistants qui survivent aux redémarrages du serveur
-**Translator Playground**— 4 modes de débogage : Playground (traduction de format), Chat Tester (aller-retour), Test Bench (batch), Live Monitor (temps réel)
-**Demande de télémétrie**— latence p50/p95/p99 + traçage X-Request-Id
-**Journalisation basée sur des fichiers avec rotation**— Les journaux d'applications alternent en fonction de la taille, des jours de conservation et du nombre d'archives ; les artefacts du journal des appels alternent en fonction des jours de conservation et du nombre de fichiers
-**Rapport d'informations système**— `npm run system-info` génère `system-info.txt` avec votre environnement complet (version Node, version OmniRoute, système d'exploitation, outils CLI, statut Docker/PM2). Joignez-le lorsque vous signalez des problèmes pour un tri instantané.</details>

<détails>
<summary><b>🏗️ 11. "Le déploiement et la maintenance de la passerelle sont complexes"</b></summary>

L'installation, la configuration et la maintenance d'un proxy IA dans différents environnements (local, VPS, Docker, cloud) demandent beaucoup de main-d'œuvre. Des problèmes tels que les chemins codés en dur, les « EACCES » sur les répertoires, les conflits de ports et les versions multiplateformes ajoutent des frictions.

**Comment OmniRoute le résout :**

-**npm global install**— `npm install -g omniroute && omniroute` — terminé
-**Docker Multi-Platform**— AMD64 + ARM64 natif (Apple Silicon, AWS Graviton, Raspberry Pi)
-**Profils Docker Compose**— `base` (pas d'outils CLI) et `cli` (avec Claude Code, Codex, OpenClaw)
-**Electron Desktop App**— Application native pour Windows/macOS/Linux avec barre d'état système, démarrage automatique et mode hors ligne
-**Mode Split-Port**— API et tableau de bord sur des ports séparés pour des scénarios avancés (proxy inverse, réseau de conteneurs)
-**Cloud Sync**  Configurez la synchronisation entre les appareils via Cloudflare Workers
-**Sauvegardes DB**— Sauvegarde, restauration, exportation et importation automatiques de tous les paramètres, avec `DISABLE_SQLITE_AUTO_BACKUP` pour les sauvegardes gérées en externe</details>

<détails>
<summary><b>🌍 12. "L'interface est uniquement en anglais et mon équipe ne parle pas anglais"</b></summary>

Les équipes des pays non anglophones, notamment en Amérique latine, en Asie et en Europe, ont du mal à utiliser des interfaces uniquement en anglais. Les barrières linguistiques réduisent ladoption et augmentent les erreurs de configuration.

**Comment OmniRoute le résout :**

-**Tableau de bord i18n — 30 langues**— Plus de 500 touches traduites, dont arabe, bulgare, danois, allemand, espagnol, finnois, français, hébreu, hindi, hongrois, indonésien, italien, japonais, coréen, malais, néerlandais, norvégien, polonais, portugais (PT/BR), roumain, russe, slovaque, suédois, thaï, ukrainien, vietnamien, chinois, philippin, anglais.
-**Support RTL**— Prise en charge de droite à gauche pour l'arabe et l'hébreu
-**README multilingues**— 30 traductions complètes de la documentation
-**Sélecteur de langue**— Icône de globe dans l'en-tête pour une commutation en temps réel</details>

<détails>
<summary><b>🔄 13. "J'ai besoin de plus que du chat : j'ai besoin d'intégrations, d'images, d'audio"</b></summary>

L'IA ne se limite pas à la réalisation de discussions. Les développeurs doivent générer des images, transcrire l'audio, créer des intégrations pour RAG, reclasser les documents et modérer le contenu. Chaque API a un point de terminaison et un format différents.

**Comment OmniRoute le résout :**

-**Embeddings**— `/v1/embeddings` avec 6 fournisseurs et plus de 9 modèles
-**Génération d'images**— `/v1/images/generations` avec 10 fournisseurs et plus de 20 modèles (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-**Text-to-Video**— `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) et SD WebUI
-**Text-to-Music**— `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
-**Transcription audio**— `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-**Text-to-Speech**— `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3,**Inworld**,**Cartesia**,**PlayHT**, + fournisseurs existants
-**Modérations**— `/v1/moderations` — Contrôles de sécurité du contenu
-**Reclassement**— `/v1/rerank` — Reclassement de la pertinence du document
-**API Responses**— Prise en charge complète de `/v1/responses` pour le Codex</details>

<détails>
<summary><b>🧪 14. "Je n'ai aucun moyen de tester et de comparer la qualité des différents modèles"</b></summary>

Les développeurs veulent savoir quel modèle convient le mieux à leur cas d'utilisation (code, traduction, raisonnement) mais la comparaison manuelle est lente. Il nexiste aucun outil dévaluation intégré.

**Comment OmniRoute le résout :**

-**Évaluations LLM**— Tests Golden Set avec 10 cas préchargés couvrant les salutations, les mathématiques, la géographie, la génération de code, la conformité JSON, la traduction, la démarque, le refus de sécurité
-**4 stratégies de correspondance**— `exact`, `contains`, `regex`, `custom` (fonction JS)
-**Banc de test Translator Playground**— Tests par lots avec plusieurs entrées et sorties attendues, comparaison entre fournisseurs
-**Chat Tester**— Aller-retour complet avec rendu de réponse visuelle
-**Live Monitor**— Flux en temps réel de toutes les requêtes transitant par le proxy</details>

<détails>
<summary><b>📈 15. "J'ai besoin d'évoluer sans perdre en performances"</b></summary>

À mesure que le volume de demandes augmente, sans mettre en cache les mêmes questions, cela génère des coûts en double. Sans idempotence, les demandes en double gaspillent le traitement. Les limites tarifaires par fournisseur doivent être respectées.

**Comment OmniRoute le résout :**

-**Cache sémantique**— Le cache à deux niveaux (signature + sémantique) réduit les coûts et la latence
-**Request Idempotency**— Fenêtre de déduplication de 5 s pour des requêtes identiques
-**Détection de limite de débit**— RPM par fournisseur, écart minimum et suivi simultané maximum
-**Limites de débit modifiables**— Valeurs par défaut configurables dans Paramètres → Résilience avec persistance
-**Cache de validation de clé API**— Cache à 3 niveaux pour les performances de production
-**Tableau de bord de santé avec télémétrie**— latence p50/p95/p99, statistiques de cache, disponibilité</details>

<détails>
<summary><b>🤖 16. "Je veux contrôler le comportement du modèle à l'échelle mondiale"</b></summary>

Les développeurs qui souhaitent que toutes les réponses soient dans une langue spécifique, avec un ton spécifique, ou qui souhaitent limiter les jetons de raisonnement. Configurer cela dans chaque outil/demande nest pas pratique.

**Comment OmniRoute le résout :**

-**Injection d'invite système**— Invite globale appliquée à toutes les requêtes
-**Thinking Budget Validation**— Contrôle d'allocation de jetons de raisonnement par requête (passthrough, automatique, personnalisé, adaptatif)
-**9 stratégies de routage**  Stratégies globales qui déterminent la manière dont les demandes sont distribuées
-**Wildcard Router**— Les modèles `provider/*` acheminent dynamiquement vers n'importe quel fournisseur
-**Combo Enable/Disable Toggle**— Basculez les combos directement depuis le tableau de bord
-**Provider Toggle**— Activer/désactiver toutes les connexions pour un fournisseur en un seul clic
-**Fournisseurs bloqués**— Exclure des fournisseurs spécifiques de la liste `/v1/models`</details>

<détails>
<summary><b>🧰 17. "J'ai besoin d'outils MCP en tant que fonctionnalités de produit de premier ordre"</b></summary>

De nombreuses passerelles IA exposent MCP uniquement en tant que détail d'implémentation caché. Les équipes ont besoin dune couche opérationnelle visible et gérable.

**Comment OmniRoute le résout :**

- MCP apparaît dans l'onglet de navigation du tableau de bord et de protocole de point de terminaison
- Page de gestion MCP dédiée avec processus, outils, portées et audit
- Démarrage rapide intégré pour `omniroute --mcp` et l'intégration des clients</details>

<détails>
<summary><b>🧠 18. "J'ai besoin d'une orchestration A2A avec des chemins de tâches de synchronisation et de flux"</b></summary>

Les flux de travail des agents nécessitent à la fois des réponses directes et une exécution en continu de longue durée avec contrôle du cycle de vie.

**Comment OmniRoute le résout :**

- Point de terminaison A2A JSON-RPC (`POST /a2a`) avec `message/send` et `message/stream`
- Streaming SSE avec propagation de l'état terminal
- API de cycle de vie des tâches pour "tasks/get" et "tasks/cancel"</details>

<détails>
<summary><b>🛰️ 19. "J'ai besoin d'un véritable état de santé du processus MCP, et non d'un état deviné"</b></summary>

Les équipes opérationnelles doivent savoir si MCP est réellement actif, et pas seulement si une API est accessible.

**Comment OmniRoute le résout :**

- Fichier de battement de cœur d'exécution avec PID, horodatages, transport, nombre d'outils et mode de portée
- API de statut MCP combinant battement de coeur + activité récente
- Cartes d'état de l'interface utilisateur pour la fraîcheur des processus/disponibilité/battement de cœur</details>

<détails>
<summary><b>📋 20. "J'ai besoin d'une exécution vérifiable de l'outil MCP"</b></summary>

Lorsque les outils modifient la configuration ou déclenchent des actions opérationnelles, les équipes ont besoin d'une traçabilité médico-légale.

**Comment OmniRoute le résout :**

- Journalisation d'audit basée sur SQLite pour les appels d'outils MCP
- Filtres par outil, succès/échec, clé API et pagination
- Tableau d'audit du tableau de bord + points de terminaison de statistiques pour l'automatisation</details>

<détails>
<summary><b>🔐 21. "J'ai besoin d'autorisations MCP limitées par intégration"</b></summary>

Différents clients doivent avoir le moindre privilège daccès aux catégories doutils.

**Comment OmniRoute le résout :**

- 10 étendues MCP granulaires pour un accès contrôlé aux outils
- Application de la portée et visibilité dans l'interface utilisateur de gestion MCP
- Posture par défaut sécurisée pour les outils opérationnels</details>

<détails>
<summary><b>⚙️ 22. "J'ai besoin de contrôles opérationnels sans redéploiement"</b></summary>

Les équipes ont besoin de changements d'exécution rapides lors d'incidents ou d'événements de coûts.

**Comment OmniRoute le résout :**

- Activer le combo de commutation directement depuis le tableau de bord MCP
- Appliquer des profils de résilience à partir de packs de politiques prédéfinis
- Réinitialiser l'état du disjoncteur à partir du même panneau de commande</details>

<détails>
<summary><b>🔄 23. "J'ai besoin d'une visibilité et d'une annulation en direct du cycle de vie des tâches A2A"</b></summary>

Sans visibilité sur le cycle de vie, les incidents de tâches deviennent difficiles à trier.

**Comment OmniRoute le résout :**

- Liste des tâches/filtrage par état/compétence avec pagination
- Analyse approfondie des métadonnées, des événements et des artefacts des tâches
- Point de terminaison d'annulation de tâche et action de l'interface utilisateur avec confirmation</details>

<détails>
<summary><b>🌊 24. "J'ai besoin de métriques de flux actif pour la charge A2A"</b></summary>

Les flux de travail de streaming nécessitent une vision opérationnelle de la concurrence et des connexions en direct.

**Comment OmniRoute le résout :**

- Compteurs de flux actifs intégrés au statut A2A
- Horodatage de la dernière tâche et nombre par état
- Cartes de tableau de bord A2A pour la surveillance des opérations en temps réel</details>

<détails>
<summary><b>🪪 25. "J'ai besoin d'une découverte d'agent standard pour les clients"</b></summary>

Les clients et orchestrateurs externes ont besoin de métadonnées lisibles par machine pour l'intégration.

**Comment OmniRoute le résout :**

- Carte d'agent exposée dans `/.well-known/agent.json`
- Capacités et compétences affichées dans l'interface utilisateur de gestion
- L'API de statut A2A inclut des métadonnées de découverte pour l'automatisation</details>

<détails>
<summary><b>🧭 26. "J'ai besoin de la possibilité de découvrir le protocole dans l'UX du produit"</b></summary>

Si les utilisateurs ne peuvent pas découvrir les surfaces de protocole, ladoption et la qualité du support chutent.

**Comment OmniRoute le résout :**

- Page**Points de terminaison**consolidée avec des onglets pour les points de terminaison Proxy, MCP, A2A et API
- Basculement de l'état du service en ligne (en ligne/hors ligne) pour MCP et A2A
- Liens depuis l'aperçu vers les onglets de gestion dédiés</details>

<détails>
<summary><b>🧪 27. "J'ai besoin d'une validation de protocole de bout en bout avec de vrais clients"</b></summary>

Les tests simulés ne suffisent pas pour valider la compatibilité des protocoles avant la publication.

**Comment OmniRoute le résout :**

- Suite E2E qui démarre l'application et utilise un véritable transport client MCP SDK
- Tests client A2A pour les flux de découverte, d'envoi, de streaming, d'obtention et d'annulation
- Vérifier les assertions par rapport aux API d'audit MCP et de tâches A2A</details>

<détails>
<summary><b>📡 28. "J'ai besoin d'une observabilité unifiée sur toutes les interfaces"</b></summary>

Le fractionnement de l'observabilité par protocole crée des angles morts et un MTTR plus long.

**Comment OmniRoute le résout :**

- Tableaux de bord/journaux/analyses unifiés dans un seul produit
- Santé + audit + télémétrie des demandes sur les couches OpenAI, MCP et A2A
- API opérationnelles pour le statut et l'automatisation</details>

<détails>
<summary><b>💼 29. "J'ai besoin d'un environnement d'exécution pour l'orchestration proxy + outils + agent"</b></summary>

Lexécution de nombreux services distincts augmente les coûts opérationnels et les modes de défaillance.

**Comment OmniRoute le résout :**

- Proxy compatible OpenAI, serveur MCP et serveur A2A dans une seule pile
- Authentification partagée, résilience, stockage de données et observabilité
- Modèle de politique cohérent sur toutes les surfaces d'interaction</details>

<détails>
<summary><b>🚀 30. "J'ai besoin d'expédier des flux de travail agentiques sans prolifération de code collant"</b></summary>

Les équipes perdent de la vitesse lors de lassemblage de plusieurs services et scripts ad hoc.

**Comment OmniRoute le résout :**

- Stratégie de point de terminaison unifiée pour les clients et les agents
- Interfaces utilisateur de gestion de protocole intégrées et chemins de validation de fumée
- Bases prêtes pour la production (sécurité, journalisation, résilience, sauvegarde)</details>

### Example Playbooks (Integrated Use Cases)

**Playbook A : Maximisez l'abonnement payant + sauvegarde bon marché**```txt
Combo: "maximize-claude"
  1. cc/claude-opus-4-6
  2. glm/glm-4.7
  3. if/kimi-k2-thinking

Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption

Playbook B : pile de codage à coût nul```txt Combo: "free-forever"

  1. gc/gemini-3-flash
  2. if/kimi-k2-thinking
  3. qw/qwen3-coder-plus

Monthly cost: $0 Outcome: stable free coding workflow


**Playbook C : chaîne de secours toujours active 24h/24 et 7j/7**```txt
Combo: "always-on"
  1. cc/claude-opus-4-6
  2. cx/gpt-5.2-codex
  3. glm/glm-4.7
  4. minimax/MiniMax-M2.1
  5. if/kimi-k2-thinking

Outcome: deep fallback depth for deadline-critical workloads

Playbook D : Opérations d'agent avec MCP + A2A```txt

  1. Start MCP transport (omniroute --mcp) for tool-driven operations
  2. Run A2A tasks via message/send and message/stream
  3. Observe via /dashboard/endpoint (MCP and A2A tabs)
  4. Toggle services via inline status controls

---

## 🆓 Start Free — Zero Configuration Cost

> Configurez le codage IA en quelques minutes à**0 $/mois**. Connectez ces comptes gratuits et utilisez le combo**Free Stack**intégré.

| Étape | Actions | Fournisseurs débloqués |
| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
| 1 | Connectez**Kiro**(ID AWS Builder OAuth) | Claude Sonnet 4.5, Haïku 4.5 —**illimité**|
| 2 | Connectez**Qoder**(Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... —**illimité**|
| 3 | Connectez**Qwen**(code de l'appareil) | qwen3-coder-plus, qwen3-coder-flash... —**illimité**|
| 4 | Connectez**Gemini CLI**(Google OAuth) | gemini-3-flash, gemini-2.5-pro —**180 000/mois gratuits**|
| 5 | `/dashboard/combos` → Modèle**Free Stack ($0)**| Faites un tourniquet automatique entre tous les fournisseurs gratuits |

**Pointez n'importe quel IDE/CLI vers :**`http://localhost:20128/v1` · Clé API : `any-string` · Terminé.

>**Couverture supplémentaire facultative (également gratuite) :**Clé API Groq (30 RPM gratuits), NVIDIA NIM (40 RPM gratuits, plus de 70 modèles), Cerebras (1 million de tok/jour), clé API LongCat (50 millions de jetons/jour !), Cloudflare Workers AI (10 000 neurones/jour, plus de 50 modèles).## Démarrage Rapide

### 1) Install and run

```bash
npm install -g omniroute
omniroute

**Utilisateurs pnpm :**Exécutez pnpm approved-builds -g après l'installation pour activer les scripts de build natifs requis par better-sqlite3 et @swc/core :

pnpm install -g omniroute
pnpm approuver-builds -g # Sélectionner tous les packages → approuver
omniroute

Le tableau de bord s'ouvre sur « http://localhost:20128 » et l'URL de base de l'API est « http://localhost:20128/v1 ».

Commande Descriptif
omniroute Démarrer le serveur (PORT=20128, API et tableau de bord sur le même port)
omniroute --port 3000 Définir le port canonique/API sur 3000
omniroute --mcp Démarrer le serveur MCP (transport stdio)
omniroute --no-open Ne pas ouvrir automatiquement le navigateur
omniroute --help Afficher l'aide

Mode de port partagé en option :```bash PORT=20128 DASHBOARD_PORT=20129 omniroute

API: http://localhost:20128/v1

Dashboard: http://localhost:20129


### Long-Running Streaming Timeouts

Pour la plupart des déploiements, vous n'avez besoin que de :

| Variables | Par défaut | Objectif |
| -------------------- | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `REQUEST_TIMEOUT_MS` | «600 000» | Base de référence partagée pour la récupération en amont, les délais d'attente Undici cachés, les demandes d'empreintes digitales TLS et les délais d'attente des demandes de pont API/proxy |
| `STREAM_IDLE_TIMEOUT_MS` | hérite de `REQUEST_TIMEOUT_MS` | Écart maximum entre les morceaux de streaming avant qu'OmniRoute n'abandonne le flux SSE |

La compatibilité ascendante est préservée : `FETCH_TIMEOUT_MS`, `API_BRIDGE_PROXY_TIMEOUT_MS` et d'autres variables de délai d'expiration par couche fonctionnent toujours et remplacent la ligne de base partagée.

Des remplacements avancés sont disponibles si vous avez besoin d'un contrôle plus précis :| Variables | Par défaut | Objectif |
| --------------------------------------------- | ------------------------------------------ | -------------------------------------------------------------------- |
| `FETCH_TIMEOUT_MS` | hérite de `REQUEST_TIMEOUT_MS` | Délai d'expiration total de la demande en amont utilisé par le signal d'abandon de récupération principal |
| `FETCH_HEADERS_TIMEOUT_MS` | hérite de `FETCH_TIMEOUT_MS` | Délai Undici pour la réception des en-têtes de réponse en amont |
| `FETCH_BODY_TIMEOUT_MS` | hérite de `FETCH_TIMEOUT_MS` | Limite de temps Undici entre les morceaux de corps en amont (`0` le désactive) |
| `FETCH_CONNECT_TIMEOUT_MS` | '30 000' | Undici Délai d'expiration de la connexion TCP |
| `FETCH_KEEPALIVE_TIMEOUT_MS` | '4000' | Undici délai d'attente du socket keep-alive inactif |
| `TLS_CLIENT_TIMEOUT_MS` | hérite de `FETCH_TIMEOUT_MS` | Délai d'expiration pour les demandes d'empreintes digitales TLS effectuées via `wreq-js` |
| `API_BRIDGE_PROXY_TIMEOUT_MS` | hérite de `REQUEST_TIMEOUT_MS` ou `30000` | Délai d'expiration pour le transfert du proxy `/v1` du port API vers le port du tableau de bord |
| `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `max(API_BRIDGE_PROXY_TIMEOUT_MS, 300 000)` | Délai d'expiration des requêtes entrantes sur le serveur de pont API |
| `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | «60 000» | Délai d'expiration de l'en-tête entrant sur le serveur de pont API |
| `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | '5000' | Délai d'expiration de conservation sur le serveur de pont API |
| `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Délai d'inactivité du socket sur le serveur de pont API (`0` le désactive) |

Si vous exécutez OmniRoute derrière Nginx, Caddy, Cloudflare ou un autre proxy inverse, assurez-vous que le proxy
les délais d'attente sont également supérieurs aux délais d'attente de votre flux/récupération OmniRoute.### 2) Connect providers and create your API key

1. Ouvrez le tableau de bord → « Fournisseurs » et connectez au moins un fournisseur (OAuth ou clé API).
2. Ouvrez le tableau de bord → « Endpoints » et créez une clé API.
3. (Facultatif) Ouvrez le tableau de bord → « Combos » et définissez votre chaîne de secours.### 3) Point your coding tool to OmniRoute

```txt
Base URL: http://localhost:20128/v1
API Key:  [copy from Endpoint page]
Model:    if/kimi-k2-thinking (or any provider/model prefix)

Fonctionne avec les SDK compatibles Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode et OpenAI.### 4) Enable and validate protocols (v2.0)

MCP (pour les opérations pilotées par outils) :```bash omniroute --mcp


Connectez ensuite votre client MCP via `stdio` et testez des outils tels que :

- `omniroute_get_health`
- `omniroute_list_combos`

**A2A (pour les flux de travail d'agent à agent) :**```bash
curl http://localhost:20128/.well-known/agent.json
curl -X POST http://localhost:20128/a2a \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
npm run test:protocols:e2e

Cette suite valide les flux clients MCP et A2A réels par rapport à une application en cours d'exécution.### Alternative: run from source

cp .env.example .env
npm install
PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev

<détails>

Annuler Linux (modèle `xbps-src`)

Pour les utilisateurs de Void Linux, vous pouvez créer un package natif en utilisant xbps-src. Enregistrez ce bloc sous srcpkgs/omniroute/template :```bash

Template file for 'omniroute'

pkgname=omniroute version=3.4.1 revision=1 hostmakedepends="nodejs python3 make" depends="openssl" short_desc="Universal AI gateway with smart routing for multiple LLM providers" maintainer="zenobit zenobit@disroot.org" license="MIT" homepage="https://github.com/diegosouzapw/OmniRoute" distfiles="https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" checksum=009400afee90a9f32599d8fe734145cfd84098140b7287990183dde45ae2245b system_accounts="_omniroute" omniroute_homedir="/var/lib/omniroute" export NODE_ENV=production export npm_config_engine_strict=false export npm_config_loglevel=error export npm_config_fund=false export npm_config_audit=false

do_build() { # Determine target CPU arch for node-gyp local _gyp_arch case "$XBPS_TARGET_MACHINE" in aarch64*) _gyp_arch=arm64 ;; armv7*|armv6*) _gyp_arch=arm ;; i686*) _gyp_arch=ia32 ;; *) _gyp_arch=x64 ;; esac

# 1) Install all deps  skip scripts (no network in do_build, native modules
#    compiled separately below; better-sqlite3 is serverExternalPackage so
#    Next.js does not execute it during next build)
NODE_ENV=development npm ci --ignore-scripts

# 2) Build the Next.js standalone bundle
npm run build

# 3) Copy static assets into standalone
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true

# 4) Compile better-sqlite3 native binding for the target architecture.
#    Use node-gyp directly so CC/CXX from xbps-src cross-toolchain are used
#    without npm altering them.
local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js
(cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch")

# 5) Place the compiled binding into the standalone bundle
local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release
mkdir -p "$_bs3_release"
cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/"

# 6) Remove arch-specific sharp bundles  upstream sets images.unoptimized=true
#    so sharp is not used at runtime; x64 .so files would break aarch64 strip
rm -rf .next/standalone/node_modules/@img

# 7) Copy pino runtime deps omitted by Next.js static analysis:
#    pino-abstract-transport  required by pino's worker thread
#    split2  dep of pino-abstract-transport
#    process-warning  dep of pino itself
for _mod in pino-abstract-transport split2 process-warning; do
	cp -r "node_modules/$_mod" .next/standalone/node_modules/
done

}

do_check() { npm run test:unit }

do_install() { vmkdir usr/lib/omniroute/.next

vcopy .next/standalone/. usr/lib/omniroute/.next/standalone

# Prevent removal of empty Next.js app router dirs by the post-install hook
for _d in \
	.next/standalone/.next/server/app/dashboard \
	.next/standalone/.next/server/app/dashboard/settings \
	.next/standalone/.next/server/app/dashboard/providers; do
	touch "${DESTDIR}/usr/lib/omniroute/${_d}/.keep"
done

cat > "${WRKDIR}/omniroute" <<'EOF'

#!/bin/sh export PORT="${PORT:-20128}" export DATA_DIR="${DATA_DIR:-${XDG_DATA_HOME:-${HOME}/.local/share}/omniroute}" export LOG_TO_FILE="${LOG_TO_FILE:-false}" mkdir -p "${DATA_DIR}" exec node /usr/lib/omniroute/.next/standalone/server.js "$@" EOF vbin "${WRKDIR}/omniroute" }

post_install() { vlicense LICENSE }


</details>

---

## 🐳 Docker

OmniRoute est disponible sous forme d'image Docker publique sur [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).

**Exécution rapide :**```bash
docker run -d \
  --name omniroute \
  --restart unless-stopped \
  --stop-timeout 40 \
  -p 20128:20128 \
  -v omniroute-data:/app/data \
  diegosouzapw/omniroute:latest

Avec fichier d'environnement :```bash

Copy and edit .env first

cp .env.example .env

docker run -d
--name omniroute
--restart unless-stopped
--stop-timeout 40
--env-file .env
-p 20128:20128
-v omniroute-data:/app/data
diegosouzapw/omniroute:latest


**Utilisation de Docker Compose :**```bash
# Base profile (no CLI tools)
docker compose --profile base up -d

# CLI profile (Claude Code, Codex, OpenClaw built-in)
docker compose --profile cli up -d

La prise en charge des tableaux de bord pour les déploiements Docker inclut désormais unCloudflare Quick Tunnelen un clic sur « Tableau de bord → Points de terminaison ». La première activation télécharge « cloudflared » uniquement en cas de besoin, démarre un tunnel temporaire vers votre point de terminaison « /v1 » actuel et affiche l'URL « https://*.trycloudflare.com/v1 » générée directement sous votre URL publique normale.

Remarques :

  • Les URL du tunnel rapide sont temporaires et changent après chaque redémarrage.
  • Les tunnels rapides ne sont pas automatiquement restaurés après un redémarrage d'OmniRoute ou d'un conteneur. Réactivez-les depuis le tableau de bord si nécessaire.
  • L'installation gérée prend actuellement en charge Linux, macOS et Windows sur x64 / arm64.
  • Les tunnels rapides gérés utilisent par défaut le transport HTTP/2 pour éviter les avertissements de tampon QUIC UDP bruyants dans les environnements de conteneurs contraints. Définissez CLOUDFLARED_PROTOCOL=quic ou auto si vous souhaitez un transport différent.
  • Les images Docker regroupent les racines de l'autorité de certification du système et les transmettent au « cloudflared » géré, ce qui évite les échecs de confiance TLS lorsque le tunnel s'amorce à l'intérieur du conteneur.
  • SQLite fonctionne en mode WAL. docker stop doit être autorisé à se terminer afin qu'OmniRoute puisse vérifier les dernières modifications dans storage.sqlite.
  • Les fichiers Compose fournis définissent déjà un délai de grâce d'arrêt de 40 s. Si vous exécutez l'image directement, conservez « --stop-timeout 40 » (ou similaire) afin que les arrêts manuels n'interrompent pas le nettoyage de l'arrêt.
  • Définissez CLOUDFLARED_BIN=/absolute/path/to/cloudflared si vous souhaitez qu'OmniRoute utilise un binaire existant au lieu d'en télécharger un.

Utilisation de Docker Compose avec Caddy (HTTPS Auto-TLS) :

OmniRoute peut être exposé en toute sécurité grâce au provisionnement SSL automatique de Caddy. Assurez-vous que l'enregistrement DNS A de votre domaine pointe vers l'adresse IP de votre serveur.```yaml services: omniroute: image: diegosouzapw/omniroute:latest container_name: omniroute restart: unless-stopped volumes: - omniroute-data:/app/data environment: - PORT=20128 - NEXT_PUBLIC_BASE_URL=https://your-domain.com

caddy: image: caddy:latest container_name: caddy restart: unless-stopped ports: - "80:80" - "443:443" command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128

volumes: omniroute-data:


| Images | Étiquette | Taille | Descriptif |
| -------------------- | -------- | ------ | ------------------------------------ |
| `diegosouzapw/omniroute` | `dernier` | ~250 Mo | Dernière version stable |
| `diegosouzapw/omniroute` | `1.0.3` | ~250 Mo | Version actuelle |---

## 🖥️ Desktop App — Offline & Always-On

> 🆕**NOUVEAU !**OmniRoute est désormais disponible en tant qu'**application de bureau native**pour Windows, macOS et Linux.

Exécutez OmniRoute en tant qu'application de bureau autonome : aucun terminal, aucun navigateur, aucune connexion Internet requise pour les modèles locaux. L'application basée sur Electron comprend :

- 🖥️**Fenêtre native**— Fenêtre d'application dédiée avec intégration dans la barre d'état système
- 🔄**Démarrage automatique**— Lancez OmniRoute lors de la connexion au système
- 🔔**Notifications natives**— Recevez des alertes en cas d'épuisement de quota ou de problèmes de fournisseur
- ⚡**Installation en un clic**— NSIS (Windows), DMG (macOS), AppImage (Linux)
- 🌐**Mode hors ligne**— Fonctionne entièrement hors ligne avec le serveur fourni### Démarrage Rapide

```bash
# Development mode
npm run electron:dev

# Build for your platform
npm run electron:build         # Current platform
npm run electron:build:win     # Windows (.exe)
npm run electron:build:mac     # macOS (.dmg) — x64 & arm64
npm run electron:build:linux   # Linux (.AppImage)

System Tray

Lorsqu'il est réduit, OmniRoute réside dans votre barre d'état système avec des actions rapides :

  • Ouvrir le tableau de bord
  • Changer le port du serveur
  • Quitter l'application

📖 Documentation complète : electron/README.md---

💰 Pricing at a Glance

Niveau Fournisseur Coût Réinitialisation des quotas Idéal pour
💳 ABONNEMENT Claude Code (Pro) 20 $/mois 5h + hebdomadaire Déjà abonné
Codex (Plus/Pro) 20-200 $/mois 5h + hebdomadaire Utilisateurs d'OpenAI
CLI Gémeaux GRATUIT 180K/mois + 1K/jour Tout le monde!
Copilote GitHub 10-19 $/mois Mensuel Utilisateurs GitHub
🔑 CLÉ API NIM NVIDIA GRATUIT(développement pour toujours) ~40 tr/min Plus de 70 modèles ouverts
Cérébraux GRATUIT(1 million de tok/jour) 60 000 TPM / 30 tr/min Le plus rapide du monde
Groq GRATUIT(30 TR/MIN) 14,4 000 tr/min Lama/Gemma ultra-rapide
DeepSeek V3.2 0,27 /1,10 par 1 million Aucun Raisonnement meilleur prix/qualité
xAI Grok-4 Rapide 0,20$/0,50$ par 1M🆕 Aucun Appel d'outil le plus rapide +, ultra lent
xAI Grok-4 (standard) 0,20 /1,50 par 1 M 🆕 Aucun Produit phare du raisonnement de xAI
Mistral Essai gratuit + payant Tarif limité IA européenne
OuvrirRouter Paiement à l'utilisation Aucun Plus de 100 modèles agrégés.
💰 BON MARCHÉ GLM-5 (via Z.AI) 🆕 0,5 $/1 M Tous les jours 10h Sortie 128K, nouveau produit phare
GLM-4.7 0,6 $/1 M Tous les jours 10h Sauvegarde budgétaire
MiniMax M2.5 🆕 Entrée de 0,3 $/1 M 5 heures roulantes Raisonnement + tâches agentiques
MiniMax M2.1 0,2 $/1 M 5 heures roulantes Option la moins chère
Kimi K2.5 (API Moonshot) 🆕 Paiement à l'utilisation Aucun Accès direct à l'API Moonshot
Kimi K2 9 $/mois plat 10 millions de jetons/mois Coût prévisible
🆓 GRATUIT Qoder 0$ Unlimited 5 modèles illimités
Qwen 0$ Illimité 4 modèles illimités
Kiro 0$ Illimité Claude Sonnet/Haïku (AWS Builder)
LongCat Flash-Lite 🆕 $0(50M tok/jour 🔥) 1 RPS Le plus grand quota gratuit sur Terre
Pollinisations IA 🆕 0$(aucune clé requise) 1 demande/15s GPT-5, Claude, DeepSeek, Lama 4
IA des travailleurs Cloudflare 🆕 0$(10 000 neurones/jour) ~150 resp/jour Plus de 50 modèles, avantage mondial
IA Scaleway 🆕 0 $(1 million de jetons au total) Tarif limité UE/RGPD, Qwen3 235B, Lama 70B > 🆕**Nouveaux modèles ajoutés (mars 2026) :**Famille Grok-4 Fast à 0,20 $/0,50 $/M (référence à 1 143 ms 30 % plus rapide que Gemini 2.5 Flash), GLM-5 via Z.AI avec sortie 128K, raisonnement MiniMax M2.5, tarification mise à jour DeepSeek V3.2, Kimi K2.5 via l'API directe Moonshot.

💡 Pile combinée à 0 $ — La configuration gratuite complète :```

🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever

Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED Qoder (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥 Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU) Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day


**Zéro coût. N'arrête jamais de coder.**Configurez-le comme un combo OmniRoute et toutes les solutions de secours se produisent automatiquement — sans jamais de commutation manuelle.---

---

## 🆓 Free Models — What You Actually Get

> Tous les modèles ci-dessous sont**100 % gratuits et aucune carte de crédit requise**. OmniRoute effectue un acheminement automatique entre eux lorsqu'un quota est épuisé : combinez-les tous pour un combo incassable à 0 $.### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)

| Modèle | Préfixe | Limite | Limite de taux |
| ------------------- | ------ | ------------- | ------------------------------------ |
| `claude-sonnet-4.5` | `kr/` |**Illimité**| Aucun plafond quotidien signalé |
| `claude-haïku-4.5` | `kr/` |**Illimité**| Aucun plafond quotidien signalé |
| `claude-opus-4.6` | `kr/` |**Illimité**| Dernier Opus via Kiro |### 🟢 QODER MODELS (Free PAT via qodercli)

| Modèle | Préfixe | Limite | Limite de taux |
| ------------------ | ------ | ------------- | --------------- |
| `kimi-k2-pensée` | `si/` |**Illimité**| Aucun plafond signalé |
| `qwen3-coder-plus` | `si/` |**Illimité**| Aucun plafond signalé |
| `deepseek-r1` | `si/` |**Illimité**| Aucun plafond signalé |
| `minimax-m2.1` | `si/` |**Illimité**| Aucun plafond signalé |
| `kimi-k2` | `si/` |**Illimité**| Aucun plafond signalé |

> Méthode de connexion recommandée :**Jeton d'accès personnel + `qodercli`**. Le navigateur OAuth est
> expérimental et désactivé par défaut sauf si les variables d'environnement `QODER_OAUTH_*` sont configurées.### 🟡 QWEN MODELS (Device Code Auth)

| Modèle | Préfixe | Limite | Limite de taux |
| ------------------- | ------ | ------------- | ------------------- |
| `qwen3-coder-plus` | `qw/` |**Illimité**| Aucun plafond signalé |
| `qwen3-coder-flash` | `qw/` |**Illimité**| Aucun plafond signalé |
| `qwen3-coder-suivant` | `qw/` |**Illimité**| Aucun plafond signalé |
| `modèle-vision` | `qw/` |**Illimité**| Multimodal (images) |### 🟣 GEMINI CLI (Google OAuth)

| Modèle | Préfixe | Limite | Limite de taux |
| -------------------- | ------ | -------------------------------- | ------------- |
| `gemini-3-flash-aperçu` | `gc/` |**180K tok/mois**+ 1K/jour | Réinitialisation mensuelle |
| `gemini-2.5-pro` | `gc/` | 180K/mois (piscine partagée) | Haute qualité |### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)

| Niveau | Limite quotidienne | Limite de taux | Remarques |
| ---------- | ------------ | ----------- | ------------------------------------------------------ |
| Gratuit (développement) | Pas de plafond de jetons |**~40 tr/min**| Plus de 70 modèles ; transition vers des limites de taux pures mi-2025 |

Modèles gratuits populaires : `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)

| Niveau | Limite quotidienne | Limite de taux | Remarques |
| ---- | ----------------- | ---------------- | ------------------------------------------------ |
| Gratuit |**1 million de jetons/jour**| 60 000 TPM / 30 tr/min | L'inférence LLM la plus rapide au monde ; resets daily |

Disponible gratuitement : `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`### 🔴 GROQ (Free API Key — console.groq.com)

| Niveau | Limite quotidienne | Limite de taux | Remarques |
| ---- | ------------- | ---------------- | ----------------------------------------- |
| Gratuit |**14 400 RPJ**| 30 tr/min par modèle | Pas de carte de crédit ; 429 en limite, non facturé |

Disponible gratuitement : `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕

| Modèle | Préfixe | Quota quotidien gratuit | Remarques |
| ----------------------------- | ------ | ----------------- | ----------------------- |
| `LongCat-Flash-Lite` | `lc/` |**50 millions de jetons**💥 | Le plus grand quota gratuit jamais vu |
| `LongCat-Flash-Chat` | `lc/` | 500 000 jetons | Chat multi-tours |
| `LongCat-Flash-Pensée` | `lc/` | 500 000 jetons | Raisonnement / CoT |
| `LongCat-Flash-Pensée-2601` | `lc/` | 500 000 jetons | Version janvier 2026 |
| `LongCat-Flash-Omni-2603` | `lc/` | 500 000 jetons | Multimodal |

> 100 % gratuit en version bêta publique. Inscrivez-vous sur [longcat.chat](https://longcat.chat) par e-mail ou par téléphone. Se réinitialise quotidiennement à 00h00 UTC.### 🟢 POLLINATIONS AI (No API Key Required) 🆕

| Modèle | Préfixe | Limite de taux | Fournisseur derrière |
| ---------- | ------ | ---------- | ------------------ |
| `openai` | `pol/` | 1 demande/15s | GPT-5 |
| `claude` | `pol/` | 1 demande/15s | Claude Anthropique |
| `Gémeaux` | `pol/` | 1 demande/15s | Google Gémeaux |
| `recherche profonde` | `pol/` | 1 demande/15s | Recherche profonde V3 |
| `lama` | `pol/` | 1 demande/15s | Meta Lama 4 Scout |
| 'mistral' | `pol/` | 1 demande/15s | Mistral IA |

> ✨**Zéro friction :**Pas d'inscription, pas de clé API. Ajoutez le fournisseur Pollinations avec un champ clé vide et cela fonctionne immédiatement.### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕

| Niveau | Neurones quotidiens | Utilisation équivalente | Remarques |
| ---- | ------------- | --------------------------------------- | ----------------------- |
| Gratuit |**10 000**| ~ 150 LLM resp / 500 s audio / 15 000 intégrations | Avantage mondial, plus de 50 modèles |

Modèles gratuits populaires : `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (audio gratuit !), `@cf/qwen/qwen2.5-coder-15b-instruct`

> Nécessite un jeton API + un identifiant de compte de [dash.cloudflare.com](https://dash.cloudflare.com). Stockez lID de compte dans les paramètres du fournisseur.### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕

| Niveau | Quotas gratuits | Localisation | Remarques |
| ---- | ------------- | ------------ | ----------------------------------- |
| Gratuit |**1 million de jetons**| 🇫🇷 Paris, UE | Aucune carte de crédit nécessaire dans certaines limites |

Disponible gratuitement : `qwen3-235b-a22b-instruct-2507` (Qwen3 235B !), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`

> Conforme UE/RGPD. Obtenez la clé API sur [console.scaleway.com](https://console.scaleway.com).

>**💡 The Ultimate Free Stack (11 fournisseurs, 0 $ pour toujours) :**
>
> ```
> Kiro (kr/) → Claude Sonnet/Haiku ILLIMITÉ
> Qoder (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 ILLIMITÉ
> LongCat Lite (lc/) → LongCat-Flash-Lite — 50 millions de jetons/jour 🔥
> Pollinisations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — aucune clé nécessaire
> Qwen (qw/) → modèles qwen3-coder ILLIMITÉS
> Gemini (gemini/) → Gemini 2.5 Flash — 1 500 req/jour gratuits
> Cloudflare AI (cf/) → 50+ modèles — 10K Neurons/jour
> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1 million de jetons gratuits (UE)
> Groq (groq/) → Lama/Gemma — 14,4K req/jour ultra-rapide
> NVIDIA NIM (nvidia/) → Plus de 70 modèles ouverts — 40 RPM pour toujours
> Cerebras (cerebras/) → Lama/Qwen le plus rapide au monde — 1 million de tok/jour
> ```## 🎙️ Free Transcription Combo

> Transcrivez n'importe quel audio/vidéo pour**0 $**— Deepgram mène avec 200 $ gratuits, AssemblyAI 50 $ de secours, Groq Whisper comme sauvegarde d'urgence illimitée.

| Fournisseur | Crédits gratuits | Meilleur modèle | Limite de taux |
| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
| 🟢**Deepgram**|**200 $ gratuits**(inscription) | `nova-3` — meilleure précision, plus de 30 langues | Aucune limite de RPM sur les crédits gratuits |
| 🔵**AssemblyAI**|**50 $ gratuits**(inscription) | `universal-3-pro` — chapitres, sentiments, PII | Aucune limite de RPM sur les crédits gratuits |
| 🔴**Groq**|**Gratuit pour toujours**| `chuchotement-large-v3` — OpenAI Whisper | 30 tr/min (taux limité) |

**Combo suggéré dans `/dashboard/combos` :**```
Name: free-transcription
Strategy: Priority
Nodes:
  [1] deepgram/nova-3          → uses $200 free first
  [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
  [3] groq/whisper-large-v3    → free forever, emergency fallback

Ensuite, dans /dashboard/media → ongletTranscription: téléchargez n'importe quel fichier audio ou vidéo → sélectionnez votre point de terminaison combo → obtenez la transcription dans les formats pris en charge.## 💡 Key Features

OmniRoute v2.0 est conçu comme une plate-forme opérationnelle et non comme un simple proxy relais.### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)

Fonctionnalité Ce qu'il fait
Famille rapide Grok-4 Modèles xAI à 0,20 $/0,50 $/M — 1 143 ms de référence (30 % plus rapide que Gemini 2.5 Flash)
🧠GLM-5 via Z.AI Contexte de sortie de 128 000 $, 0,5 / 1 million de dollars  le dernier produit phare de la famille GLM
🔮MiniMax M2.5 Raisonnement + tâches agentiques à 0,30 $/1 million — mise à niveau significative depuis M2.1
🎯toolCalling Flag par modèle toolCalling : true/false par modèle dans le registre — AutoCombo ignore les modèles non compatibles avec les outils
🌍Détection d'intention multilingue Mots-clés PT/ZH/ES/AR dans la notation AutoCombo — meilleure sélection de modèles pour le contenu non anglais
📊Replis basés sur des benchmarks Latence p95 réelle à partir de la notation combinée des flux de requêtes en direct — AutoCombo apprend à partir des données réelles
🔁Demander une déduplication Fenêtre de déduplication basée sur le hachage de contenu — sécurisée multi-agents, évite les frais en double
🔌Stratégie de routeur enfichable Interface extensible RouterStrategy — ajoutez une logique de routage personnalisée sous forme de plugins ### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
Fonctionnalité Ce qu'il fait
🎮Aire de jeux modèle Page de tableau de bord pour tester n'importe quel modèle directement — sélecteurs de fournisseur/modèle/point de terminaison, éditeur de Monaco, streaming, abandon, timing
🔏Correspondance d'empreintes digitales CLI Ordre des en-têtes/corps par fournisseur pour correspondre aux signatures CLI natives : basculez par fournisseur dans Paramètres > Sécurité.Votre IP proxy est préservée
🤝Prise en charge ACP (Protocole Agent Client) Découverte d'agent CLI (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 de plus), générateur de processus, point de terminaison /api/acp/agents
🤖Tableau de bord des agents ACP Page Débogage > Agents — grille de 14 agents avec état d'installation, version, formulaire d'agent personnalisé pour n'importe quel outil CLI. Les utilisateursOpenCodebénéficient d'un bouton "Télécharger opencode.json" qui génère automatiquement une configuration prête à l'emploi avec tous les modèles disponibles.
🔧Modèle personnalisé de routage apiFormat Les modèles personnalisés avec apiFormat : "responses" sont désormais correctement acheminés vers le traducteur de l'API Responses
🏢Isolement de l'espace de travail Codex Plusieurs espaces de travail Codex par e-mail — OAuth sépare correctement les connexions par ID d'espace de travail
🔄Mise à jour automatique électronique L'application de bureau vérifie les mises à jour + installation automatique au redémarrage ### 🤖 Agent & Protocol Operations (v2.0)
Fonctionnalité Ce qu'il fait
🔧Serveur MCP (25 outils) Outils IDE/agent via 3 transports : stdio, SSE (/api/mcp/sse), Streamable HTTP (/api/mcp/stream). 18 cœurs + 3 mémoires + 4 outils de compétences
🤝Serveur A2A (JSON-RPC + SSE) Exécution de tâches d'agent à agent avec flux de synchronisation et de streaming
🧭Page des points de terminaison consolidés Page de gestion à onglets avec les onglets Endpoint Proxy, MCP, A2A et API Endpoints
🎚️Bascules d'activation/désactivation du service Interrupteurs ON/OFF pour MCP et A2A avec persistance des paramètres (par défaut : OFF)
🛰️Battement de coeur d'exécution MCP Statut réel du processus (pid, disponibilité, âge du battement de cœur, transport, mode scope)
📋Piste d'audit MCP Journaux d'audit filtrables avec succès/échec et attribution des clés
🔐Application du champ d'application du MCP 10 autorisations de portée granulaire pour un accès contrôlé aux outils
📡Gestion du cycle de vie des tâches A2A Répertorier/filtrer les tâches, inspecter les événements/artefacts, annuler les tâches en cours
📋Découverte de la carte d'agent /.well-known/agent.json pour la découverte automatique du client
🧪Harnais de test du protocole E2E Le vrai client MCP SDK + A2A circule dans test:protocols:e2e
⚙️Contrôles opérationnels Changer de combo, appliquer des profils de résilience, réinitialiser les disjoncteurs à partir d'une surface de contrôle ### 🧠 Routing & Intelligence
Fonctionnalité Ce qu'il fait
🎯Repli intelligent à 4 niveaux Auto-route : Abonnement → Clé API → Pas cher → Gratuit
📊Suivi des quotas en temps réel Nombre de jetons en direct + réinitialisation du compte à rebours par fournisseur
🔄Traduction de formats OpenAI ↔ Claude ↔ Gémeaux ↔ Réponses avec conversions sécurisées
👥Support multi-comptes Plusieurs comptes par fournisseur avec sélection intelligente
🔄Actualisation automatique des jetons Les jetons OAuth s'actualisent automatiquement avec une nouvelle tentative
🎨Combos personnalisés 9 stratégies d'équilibrage + contrôle de la chaîne de repli
🌐Routeur générique provider/* routage dynamique
🧠Penser les contrôles budgétaires Limites du raisonnement passthrough, automatique, personnalisé et adaptatif
🔀Alias de modèle Alias de modèle intégré et personnalisé et sécurité de la migration
Dégradation de l'arrière-plan Acheminer les tâches en arrière-plan de faible priorité vers des modèles moins chers
🧪Routage intelligent sensible aux tâches Modèle de sélection automatique par type de contenu (codage/vision/analyse/résumé)
🔄Flux de travail des agents A2A Orchestrateur FSM déterministe pour les exécutions d'agents multi-étapes avec état
🔀Routage adaptatif Remplacement de stratégie dynamique basé sur le volume de jetons et la complexité des invites
🎲Diversité des fournisseurs Score d'entropie de Shannon équilibrant la distribution du trafic auto-combo
💬Injection d'invite du système Contrôles comportementaux globaux appliqués de manière cohérente
📄Compatibilité API des réponses Prise en charge complète de /v1/responses pour le Codex et les flux de travail agents avancés ### 🎵 Multi-Modal APIs
Fonctionnalité Ce qu'il fait
🖼️Génération d'images /v1/images/generations avec le cloud et les backends locaux
📐Intégrations /v1/embeddings pour les pipelines de recherche et RAG
🎤Transcription audio /v1/audio/transcriptions — 7 fournisseurs (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), détection automatique de langue, prise en charge MP4/MP3/WAV
🔊Texte-parole /v1/audio/speech — 10 fournisseurs (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) avec des messages d'erreur corrects
🎬Génération vidéo /v1/videos/generations (ComfyUI + SD WebUI workflows)
🎵Génération musicale /v1/music/generations (flux de travail ComfyUI)
🛡️Modérations Contrôles de sécurité /v1/moderations
🔀Reclassement /v1/rerank pour la notation de pertinence
🔍Recherche Web🆕 /v1/search — 5 fournisseurs (Serper, Brave, Perplexity, Exa, Tavily), plus de 6 500 gratuits/mois, basculement automatique, cache ### 🛡️ Resilience, Security & Governance
Fonctionnalité Ce qu'il fait
🔌Disjoncteurs Déclenchement/récupération par modèle avec contrôles de seuil
🎯Modèles prenant en compte les points de terminaison Les modèles personnalisés déclarent les points de terminaison pris en charge + le format API
🛡️Troupeau anti-tonnerre Protections mutex + sémaphore sur les événements de nouvelle tentative/taux
🧠Cache sémantique + signature Réduction des coûts/latences avec deux couches de cache
Demande d'idempotence Fenêtre de protection contre les doubles
🔒Usurpation d'empreintes digitales TLS Empreinte digitale TLS de type navigateur —réduit la détection des robots et le signalement des comptes
🔏Correspondance d'empreintes digitales CLI Correspond aux signatures de requêtes CLI natives —réduit le risque d'interdiction tout en préservant l'adresse IP du proxy
🌐Filtrage IP Contrôle des listes autorisées/bloquées pour les déploiements exposés
📊Limites de taux modifiables Limites configurables au niveau global/fournisseur avec persistance
📉Dégradation gracieuse Capacités de secours multicouches protégeant les opérations principales de la passerelle
📜Piste d'audit de configuration Suivi des modifications basé sur les différences empêchant la dérive opérationnelle avec de simples restaurations
Synchronisation de la santé du fournisseur Surveillance proactive de l'expiration des jetons déclenchant des alertes avant les échecs d'autorisation
🚪Désactivation automatique des comptes interdits Disjoncteur opérationnel scellant automatiquement les comptes de jetons bloqués de manière permanente
🔑Gestion des clés API + Cadrage Émission/rotation des clés sécurisées et contrôles des modèles/fournisseurs
👁️Révélation de clé API étendue🆕 Récupération opt-in des clés API via ALLOW_API_KEY_REVEAL
🛡️Protégé /models Gating d'authentification et masquage du fournisseur en option pour le catalogue de modèles ### 📊 Observability & Analytics
Fonctionnalité Ce qu'il fait
📝Demande + Journalisation proxy Journalisation complète des requêtes/réponses et du proxy
📉Journaux détaillés diffusés🆕 Reconstruit proprement les flux de charge utile SSE dans l'interface utilisateur
📋Tableau de bord des journaux unifiés Vues de requête, de proxy, d'audit et de console sur une seule page
🔍Demander une télémétrie Latence p50/p95/p99 et suivi des requêtes
🏥Tableau de bord de santé Temps de disponibilité, états des disjoncteurs, verrouillages, statistiques du cache
💰Suivi des coûts Contrôles budgétaires et visibilité des prix par modèle
📈Visualisations analytiques Informations sur l'utilisation du modèle/fournisseur et vues des tendances
🧪Cadre d'évaluation Tests du Golden Set avec stratégies de correspondance configurables
📡Diagnostics en direct🆕 Contournement du cache sémantique pour des tests combo précis en direct ### ☁️ Deployment & Platform
Fonctionnalité Ce qu'il fait
🌐Déployer n'importe où Localhost, VPS, Docker, environnements Cloud
🚇Tunnel Cloudflare🆕 Intégration Quick Tunnel en un clic depuis le tableau de bord
🔑Filtrage des modèles de clés API Réponse native /v1/models filtrée via les rôles contextuels Bearer attribués
Contournement intelligent du cache Heuristiques TTL configurables et contrôles de récupération forcée
🔄Sauvegarde/Restauration Flux d'exportation/importation et de reprise après sinistre
🧙Assistant d'intégration Configuration guidée de première exécution
🔧Tableau de bord des outils CLI Configuration en un clic pour les outils de codage populaires
🎮Aire de jeux modèle Testez nimporte quel fournisseur/modèle/point de terminaison à partir du tableau de bord
🔏Bascule d'empreinte digitale CLI Correspondance des empreintes digitales par fournisseur dans Paramètres > Sécurité
🌐i18n (30 langues) Tableau de bord complet + prise en charge des langues des documents avec couverture RTL
🧹Effacer tous les modèles Suppression de la liste de modèles en un clic dans les détails du fournisseur
👁️Contrôles de la barre latérale🆕 Masquer les composants et les intégrations dans les paramètres d'apparence
📋Modèles de problèmes Modèles GitHub standardisés pour les bogues et les fonctionnalités
📂Répertoire de données personnalisé Remplacement de DATA_DIR pour l'emplacement de stockage ### Feature Deep Dive

Smart fallback with practical cost control

Combo: "my-coding-stack"
  1. cc/claude-opus-4-6
  2. nvidia/llama-3.3-70b
  3. glm/glm-4.7
  4. if/kimi-k2-thinking

En cas d'échec d'un quota, d'un taux ou d'un état de santé, OmniRoute passe automatiquement au candidat suivant sans commutation manuelle.#### Protocol management that is visible and operable

  • MCP + A2A sont détectables dans l'interface utilisateur et la documentation (non masquées)
  • Les API d'état du protocole exposent les données opérationnelles en direct (/api/mcp/*, /api/a2a/*)
  • Les tableaux de bord incluent des actions pour les opérations du jour 2 (basculements combinés, réinitialisations de disjoncteur, annulation de tâches)#### Translator + validation workflow

La zone Traducteur comprend :

-Playground : demander des contrôles de transformation -Testeur de chat : aller-retour complet de requête/réponse -Banc de test : plusieurs cas en une seule fois -Live Monitor : vue du trafic en temps réel

Plus validation du protocole avec de vrais clients via npm run test:protocols:e2e.

📖MCP Server README— Référence de l'outil, configurations IDE et exemples de clients

📖A2A Server README— Compétences, méthodes JSON-RPC, streaming et cycle de vie des tâches## 🧪 Evaluations (Evals)

OmniRoute comprend un cadre d'évaluation intégré pour tester la qualité des réponses LLM par rapport à un ensemble de référence. Accédez-y viaAnalytics → Evalsdans le tableau de bord.### Built-in Golden Set

Le « OmniRoute Golden Set » préchargé contient des cas de test pour :

  • Salutations, mathématiques, géographie, génération de code
  • Conformité au format JSON, traduction, génération de démarques
  • Refus de sécurité (contenu nuisible), comptage, logique booléenne### Evaluation Strategies
Stratégie Descriptif Exemple
exact La sortie doit correspondre exactement "4"
contient La sortie doit contenir une sous-chaîne (insensible à la casse) "Paris"
expression régulière La sortie doit correspondre au modèle regex "1.*2.*3"
personnalisé La fonction JS personnalisée renvoie vrai/faux (sortie) => sortie.longueur > 10 ---

📖 Setup Guide

Protocol Setup (MCP + A2A)

<détails>

🧩 Configuration MCP (Model Context Protocol)

Démarrez le transport MCP en mode stdio :```bash omniroute --mcp


Flux de validation recommandé :

1. Connectez votre client MCP via stdio.
2. Exécutez `omniroute_get_health`.
3. Exécutez `omniroute_list_combos`.
4. Ouvrez « /dashboard/mcp » pour confirmer le rythme cardiaque, l'activité et l'audit.

API utiles pour l'automatisation :

- `GET /api/mcp/status`
- `GET /api/mcp/tools`
- `GET /api/mcp/audit`
- `GET /api/mcp/audit/stats`</details>

<détails>
<summary><b>🤝 Configuration A2A (Agent2Agent)</b></summary>

Découvrez l'agent :```bash
curl http://localhost:20128/.well-known/agent.json

Envoyer une tâche :```bash curl -X POST http://localhost:20128/a2a
-H 'content-type: application/json'
-d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'


Gérer le cycle de vie :

- `GET /api/a2a/statut`
- `GET /api/a2a/tâches`
- `GET /api/a2a/tasks/:id`
- `POST /api/a2a/tasks/:id/cancel`

Interface utilisateur opérationnelle :

- `/dashboard/a2a` pour l'observabilité des tâches/états/flux et les actions de fumée</details>

<détails>
<summary><b>🧪 Validation du protocole de bout en bout</b></summary>

Validez les deux protocoles avec de vrais clients :```bash
npm run test:protocols:e2e

Cela vérifie :

  • Connexion/liste/appel du client MCP SDK
  • Découverte A2A/envoyer/diffuser/obtenir/annuler
  • Recoupement des données dans les API d'audit MCP et de gestion des tâches A2A

<détails>

💳 Fournisseurs d'abonnement### Claude Code (Pro/Max)
Dashboard → Providers → Connect Claude Code
→ OAuth login → Auto token refresh
→ 5-hour + weekly quota tracking

Models:
  cc/claude-opus-4-6
  cc/claude-sonnet-4-5-20250929
  cc/claude-haiku-4-5-20251001

**Conseil de pro :**Utilisez Opus pour les tâches complexes, Sonnet pour la rapidité. OmniRoute suit le quota par modèle !### OpenAI Codex (Plus/Pro)

Dashboard → Providers → Connect Codex
→ OAuth login (port 1455)
→ 5-hour + weekly reset

Models:
  cx/gpt-5.2-codex
  cx/gpt-5.1-codex-max

Codex Account Limit Management (5h + Weekly)

Chaque compte Codex dispose désormais de bascules de politique dans « Tableau de bord -> Fournisseurs » :

  • 5h (ON/OFF) : applique la politique de seuil de fenêtre de 5 heures.
  • Hebdomadaire (ON/OFF) : applique la politique de seuil de fenêtre hebdomadaire.
  • Comportement de seuil : lorsqu'une fenêtre activée atteint >=90 % d'utilisation, ce compte est ignoré.
  • Comportement de rotation : OmniRoute achemine automatiquement vers le prochain compte Codex éligible.
  • Comportement de réinitialisation : lorsque le délai "resetAt" du fournisseur est écoulé, le compte redevient automatiquement éligible.

Scénarios :

  • 5h ON + Weekly ON : le compte est ignoré lorsque l'une ou l'autre des fenêtres atteint le seuil.
  • 5h OFF + Weekly ON : seule une utilisation hebdomadaire peut bloquer le compte.
  • 5h ON + Weekly OFF : seule une utilisation de 5 heures peut bloquer le compte.
  • resetAt réussi : le compte entre à nouveau automatiquement dans la rotation (pas de réactivation manuelle).### Gemini CLI (FREE 180K/month!)
Dashboard → Providers → Connect Gemini CLI
→ Google OAuth
→ 180K completions/month + 1K/day

Models:
  gc/gemini-3-flash-preview
  gc/gemini-2.5-pro

**Meilleur rapport qualité-prix :**Énorme niveau gratuit ! Utilisez-le avant les niveaux payants.### GitHub Copilot

Dashboard → Providers → Connect GitHub
→ OAuth via GitHub
→ Monthly reset (1st of month)

Models:
  gh/gpt-5
  gh/claude-4.5-sonnet
  gh/gemini-3.1-pro-preview

<détails>

🔑 Fournisseurs de clés API### NVIDIA NIM (FREE developer access — 70+ models)
  1. Inscrivez-vous : build.nvidia.com
  2. Obtenez une clé API gratuite (1 000 crédits d'inférence inclus)
  3. Tableau de bord → Ajouter un fournisseur → NVIDIA NIM :
    • Clé API : nvapi-votre-clé

Modèles :nvidia/llama-3.3-70b-instruct, nvidia/mistral-7b-instruct et plus de 50 autres

**Conseil de pro :**API compatible OpenAI — fonctionne de manière transparente avec la traduction de format d'OmniRoute !### DeepSeek

  1. Inscrivez-vous : platform.deepseek.com
  2. Obtenez la clé API
  3. Tableau de bord → Ajouter un fournisseur → DeepSeek

Modèles :deepseek/deepseek-chat, deepseek/deepseek-coder### Groq (Free Tier Available!)

  1. Inscrivez-vous : console.groq.com
  2. Obtenez la clé API (niveau gratuit inclus)
  3. Tableau de bord → Ajouter un fournisseur → Groq

Modèles :groq/llama-3.3-70b, groq/mixtral-8x7b

**Conseil de pro :**Inférence ultra-rapide : idéale pour le codage en temps réel !### OpenRouter (100+ Models)

  1. Inscrivez-vous : openrouter.ai
  2. Obtenez la clé API
  3. Tableau de bord → Ajouter un fournisseur → OpenRouter

**Modèles :**Accédez à plus de 100 modèles de tous les principaux fournisseurs via une seule clé API.

Comportement du tableau de bord :Les modèles OpenRouter sont gérés à partir desModèles disponibles. L'ajout manuel, l'importation et la synchronisation automatique mettent tous à jour la même liste.

<détails>

💰 Fournisseurs bon marché (sauvegarde)### GLM-4.7 (Daily reset, $0.6/1M)
  1. Inscrivez-vous : Zhipu AI
  2. Obtenez la clé API du plan de codage
  3. Tableau de bord → Ajouter une clé API :
    • Fournisseur : glm
    • Clé API : votre-clé

Utilisez :glm/glm-4.7

**Conseil de pro :**Le plan de codage offre un quota de 3 × à un coût de 1/7 ! Réinitialisation quotidienne à 10h00.### MiniMax M2.1 (5h reset, $0.20/1M)

  1. Inscrivez-vous : MiniMax
  2. Obtenez la clé API
  3. Tableau de bord → Ajouter une clé API

Utilisez :minimax/MiniMax-M2.1

**Conseil de pro :**Option la moins chère pour un contexte long (1 million de jetons) !### Kimi K2 ($9/month flat)

  1. Abonnez-vous : Moonshot AI
  2. Obtenez la clé API
  3. Tableau de bord → Ajouter une clé API

Utilisez :kimi/kimi-latest

**Conseil de pro :**Fixe à 9 $/mois pour 10 millions de jetons = 0,90 $/1 M de coût effectif !

<détails>

🆓 Fournisseurs GRATUITS (sauvegarde d'urgence)### Qoder (5 FREE models via OAuth)
Dashboard → Connect Qoder
→ Qoder OAuth login
→ Unlimited usage

Models:
  if/kimi-k2-thinking
  if/qwen3-coder-plus
  if/glm-4.7
  if/minimax-m2
  if/deepseek-r1

Qwen (4 FREE models via Device Code)

Dashboard → Connect Qwen
→ Device code authorization
→ Unlimited usage

Models:
  qw/qwen3-coder-plus
  qw/qwen3-coder-flash

Kiro (Claude FREE)

Dashboard → Connect Kiro
→ AWS Builder ID or Google/GitHub
→ Unlimited usage

Models:
  kr/claude-sonnet-4.5
  kr/claude-haiku-4.5

<détails>

🎨 Créer des combos### Example 1: Maximize Subscription → Cheap Backup
Dashboard → Combos → Create New

Name: premium-coding
Models:
  1. cc/claude-opus-4-6 (Subscription primary)
  2. glm/glm-4.7 (Cheap backup, $0.6/1M)
  3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)

Use in CLI: premium-coding

Example 2: Free-Only (Zero Cost)

Name: free-combo
Models:
  1. gc/gemini-3-flash-preview (180K free/month)
  2. if/kimi-k2-thinking (unlimited)
  3. qw/qwen3-coder-plus (unlimited)

Cost: $0 forever!

<détails>

🔧 Intégration CLI### Cursor IDE
Settings → Models → Advanced:
  OpenAI API Base URL: http://localhost:20128/v1
  OpenAI API Key: [from OmniRoute dashboard]
  Model: cc/claude-opus-4-6

Claude Code

Utilisez la pageCLI Toolsdans le tableau de bord pour une configuration en un clic, ou modifiez manuellement ~/.claude/settings.json.### Codex CLI

export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"

codex "your prompt"

OpenClaw

Option 1 — Tableau de bord (recommandé) :``` Dashboard → CLI Tools → OpenClaw → Select Model → Apply


**Option 2 — Manuel :**Modifiez `~/.openclaw/openclaw.json` :```json
{
  "models": {
    "providers": {
      "omniroute": {
        "baseUrl": "http://127.0.0.1:20128/v1",
        "apiKey": "sk_omniroute",
        "api": "openai-completions"
      }
    }
  }
}

**Remarque :**OpenClaw ne fonctionne qu'avec OmniRoute local. Utilisez « 127.0.0.1 » au lieu de « localhost » pour éviter les problèmes de résolution IPv6.### Cline / Continue / RooCode

Settings → API Configuration:
  Provider: OpenAI Compatible
  Base URL: http://localhost:20128/v1
  API Key: [from OmniRoute dashboard]
  Model: if/kimi-k2-thinking

OpenCode

**Étape 1 :**Ajoutez OmniRoute en tant que fournisseur personnalisé :```bash opencode /connect

Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key


**Étape 2 :**Créez/modifiez « opencode.json » à la racine de votre projet :```json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "omniroute": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "OmniRoute",
      "options": {
        "baseURL": "http://localhost:20128/v1"
      },
      "models": {
        "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
        "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
        "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
      }
    }
  }
}

**Étape 3 :**Sélectionnez le modèle dans OpenCode :```bash /models

Select any OmniRoute model from the list


>**Conseil :**Ajoutez n'importe quel modèle disponible dans votre point de terminaison OmniRoute `/v1/models` à la section `models`. Utilisez le format « fournisseur/modèle-id » de votre tableau de bord OmniRoute.</details>

---

## Dépannage

<détails>
<summary><b>Cliquez pour développer le guide de dépannage</b></summary>

**"Le modèle linguistique n'a pas fourni de messages"**

- Quota du fournisseur épuisé → Vérifier le suivi des quotas du tableau de bord
- Solution : utilisez la solution de secours combinée ou passez à un niveau moins cher

**Rate limiting**

- Quota d'abonnement épuisé → Repli vers GLM/MiniMax
- Ajouter un combo : `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`

**OAuth token expired**

- Actualisé automatiquement par OmniRoute
- Si les problèmes persistent : Tableau de bord → Fournisseur → Reconnecter

**High costs**

- Vérifiez les statistiques d'utilisation dans le tableau de bord → Coûts
- Passer du modèle principal à GLM/MiniMax
- Utilisez le niveau gratuit (Gemini CLI, Qoder) pour les tâches non critiques

**Les ports du tableau de bord/API sont incorrects**

- `PORT` est le port de base canonique (et le port API par défaut)
- `API_PORT` remplace uniquement l'écouteur d'API compatible OpenAI
- `DASHBOARD_PORT` remplace uniquement l'écouteur du tableau de bord/Next.js
- Définissez `NEXT_PUBLIC_BASE_URL` sur votre tableau de bord/URL publique (pour les rappels OAuth)

**Cloud sync errors**

- Vérifiez que `BASE_URL` pointe vers votre instance en cours d'exécution
- Vérifiez que « CLOUD_URL » pointe vers votre point de terminaison cloud attendu
- Gardez les valeurs `NEXT_PUBLIC_*` alignées avec les valeurs côté serveur

**La première connexion ne fonctionne pas**

- Vérifiez `INITIAL_PASSWORD` dans `.env`
- S'il n'est pas défini, le mot de passe de secours est « 123456 »

**No request logs**

- Les artefacts de requête sont écrits dans `DATA_DIR/call_logs/` sous la forme d'un fichier JSON par requête
- Activez la capture du pipeline depuis le tableau de bord → Journaux → Demander des journaux si vous avez besoin de charges utiles détaillées par étape
- Définissez `APP_LOG_TO_FILE=true` si vous souhaitez également les journaux de la console d'application dans `logs/application/app.log`
- Ajustez `APP_LOG_MAX_FILE_SIZE`, `APP_LOG_RETENTION_DAYS`, `APP_LOG_MAX_FILES` et `CALL_LOG_MAX_ENTRIES` selon vos besoins

**Le test de connexion indique « Invalide » pour les fournisseurs compatibles OpenAI**

- De nombreux fournisseurs n'exposent pas de point de terminaison `/models`
- OmniRoute v1.0.6+ inclut une validation de secours via la complétion du chat
- Assurez-vous que l'URL de base inclut le suffixe `/v1`### 🔐 OAuth on a Remote Server

<a name="oauth-on-a-remote-server"></a>
<a name="oauth-em-servidor-remoto"></a>

>**⚠️ Important pour les utilisateurs exécutant OmniRoute sur un VPS, Docker ou tout autre serveur distant**#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?

Les fournisseurs**Antigravity**et**Gemini CLI**utilisent**Google OAuth 2.0**. Google exige que le « redirect_uri » dans le flux OAuth corresponde exactement à l'un des URI préenregistrés dans la Google Cloud Console de l'application.

Les informations d'identification OAuth regroupées dans OmniRoute sont enregistrées**pour `localhost` uniquement**. Lorsque vous accédez à OmniRoute sur un serveur distant (par exemple `https://omniroute.myserver.com`), Google rejette l'authentification avec :```
Error 400: redirect_uri_mismatch

Solution: Configure your own OAuth credentials

Vous devez créer unID client OAuth 2.0dans Google Cloud Console avec l'URI de votre serveur.#### Step-by-step

1. Ouvrez Google Cloud Console

Accédez à : https://console.cloud.google.com/apis/credentials

2. Create a new OAuth 2.0 Client ID

  • Cliquez sur**"+ Créer des informations d'identification""ID client OAuth"**
  • Type d'application :"Application Web"
  • Nom : tout ce que vous voulez (par exemple "OmniRoute Remote")

3. Ajouter des URI de redirection autorisés

Dans le champ**"URI de redirection autorisés"**, ajoutez :``` https://your-server.com/callback


> Remplacez « votre-serveur.com » par le domaine ou l'IP de votre serveur (incluez le port si nécessaire, par exemple « http://45.33.32.156:20128/callback »).

**4. Enregistrez et copiez les informations d'identification**

Après la création, Google affichera l'**ID client**et le**Secret client**.

**5. Définir les variables d'environnement**

Dans votre `.env` (ou variables d'environnement Docker) :```bash
# For Antigravity:
ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret

# For Gemini CLI:
GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret

6. Restart OmniRoute```bash

npm:

npm run dev

Docker:

docker restart omniroute


**7. Try connecting again**

Tableau de bord → Fournisseurs → Antigravity (ou Gemini CLI) → OAuth

Google va désormais rediriger correctement vers « https://your-server.com/callback ».---

#### Temporary workaround (without custom credentials)

Si vous ne souhaitez pas configurer vos propres identifiants pour le moment, vous pouvez toujours utiliser le**flux d'URL manuel** :

1. OmniRoute ouvre l'URL d'autorisation Google
2. Après autorisation, Google tente de rediriger vers « localhost » (ce qui échoue sur le serveur distant)
3.**Copiez l'URL complète**depuis la barre d'adresse de votre navigateur (même si la page ne se charge pas)
4. Collez cette URL dans le champ affiché dans le modal de connexion OmniRoute.
5. Click**"Connect"**

> Cela fonctionne car le code d'autorisation dans l'URL est valide, que la page de redirection soit chargée ou non.---

<détails>
<summary><b>🇧🇷 Version en portugais</b></summary>#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?

Les fournisseurs**Antigravity**et**Gemini CLI**utilisent**Google OAuth 2.0**pour l'authentification. Google exige que `redirect_uri` soit utilisé pour que le flux OAuth soit**exactement**un URI pré-cadastré dans l'application Google Cloud Console.

Comme les informations d'identification OAuth sont intégrées à OmniRoute, elles sont**spécialisées pour `localhost`**. Lorsque vous accédez à OmniRoute sur un serveur distant (ex : `https://omniroute.meuservidor.com`), Google refuse l'authentification avec :```
Error 400: redirect_uri_mismatch

Solução: Configure suas próprias credenciais OAuth

Vous devez précisément créer unID client OAuth 2.0dans Google Cloud Console avec l'URI de votre serveur.#### Passo a passo

1. Accéder à Google Cloud Console

Abra : https://console.cloud.google.com/apis/credentials

2. Appelez un nouvel ID client OAuth 2.0

  • Cliquez dessus**"+ Créer des informations d'identification""ID client OAuth"**
  • Type d'application :"Application Web"
  • Nom : escolha qualquer nome (ex : OmniRoute Remote)

3. Adicione comme URI de redirection autorisés

Pas de champ**"URI de redirection autorisés"**, ajouter :``` https://seu-servidor.com/callback


> Remplacez `seu-servidor.com` par votre domaine ou l'adresse IP de votre serveur (y compris le port si nécessaire, par exemple : `http://45.33.32.156:20128/callback`).

**4. Salve et copie comme credenciais**

Après avoir crié, Google affichera le**Client ID**et le**Client Secret**.

**5. Configurer comme variables d'ambiance**

Pas votre `.env` (ou les variables ambiantes de Docker) :```bash
# Para Antigravity:
ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret

# Para Gemini CLI:
GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret

6. Reinicie o OmniRoute```bash

Se usando npm:

npm run dev

Se usando Docker:

docker restart omniroute


**7. Tente de connexion nouvelle**

Tableau de bord → Fournisseurs → Antigravité (ou Gemini CLI) → OAuth

Agora ou Google redirigera directement vers `https://seu-servidor.com/callback` et la fonction d'authentification.---

#### Workaround temporário (sem configurar credenciais próprias)

Si vous ne souhaitez pas créer des informations d'identification appropriées il y a peu, vous pouvez également utiliser le flux**manuel d'URL** :

1. OmniRoute ouvre une URL d'autorisation de Google
2. Après avoir autorisé, Google tente de rediriger vers `localhost` (qui n'est pas un serveur distant)
3.**Copiez une URL complète**à partir de la barre d'adresse de votre navigateur (même si la page n'est pas fermée)
4. Cole est une URL dans le champ qui apparaît dans le modal de connexion à OmniRoute
5. Cliquez dessus**"Connecter"**

> Cette solution de contournement fonctionne parce que le code d'autorisation de l'URL est valide indépendamment de la redirection lorsqu'il est chargé ou non.</details>

---

</details>

## 🛠️ Tech Stack

<détails>
<summary><b>Cliquez pour développer les détails de la pile technologique</b></summary>

-**Exécution** : Node.js 18-22 LTS (⚠️ Node.js 24+ n'est**pas pris en charge**— les binaires natifs `better-sqlite3` sont incompatibles)
-**Langage** : TypeScript 5.9 —**100 % TypeScript**sur `src/` et `open-sse/` (zéro `any` dans les modules principaux depuis la v2.0)
-**Framework** : Next.js 16 + React 19 + Tailwind CSS 4
-**Base de données** : LowDB (JSON) + SQLite (état du domaine + journaux proxy + audit MCP + décisions de routage)
-**Schémas** : Zod (validation des E/S de l'outil MCP, contrats API)
-**Protocoles** : MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
-**Streaming** : événements envoyés par le serveur (SSE)
-**Auth** : OAuth 2.0 (PKCE) + JWT + Clés API + Autorisation étendue MCP
-**Tests** : lanceur de tests Node.js + Vitest (900+ tests incluant unitaire, intégration, E2E)
-**CI/CD** : actions GitHub (publication automatique npm + Docker Hub à la sortie)
-**Site Internet**: [omniroute.online](https://omniroute.online)
-**Package** : [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-**Docker** : [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-**Résilience** : disjoncteur, interruption exponentielle, troupeau anti-tonnerre, usurpation d'identité TLS, auto-réparation automatique</details>

---

## Documentation

| Documenter | Descriptif |
| ---------------------------------------------- | --------------------------------------------------- |
| [Guide de l'utilisateur](docs/USER_GUIDE.md) | Fournisseurs, combos, intégration CLI, déploiement |
| [Référence API](docs/API_REFERENCE.md) | Tous les points de terminaison avec des exemples |
| [Serveur MCP](open-sse/mcp-server/README.md) | 16 outils MCP, configurations IDE, clients Python/TS/Go |
| [Serveur A2A](src/lib/a2a/README.md) | Protocole JSON-RPC 2.0, compétences, streaming, gestion des tâches |
| [Moteur Auto-Combo](docs/auto-combo.md) | Score à 6 facteurs, packs de modes, auto-guérison |
| [Dépannage](docs/TROUBLESHOOTING.md) | Problèmes courants et solutions |
| [Architecture](docs/ARCHITECTURE.md) | Architecture du système et composants internes |
| [Contribuer](CONTRIBUTING.md) | Configuration et directives de développement |
| [Spécifications OpenAPI](docs/openapi.yaml) | Spécification OpenAPI 3.0 |
| [Politique de sécurité](SECURITY.md) | Rapports de vulnérabilité et pratiques de sécurité |
| [Déploiement de VM](docs/VM_DEPLOYMENT_GUIDE.md) | Guide complet : configuration VM + nginx + Cloudflare |
| [Galerie de fonctionnalités](docs/FEATURES.md) | Visite visuelle du tableau de bord avec captures d'écran |
| [Liste de contrôle de publication](docs/RELEASE_CHECKLIST.md) | Étapes de validation avant la publication |---

## 🗺️ Roadmap

OmniRoute propose**plus de 210 fonctionnalités prévues**au cours de plusieurs phases de développement. Here are the key areas:

| Catégorie | Planned Features | Faits saillants |
| ----------------------------- | ---------------- | ---------------------------------------------------------------------------- |
| 🧠**Routage & Intelligence**| 25+              | Routage avec la latence la plus faible, routage basé sur des balises, contrôle en amont des quotas, sélection de comptes P2C |
| 🔒**Sécurité et conformité**| 20+              | Renforcement SSRF, masquage des informations d'identification, limite de débit par point de terminaison, portée des clés de gestion |
| 📊**Observabilité**| 15+              | Intégration OpenTelemetry, surveillance des quotas en temps réel, suivi des coûts par modèle |
| 🔄**Intégrations de fournisseurs**| 20+              | Registre de modèles dynamique, temps de recharge des fournisseurs, Codex multi-comptes, analyse des quotas Copilot |
| ⚡**Performances**| 15+              | Double couche de cache, cache d'invite, cache de réponse, streaming keepalive, API par lots |
| 🌐**Écosystème**| 10+              | API WebSocket, rechargement à chaud de la configuration, magasin de configuration distribué, mode commercial |### 🔜 Coming Soon

- 🔗**Intégration OpenCode**— Prise en charge par le fournisseur natif pour l'IDE de codage OpenCode AI
- 🔗**Intégration TRAE**— Prise en charge complète du cadre de développement TRAE AI
- 📦**Batch API**— Traitement par lots asynchrone pour les demandes groupées
- 🎯**Routage basé sur des balises**— Acheminez les requêtes en fonction de balises personnalisées et de métadonnées
- 💰**Stratégie du coût le plus bas**— Sélectionnez automatiquement le fournisseur disponible le moins cher

> 📝 Spécifications complètes des fonctionnalités disponibles dans [`docs/new-features/`](docs/new-features/) (217 spécifications détaillées)---

## 👥 Contributors

[![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)

### How to Contribute

1. Fork the repository
2. Créez votre branche de fonctionnalités (`git checkout -b feature/amazing-feature`)
3. Validez vos modifications (`git commit -m 'Ajouter une fonctionnalité étonnante'`)
4. Poussez vers la branche (`git push origin feature/amazing-feature`)
5. Open a Pull Request

Voir [CONTRIBUTING.md](CONTRIBUTING.md) pour des directives détaillées.### Releasing a New Version

```bash
# Create a release — npm publish happens automatically
gh release create v2.0.0 --title "v2.0.0" --generate-notes

📊 Star History

Stargazers over time

Stargazers over time

🙏 Acknowledgments

Un merci spécial à**9routerdedecolua**— le projet original qui a inspiré ce fork. OmniRoute s'appuie sur cette incroyable base avec des fonctionnalités supplémentaires, des API multimodales et une réécriture complète de TypeScript.

Un merci spécial à**CLIProxyAPI**— l'implémentation Go originale qui a inspiré ce port JavaScript.---

Licence

Licence MIT - voir LICENSE pour plus de détails.---

Built with ❤️ for developers who code 24/7
omniroute.online