## 💰 ~1,62 Md de tokens / mois via les offres gratuites de fournisseurs tiers
> **Utilisez vos propres comptes fournisseurs.** Il s’agit d’une estimation cumulée des offres gratuites tierces auxquelles vous pouvez être éligible séparément, et non d’une allocation de tokens accordée par OmniRoute. Inscrivez-vous, obtenez des identifiants lorsque cela est nécessaire et connectez les fournisseurs que vous pouvez utiliser ; chaque fournisseur contrôle ses limites, sa disponibilité et ses conditions.
>
> Cumuler manuellement les offres gratuites est pénible — des dizaines de SDK, des dizaines de limites de débit, et aucun moyen de savoir de quelle capacité vous disposez réellement. OmniRoute répertorie **489 entrées d’offres gratuites réparties sur 35 clés de pools récurrents** et calcule le nombre de tokens mis en avant à partir des **17 pools disposant d’un budget mensuel positif publié, auxquels s’ajoutent cinq plafonds Groq par modèle**, avec déduplication des pools partagés. Les quotas accessibles uniquement après une vérification d’identité régionale (actuellement : ModelScope) sont affichés séparément, soit +~6 M derrière une vérification d’identité régionale, et ne sont jamais inclus dans le total mis en avant. Le résultat reste visible dans le tableau de bord (`/dashboard/free-tiers`).
> Résumé animé de la page `/dashboard/free-tiers` en direct. Méthodologie complète (déduplication des pools, niveaux de crédits, conditions des fournisseurs) : **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> Ces chiffres font l’objet d’un nouvel audit toutes les deux semaines par rapport au catalogue en ligne et **peuvent évoluer dans les deux sens** — si un fournisseur met fin à une offre gratuite, le chiffre baisse ; si une nouvelle offre apparaît, il augmente. Nous publions ce que le catalogue calcule réellement, jamais un scénario idéal arrondi à la hausse.
⭐ Ajoutez une étoile au dépôt si OMNIROUTE vous a aidé à économiser de l’argent et à simplifier votre travail.
[](https://github.com/diegosouzapw/OmniRoute)
[](https://www.star-history.com/diegosouzapw/omniroute)
[](https://olud.ai/project/diegosouzapw-omniroute.html)
### 💬 Rejoignez la communauté
**👋 Suivez le mainteneur — découvrez en premier les nouveaux fournisseurs, les nouvelles versions et les astuces :**
[](https://www.linkedin.com/in/diegosouzapw/)
[](https://github.com/diegosouzapw)
[](https://discord.gg/U47eFqAXCn)
[](https://t.me/omnirouteOficial)
[](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4)
[](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4)
[](https://omniroute.online)
**Questions, conseils sur les fournisseurs, feuille de route et assistance → [Discord](https://discord.gg/U47eFqAXCn) · [Telegram](https://t.me/omnirouteOficial) · WhatsApp [🌍 Monde](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [🇧🇷 Brésil](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) / [Portail](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK)**
## 📈 La passerelle continue de s'agrandir
| | v3.8.50 | **v3.8.51** | `v3.8.52+` |
| ----------------------------------- | :-----------------------: | :---------: | :----------------------: |
| 🌐 Fournisseurs | 352 | **358** | 372 |
| 🧠 ID uniques de modèles de chat | 1320 | **1374** | 1443 |
| 🖼️ Pont de modalités | 🆕 vision + audio + vidéo | ✓ | ✓ |
| 📡 Catalogue gratuit de Radar | 🆕 sur inscription | ✓ | ✓ |
| ⚖️ Planification selon les quotas | 🆕 Quota-Share | ✓ | ✓ |
| 📊 Télémétrie des quotas | 🆕 en direct | ✓ | ✓ |
| 🧰 Mode sans interface | — | — | 🆕 `serve --headless` |
| 🛤️ Infrastructure de la branche LTS | — | — | 🆕 canaux de publication |
**→ [Feuille de route](ROADMAP.md) — en route vers `v3.9.0 LTS`**
## 🆓 Installez, connectez un fournisseur, puis acheminez via un point de terminaison unique
```bash
# Après avoir connecté un fournisseur, copiez votre clé OmniRoute depuis Tableau de bord → Points de terminaison :
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer YOUR_OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
`auto` nécessite une route éligible. Une nouvelle installation peut ne disposer d'aucune cible sans clé éligible, et un fournisseur sans clé peut refuser les clients tiers. Les fournisseurs marqués `tos: avoid`, notamment OpenCode Free et Kiro, sont exclus par défaut du routage automatique ; la connexion d'un compte ne remplace pas ce paramètre. Consultez le [Guide des offres gratuites](docs/getting-started/FREE-TIERS-GUIDE.md) avant de choisir un fournisseur.📦 Scripts de démarrage rapide à copier-coller pour **Python, Node.js, PHP et cURL** → [`examples/quickstart/`](examples/quickstart/)
# 💥 La promesse
# 🤔 Pourquoi OmniRoute ?
## 🤝 Soutenu par nos Amis Open Source
> **Vous voulez nous rejoindre en tant qu'Ami Open Source ?** Ce sont les entreprises qui soutiennent l'open source et aident à maintenir OmniRoute en mouvement — et nous déclarons publiquement où va chaque jeton qu'elles nous donnent. Contactez-nous : [diegosouza.pw@outlook.com](mailto:diegosouza.pw@outlook.com)
Kimi Moonshot AI
Merci à Kimi (Moonshot AI), notre Ami Fondateur Open Source, de soutenir ce projet ! Kimi est le laboratoire d'IA derrière les familles de modèles à poids ouverts K2 et K3 — Kimi K3 offre une fenêtre contextuelle de 1M de jetons, une vision native et un codage de pointe à une fraction des prix des modèles fermés, et fonctionne directement avec Claude Code, Codex et tous les outils de codage qu'OmniRoute prend en charge.
Ce que le soutien de Kimi finance : Les crédits API de Kimi alimentent le pipeline de publication validé par l'IA d'OmniRoute — l'étape de validation de fusion alimentée par Kimi K3 qui examine chaque pull request avant sa publication — ainsi que le développement quotidien de fonctionnalités. Le support de première classe de Kimi est disponible sur les deux rails : l'API directe Kimi (kimi-k3) et le plan de codage Kimi Code (OAuth et clé API). OmniRoute est également le premier projet open source brésilien dans le programme de soutien de Kimi. Obtenez une clé API Kimi avec 15% de crédits supplémentaires →
Cheaper Inference cheaperinference.com
Merci à Cheaper Inference, un Ami Open Source d'OmniRoute, de soutenir ce projet ! Cheaper Inference est une passerelle classée par coût qui revend 42 modèles de pointe — Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok et MiniMax — derrière un seul point d'accès compatible OpenAI, acheminant chaque requête vers le fournisseur éligible le moins cher sans jamais facturer au-dessus du prix catalogue du créateur du modèle.
Support de première classe dans OmniRoute : Chat Completions, le point d'accès natif /v1/responses, la vision, l'appel d'outils et 3 modèles d'image (grok-imagine, nano-banana-pro, nano-banana-2, accessibles sous cheaperinference/<model>). Obtenez une clé API →
Les liens tagués aff=omniroute sont des liens partenaires. Ils financent le projet sans coût supplémentaire pour vous. 🎟️ Promo Affiliés — coupons d'inscription gratuits de fournisseurs que nous ne sponsorisons pas (cliquez pour développer)Cette section est uniquement destinée aux codes de parrainage/coupon. Les partenariats sponsorisés se trouvent dans 🤝 Soutenu par nos Amis Open Source ci-dessus. OmniRoute n'a aucun parrainage ou partenariat avec les fournisseurs listés ici — ce sont des coupons publics que tout le monde peut utiliser.
AgentRouter agentrouter.org
AgentRouter — inscription affiliée · 100 $ de crédits gratuits à l'inscription (serveur gratuit, attendez-vous à une latence plus élevée — idéal pour les tests, pas pour la production). Support de première classe dans OmniRoute depuis la v3.8.50 : Chat Completions, le format de fil compatible Anthropic et le chemin compatible OpenAI. Les modèles disponibles incluent claude-opus-4-8, claude-opus-5, gpt-5.6-sol et plus encore. Récupérez vos 100 $ →
⚠️ Lien d'affiliation — OmniRoute n'a aucun parrainage ou partenariat avec ce fournisseur.
Vous connaissez un autre fournisseur avec un généreux coupon d'inscription gratuit qui profite aux utilisateurs d'OmniRoute ? Ouvrez une issue et nous l'ajouterons ici.
## 🎯 Combos — Le produit phare
> Un **combo** est une chaîne de modèles entre lesquels OmniRoute achemine les requêtes **automatiquement**. Si le quota est épuisé, qu’un fournisseur tombe en panne ou que les coûts s’envolent, le combo peut passer au modèle sain et éligible suivant. 🛡️
### ⚡ Zéro configuration — utilisez simplement `auto`
Aucun combo à créer. Définissez votre modèle sur `auto` (ou une variante) et OmniRoute crée un combo virtuel à partir de vos fournisseurs connectés, évalués en temps réel :
ID du modèle
Ce qu’il optimise
auto
🎯 Choix équilibré par défaut (LKGP — reste fidèle à votre dernier fournisseur fonctionnel)
auto/coding
🧑💻 Pondérations privilégiant la qualité pour la génération de code
auto/fast
⚡ Latence la plus faible en priorité
auto/cheap
💰 Coût par jeton le plus bas en priorité
auto/offline
🔋 Marge de quota ou de limite de débit la plus élevée en priorité
auto/smart
🔭 Qualité en priorité + 10 % d’exploration pour découvrir de meilleurs modèles
auto/lkgp
📌 Fidélité explicite au dernier fournisseur fonctionnel connu
auto/chaos
🧪 Envoi parallèle à un panel de modèles (un par fournisseur, 5 par défaut), avec retour d’une seule réponse ; un appel en amont par modèle du panel, sans injection de pannes
##
### 🔀 Ou créez le vôtre — 19 stratégies de routage
Les **19** stratégies — à combiner librement à chaque étape du combo :
#
Stratégie
Fonctionnement
1
priority
Liste ordonnée privilégiant la première cible — épuise chacune avant de passer à la suivante 🥇
2
fill-first
Utilise entièrement le quota de chaque cible avant de passer à la suivante
3
weighted
Sélection aléatoire pondérée selon le poids de chaque cible
4
round-robin
Parcourt les cibles à tour de rôle, dans l’ordre
5
p2c
Équilibrage de charge aléatoire selon la méthode du choix entre deux options
6
least-used
Sélectionne la cible dont la charge actuelle est la plus faible
7
random
Sélection aléatoire uniforme (avec déduplication)
8
strict-random
Sélection aléatoire sans dédupliquer les répétitions 🎲
9
cost-optimized
Minimise le coût en $ par requête selon les tarifs du catalogue en temps réel 💸
10
headroom
Sélectionne la cible disposant du quota restant le plus élevé
11
reset-window
Privilégie la cible dont la fenêtre de quota sera réinitialisée le plus tôt
12
reset-aware
Classe les cibles selon l’heure de réinitialisation du quota — fenêtres courtes en priorité 📊
13
context-relay
Transmet le contexte entre les cibles pour les conversations longues 🧠
14
context-optimized
Sélectionne la cible la mieux adaptée à la taille actuelle du contexte
15
cache-optimized
Associe chaque préfixe d’invite réutilisable au même compte — maximise les accès réussis au cache d’invites 🎯
16
lkgp
Dernier chemin fonctionnel connu — reste associé au dernier fournisseur ayant réussi, puis se rabat sur les règles
17
auto
Évaluation en temps réel selon 16 facteurs pour chaque connexion 🤖
18
fusion
Envoie la requête à un panel de modèles, puis un juge synthétise une réponse unique 🧬
19
pipeline
Enchaîne les étapes — la sortie de chaque cible alimente la suivante 🔗
Le moteur Auto-Combo évalue chaque candidat selon **16 facteurs** (état de santé, quota, coût, latence, adéquation à la tâche, qualité, disponibilité de la session…) — consultez [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).
##
### 🧱 La résilience est intégrée (3 couches indépendantes)
📖 [Moteur de combo automatique](docs/routing/AUTO-COMBO.md) · [Guide de résilience](docs/architecture/RESILIENCE_GUIDE.md)
## 🏆 Ce qui distingue OmniRoute
📊 Méthodologie complète et détails par fonctionnalité par rapport à 9router, OpenRouter, CLIProxyAPI & LiteLLM → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)
## 💚 Soutenir OmniRoute
OmniRoute est sous licence MIT et maintenu de manière ouverte. S’il vous fait gagner du temps ou de l’argent, voici comment contribuer à préserver son indépendance — choisissez l’option qui vous convient. Le parrainage n’influence jamais la priorité de routage ; il offre de la visibilité, pas un meilleur classement.
**🇧🇷 PIX** — instantané, sans frais (Brésil)
Clé (aléatoire) : `5d865059-bc44-483a-962d-43ceb80126eb`
Pix à copier-coller :
```
00020101021126580014br.gov.bcb.pix01365d865059-bc44-483a-962d-43ceb80126eb5204000053039865802BR5922OMNIROUTE CONTRIBUICAO6006BRASIL62070503***630475DD
```
₿ Cryptomonnaies — BTC · ETH · USDT-TRC20 · USDC-Solana (cliquez pour développer)
₿ BTC
Bitcoin (SegWit)
bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd
Ξ ETH
Ethereum (ERC20)
0x64Cf6B68A6Ff34288e89172950a2d00102337a84
₮ USDT
Tron (TRC20)
TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2
$ USDC
Solana
2emNNZzVVWQc3FQ2wk9M6qXUQmW8AKdjjL174fXR28Tu
⚠️ Envoyez chaque cryptomonnaie uniquement sur le réseau indiqué — un envoi sur le mauvais réseau peut entraîner la perte des fonds.
🐛 Vous avez trouvé un bug ou avez des commentaires ? Ouvrez une [Discussion](https://github.com/diegosouzapw/OmniRoute/discussions).
Notes pour les développeurs : Le projet peut générer un fichier local .env pendant npm install/postinstall afin de faciliter le travail des développeurs. Ce fichier est volontairement ignoré via .gitignore (voir .gitignore) et ne doit jamais être validé dans le dépôt — s’il l’est accidentellement, renouvelez tous les secrets exposés et supprimez le fichier de l’historique. Consultez docs/DEVELOPER-ENVIRONMENT.md pour obtenir des recommandations sur la gestion des fichiers d’environnement locaux et des secrets.
## 📡 Radar OmniRoute
Le principal chiffre à retenir pour l’offre gratuite reste **~1,62 milliard de tokens/mois**, d’après le catalogue documenté et dédupliqué par pool ci-dessus. Les crédits temporaires accordés lors de l’inscription auprès des fournisseurs peuvent porter séparément le premier mois à **~2,22 milliards**. Radar est une surcouche de catalogue facultative et signée, destinée aux personnes qui souhaitent disposer d’informations plus récentes sur la disponibilité des modèles gratuits entre les versions d’OmniRoute ; le catalogue communautaire et toutes les fonctionnalités gratuites existantes restent gratuits.
Les contributeurs peuvent recevoir le catalogue en temps réel ainsi que des possibilités supplémentaires offertes par les fournisseurs. Son plafond distinct et variable est d’**environ 3 milliards de tokens/mois au maximum**, selon la disponibilité des fournisseurs. Ce plafond n’est pas garanti : les fournisseurs peuvent modifier à tout moment les quotas, les critères d’éligibilité, les modèles ou les régions.
Radar est facultatif et utilise uniquement des requêtes GET. Le client OmniRoute ne transmet ni les prompts, ni le trafic, ni la configuration des fournisseurs, ni les données télémétriques d’utilisation, ni l’état local de masquage des annonces. Pour en savoir plus sur l’éligibilité et consulter le catalogue actuel, rendez-vous sur **[radar.omniroute.online/planos](https://radar.omniroute.online/planos)**.
## ✨ Nouveautés
> Points forts récents de **v3.8.20 → v3.8.50**. Historique complet dans [`CHANGELOG.md`](CHANGELOG.md).
- **🎛️ OmniConductor** — délégation A2A entrante vers votre flotte d’agents, compétences Conductor sur l’Agent Card et panneau de tableau de bord avec conversation vocale en mode push-to-talk via Faro. → [Serveur A2A](docs/frameworks/A2A-SERVER.md)
- **🛂 Admission adaptative et protection contre la surcharge** — les requêtes de chat intensives sont mises en file d’attente au lieu de renvoyer une erreur 503, avec des baux glissants RPM atomiques par connexion. → [Guide de résilience](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Ordonnancement canonique de `/v1/models`** — un bloc contigu regroupé par fournisseur pour chaque fournisseur (combinaisons épinglées en premier), stable pour toutes les sources du catalogue. → [Référence de l’API](docs/reference/API_REFERENCE.md)
- **🗜️ Renforcement de la compression** — protection contre l’inflation activée par défaut, packs Caveman pour DE / FR / JA + chinois (wényán), filtres RTK pour Gradle et .NET. → [Compression](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Coût forfaitaire fidèle à la réalité** — les fournisseurs par abonnement / forfait de codage affichent un coût de **$0** dans les analyses de coûts ; le budget, les quotas et le routage continuent d’effectuer des estimations. → [Référence de l’API](docs/reference/API_REFERENCE.md)
- **⚖️ Routage Quota-Share** — répartit équitablement le quota d’un compte partagé entre les clés regroupées, tout en préservant le travail afin que les parts inutilisées puissent être prêtées. → [Guide de résilience](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 Configuration des CLI/agents en une seule commande** — 13 commandes `setup-*` enregistrées ; `omniroute run` lance 7 CLI (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI) ; `omniroute configure` prend en charge 10 cibles avec un sélecteur interactif de fournisseur et de modèle ainsi que des favoris propres à chaque contexte. → [Intégrations CLI](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Mode distant** — pilotez une instance OmniRoute distante avec des jetons à portée limitée (`connect` / `contexts` / `tokens`) et un assistant OAuth `antigravity` pour les installations sur VPS. → [Mode distant](docs/guides/REMOTE-MODE.md)
- **🧭 Routage automatique plus intelligent** — combinaisons `auto/:`, **Fusion** (panel de modèles + juge), routage tenant compte de la tâche, remplacements par requête du modèle / mode / budget en USD. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🗜️ Compression modulaire** — 12 moteurs composables + Compression Studios : LLMLingua-2, Ultra à deux niveaux, omniglyph, contrôle de fidélité à chaque étape, GCF v3.2, éditeur avec réorganisation par glisser-déposer. → [Compression](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Déchiffrement MITM transparent (TPROXY)** — capture les CLI qui ignorent les variables d’environnement du proxy, avec une autorité de certification par SNI et un programme d’installation pour le magasin de certificats de confiance. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Télémétrie des coûts partout** — en-têtes de coût/d’utilisation `X-OmniRoute-*` sur chaque point de terminaison, en-tête des économies réalisées en cas de succès du cache, quotas de dépenses en USD par clé. → [Référence de l’API](docs/reference/API_REFERENCE.md)
- **🧠 Une mémoire que vous contrôlez** — désactivée par défaut, quantification vectorielle int8 et déclin typé facultatifs, `x-omniroute-no-memory` par requête. → [Mémoire](docs/frameworks/MEMORY.md)
- **🛡️ Sécurité** — protection contre l’injection de prompts sur chaque route LLM (suite de red teaming), garde-fou facultatif de masquage des identifiants (masque les clés API et secrets divulgués dans les deux sens), recherche web gratuite de dernier recours avec DuckDuckGo et contrôle d’accès OIDC facultatif pour le tableau de bord (la connexion par mot de passe reste toujours disponible). → [Garde-fous](docs/security/GUARDRAILS.md)
- **🖼️ Nouveaux points de terminaison** — `/v1/ocr` (Mistral OCR) et `/v1/audio/translations` (de type Whisper) complètent la prise en charge des médias. → [Référence de l’API](docs/reference/API_REFERENCE.md)
- **🎨 Génération d’images / vidéos / audio** — une API unique pour les médias : xAI Grok Imagine et Novita AI pour la vidéo, ComfyUI, Magnific, Adobe Firefly, Segmind, ainsi que des fournisseurs vocaux tels qu’ElevenLabs. → [Référence de l’API](docs/reference/API_REFERENCE.md)
- **🌍 Déploiement et opérations** — `basePath` pour proxy inverse, détection automatique de la langue du navigateur, suivi des appareils par clé, approbation MITM sans accès root, localisation zh-TW. → [Environnement](docs/reference/ENVIRONMENT.md)
- **🤝 Davantage de fournisseurs et d’agents** — agents cloud (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) avec navigateur + connexion OAuth, carte Ollama de premier ordre, Claude Opus 5 et Sonnet 5, partenariat officiel avec Kimi (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… ainsi qu’un **catalogue actualisé de 352 fournisseurs**. → [Fournisseurs](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Transparence du routage** — chaque réponse comporte un en-tête `X-OmniRoute-Decision` indiquant la stratégie, le fournisseur et la latence ayant servi la requête ; une nouvelle stratégie de combinaison `cache-optimized` et le facteur Auto-Combo `cacheAffinity` redirigent les requêtes répétées vers la connexion détenant le préfixe mis en cache ; et un point de terminaison en lecture seule `/v1/auto-combo/{channel}/candidates` expose le pool de candidats actif d’un canal `auto/*`. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Performances locales et infrastructure** — Redis local en un clic, outils de déploiement de relais pour Cloudflare Workers / Deno Deploy, Bifrost et Mux en tant que services intégrés supervisés. → [Services intégrés](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Également inclus** — framework de plugins + marketplace, frameworks de compétences Omni/Agent/GitHub, intégration des coffres Obsidian (22 outils MCP), API Batch et Files compatibles avec OpenAI, cache sémantique des réponses, ludification avec classements, découverte d’agents ACP (15 agents intégrés), export planifié des journaux vers BigQuery, diffusion parallèle multimodèle `auto/chaos`, passerelle de bot Telegram, gestionnaire de versions intégré à l’application et classements LMArena-ELO des fournisseurs gratuits. → [Documentation](docs/README.md)
## 🤖 CLI et agents de codage compatibles
> Une seule configuration — `http://localhost:20128/v1` — et **tous** les IDE ou CLI d’IA fonctionnent avec des modèles gratuits et à faible coût.
+ fonctionne également avec · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · tout outil compatible avec OpenAI
📖 Configuration propre à chacun des 36 outils (26 CLI de code + 10 agents CLI) → [`docs/reference/CLI-TOOLS.md`](docs/reference/CLI-TOOLS.md) · 🧩 Extension OpenCode → [`@omniroute/opencode-provider`](https://www.npmjs.com/package/@omniroute/opencode-provider)
**Lancez n’importe quel CLI pris en charge via OmniRoute avec une seule commande** — aucun fichier de configuration n’est créé,
les identifiants sont injectés pour chaque processus, et Qwen/Gemini disposent d’un répertoire personnel isolé et temporaire :
```bash
omniroute run claude --model openai/gpt-5.4 # Claude Code
omniroute run codex --model glm/glm-5.2 # OpenAI Codex CLI
omniroute run aider --model glm/glm-5.2 -- --message "reply OK"
omniroute run goose --model glm/glm-5.2
omniroute run opencode --model glm/glm-5.2 -- run "reply OK"
omniroute run qwen --model glm/glm-5.2 -- -p "reply OK"
omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "reply OK"
# Ou choisissez interactivement le fournisseur et le modèle, puis écrivez la configuration propre à l’outil :
omniroute configure codex # également : claude opencode qwen aider goose gemini cline continue kilo
```
Chaque commande respecte le contexte distant actif (`omniroute connect `), `--dry-run`
affiche un aperçu exact des variables d’environnement et des arguments sans rien exécuter, et `--api-key-env NAME` évite
que les secrets figurent dans l’historique de votre shell. → [Intégrations CLI](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 372 fournisseurs d'IA — 154 répertoriés comme gratuits
> **372 fournisseurs enregistrés** dans les collections canoniques de chat, de médias, de recherche, d'exécution locale, d'agents cloud et système, dont **154 comportant la métadonnée de découverte `hasFree: true`**. Le registre des modèles de chat couvre **237 fournisseurs / 3 009 paires fournisseur-modèle distinctes / 1 443 identifiants de modèle bruts** ; le catalogue distinct des budgets gratuits contient **491 entrées par modèle**, **35 réserves récurrentes** et **54 fournisseurs gratuits à vie, récurrents ou sans clé**. Ces dénominateurs sont différents par conception ; les définitions et les calculs dédupliqués par réserve figurent dans la [Référence des fournisseurs](docs/reference/PROVIDER_REFERENCE.md) et les [Offres gratuites](docs/reference/FREE_TIERS.md).
### 🏢 Tous les grands laboratoires — via un point de terminaison unique
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…et plus de 330 autres — chaque icône est chargée en direct depuis le catalogue de fournisseurs du tableau de bord. 📖 [Référence des fournisseurs](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Gratuit à vie — 0 $, sans carte
OpenCode Zen DeepSeek V4, Nemotron 3 Aucune limite de jetons
Kilo Code Routage automatique, Tencent Hy3 Gratuit pour toujours
Requesty GPT-OSS 120B, Nemotron Gratuit pour toujours
SiliconFlow DeepSeek V3.2 / R1 Offre gratuite
Z.AI GLM GLM-4.7 / 4.5-Flash Gratuit pour toujours
Baidu ERNIE ERNIE 4.0 Gratuit pour toujours
Qoder AI Qwen3-Max, Kimi-K2 GRATUIT et illimité
Pollinations GPT, Llama, Claude Aucune clé requise
Cloudflare AI Plus de 50 modèles 10 000 neurones/jour
NVIDIA NIM GLM, MiniMax Environ 40 RPM gratuitement
Cerebras GLM 4.7, GPT-OSS Crédit unique de 5 $ ; carte requise
OpenRouter Modèles :free +10 $ → RPM plus élevé
📖 Catalogue complet lisible par machine → [`docs/reference/PROVIDER_REFERENCE.md`](docs/reference/PROVIDER_REFERENCE.md)
## 🖥️ Où fonctionne OmniRoute — partout
> Même application, votre machine, vos règles. D’une installation globale avec npm jusqu’à **votre téléphone** via Termux.
Plateforme
Installation
Points forts
📦 npm (global)
npm install -g omniroute
Une seule commande, sur tous les systèmes d’exploitation
🐳 Docker
docker run … diegosouzapw/omniroute
Multiarchitecture AMD64 + ARM64
🖥️ Bureau (Electron)
npm run electron:build
Fenêtre native + zone de notification — Windows / macOS / Linux
🎩 Barre des menus (OmniRouteTray)
brew install --cask zoispag/tap/omniroute-tray
Supervise et met automatiquement à jour le serveur — macOS
💪 ARM
arm64 natif
Raspberry Pi, serveurs ARM, Apple Silicon
📱 Android (Termux)
pkg install nodejs && npx -y omniroute
Fonctionne sur votre téléphone, 24 h/24 et 7 j/7, sans accès root
📲 PWA
« Ajouter à l’écran d’accueil »
Plein écran, hors ligne, installable depuis le navigateur
🧩 Extension OpenCode
@omniroute/opencode-provider
Intégration native à OpenCode
🤖 VS Code Copilot Chat
installer l’extension OmniCopilot
Tous les modèles OmniRoute dans le sélecteur natif de Copilot Chat — versions stable et Insiders
### 🧩 Nouveau : OmniRoute dans l’interface native de Copilot Chat de VS Code
> Aucune nouvelle barre latérale, aucune nouvelle interface de discussion — chaque modèle fourni par OmniRoute apparaît directement dans le
> **sélecteur de modèles de Copilot Chat que vous utilisez déjà**. Depuis VS Code 1.122, les modèles des fournisseurs fonctionnent
> sans connexion à GitHub ni abonnement Copilot — mode agent, appels d’outils et vision,
> gratuitement.
Installez l’extension **[OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)**, configurez-la
pour utiliser votre serveur OmniRoute (`localhost:20128` par défaut), puis ouvrez Copilot Chat → sélecteur de modèles
→ **Gérer les modèles…** → **OmniRoute**.
Depuis l’éditeur : ouvrez la vue **Extensions**, recherchez **« OmniRoute »**, puis cliquez sur **Installer**
— le fonctionnement est identique dans les deux boutiques. Le code source, les tickets et le guide de publication sont disponibles sur
[diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot).
📖 [Guide de VS Code Copilot Chat](docs/guides/VSCODE-COPILOT.md) — configuration, contenu du sélecteur, tableau de bord dans un onglet, dépannage
### 🎩 Nouveau : OmniRouteTray — votre passerelle, directement dans la barre des menus
> `omniroute serve` donne le meilleur de lui-même lorsqu’il fonctionne en permanence. **[OmniRouteTray](https://github.com/zoispag/omniroute-tray)**
> en fait une application macOS pour la barre des menus que vous configurez une fois pour toutes : elle démarre le serveur, le maintient actif
> après les redémarrages, le met à jour sur place et vous permet de consulter votre budget de jetons en direct en un clic — **sans
> fenêtre de terminal laissée ouverte ni installation `npm install -g omniroute` à surveiller.**
Conçue avec [Tauri v2](https://v2.tauri.app/) (un cœur Rust minuscule), elle embarque
son propre environnement d’exécution Node 24 signé et gère une installation d’OmniRoute propre à l’application, afin de ne jamais entrer en conflit avec vos installations
globales de `node`/`bun`. Elle **partage votre configuration et votre base de données `~/.omniroute/` existantes** — c’est donc le
même OmniRoute que vous utilisez déjà, simplement coiffé d’un chapeau. 🎩
Fonctionnalité
Fonctionnement
🟢 Supervise le serveur
Lance omniroute serve et adopte une instance déjà en cours d’exécution au lieu de la dupliquer
📊 Utilisation en direct d’un seul coup d’œil
Barres de quota des fournisseurs, limites de session/hebdomadaires de Claude avec comptes à rebours avant réinitialisation, ventilation des coûts sur 30 jours
🔄 Mises à jour automatiques sur place
Installation intermédiaire, remplacement atomique, retour en arrière en cas d’échec — toujours sur la version la plus récente
🚀 Démarrage à l’ouverture de session
Lancement facultatif à l’ouverture de session ; uniquement dans la barre des menus, sans icône dans le Dock
🩺 Diagnostic et journaux
Diagnostic en un clic et accès aux journaux du serveur
```sh
brew install --cask zoispag/tap/omniroute-tray
```
Vous préférez un téléchargement ? Récupérez le dernier fichier .dmg depuis les
versions publiées. Le code source, les tickets et la documentation de
compilation sont disponibles sur zoispag/omniroute-tray.
💛 Un projet communautaire par @zoispag — il ne s’agit pas d’une version officielle d’OmniRoute.
> Au-delà du serveur, OmniRoute est un **véritable poste de pilotage en ligne de commande** proposant **plus de 80 commandes**, ainsi que des protocoles ouverts pour agents afin qu’un agent d’IA puisse le piloter **de manière autonome**.
### ⌨️ Une véritable CLI (pas seulement `start`)
```bash
omniroute # lancer la passerelle et le tableau de bord (port 20128)
omniroute chat # client de chat TUI interactif (commandes obliques : /model /combo /skill /memory)
omniroute setup # assistant guidé de première configuration
omniroute doctor # diagnostiquer les fournisseurs, les ports et les dépendances natives
```
### 🛰️ Mode distant — exécutez la CLI ici et OmniRoute sur un VPS
OmniRoute est installé sur un serveur ? Pilotez-le depuis votre ordinateur portable avec la **même CLI**. Connectez-vous une seule fois
avec un jeton d’accès à portée limitée ; chaque commande ciblera ensuite le serveur distant.
```bash
omniroute connect 192.168.0.15 # mot de passe → jeton à portée limitée, enregistré comme contexte
omniroute models list # ← s’exécute sur le serveur DISTANT
omniroute configure codex # ← sélectionne un modèle distant et écrit un profil Codex local
omniroute tokens create --name ci --scope read # créer des jetons à portée plus restreinte pour d’autres machines
omniroute contexts use default # ← revenir au serveur local
```
Les jetons disposent des portées `read` / `write` / `admin` ; les routes qui lancent des processus restent limitées à l’interface de bouclage.
📖 [Mode distant](docs/guides/REMOTE-MODE.md)
### 🤝 Connectez un agent — et laissez-le contrôler OmniRoute lui-même
Exposez OmniRoute via **MCP**, **A2A**, une **API REST**, des **webhooks** ou une **CLI distante** — tout agent compatible (ou votre propre code) obtient les clés de l’ensemble de la passerelle : routage, fournisseurs, combinaisons, cache, compression, mémoire — de manière autonome. Les points de terminaison HTTP ci-dessous sont servis sous `http://localhost:20128`.
Interface
Point de terminaison / commande
Utilisation
🧰 MCP (stdio)
omniroute --mcp
Intégration à Claude Desktop, Cursor ou tout client MCP
D’agent à agent, JSON-RPC 2.0 + SSE, 6 compétences
🌐 API REST
/v1/*
Compatible avec OpenAI — chat, embeddings, images, audio, OCR
🔔 Webhooks
/api/webhooks
Envoyer les événements de requête et de quota à Slack, Discord, Telegram ou toute URL
🛰️ CLI distante
omniroute connect
Piloter une instance distante avec des jetons d’accès à portée limitée
```bash
# Fournir à Claude Code l’ensemble complet des outils OmniRoute via MCP :
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
```
📖 [Serveur MCP](docs/frameworks/MCP-SERVER.md) · [Serveur A2A](docs/frameworks/A2A-SERVER.md) · [Protocoles pour agents](docs/frameworks/AGENT_PROTOCOLS_GUIDE.md)
## 🗜️ Économisez automatiquement 15 à 95 % de tokens
### 📖 Fonctionnement — pipeline, architecture et calcul des économies
La combinaison empilée par défaut exécute `RTK → Caveman`. Lorsque les deux agissent sur la même charge utile d’outil ou de contexte, les économies se cumulent :
```txt
combined = 1 − (1 − RTK) × (1 − Caveman_input)
average = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
range = 78.4 – 94.6%
```
Les blocs de code, les URLs, le JSON et les données structurées sont **toujours protégés** par le moteur de préservation.
> **Pourquoi utiliser beaucoup de tokens quand quelques-uns suffisent ?** Chaque requête passe par le pipeline de compression d’OmniRoute **de manière transparente** — aucune modification côté client. Il s’agit désormais d’une **pile de 12 moteurs composables** qui s’exécutent dans l’ordre et peuvent être combinés selon chaque configuration de routage — en s’appuyant sur les idées de [RTK](https://github.com/rtk-ai/rtk), [Caveman](https://github.com/JuliusBrussee/caveman) (⭐ 90K+), [LLMLingua-2](https://github.com/microsoft/LLMLingua) et [Troglodita](https://github.com/leninejunior/troglodita) (PT-BR).
### 🧱 La pile de 12 moteurs
Les moteurs s’exécutent dans l’ordre du pipeline ; chacun peut être activé ou désactivé et configuré indépendamment pour chaque combinaison :
#
Moteur
Fonctionnement
1
Session-Dedup
Supprime le contenu répété au fil des échanges (adressé par contenu, inter-échanges)
2
CCR
Archive les blocs volumineux derrière des marqueurs de récupération, puis les récupère à la demande
3
Lite
Réduction des espaces et des URLs d’images (base de référence à faible latence)
4
RTK
Filtrage intelligent, déduplication et troncature des résultats d’outils (avec prise en compte des commandes)
5
Responses Tool Output
JSON sans perte en priorité et compression diagnostique limitée pour les sorties de shell, de correctifs, de recherches et de builds (Responses API)
6
Headroom
Compactage tabulaire sans perte des tableaux JSON (~30 %) via un codec GCF intégré
7
Relevance
Évaluation extractive des phrases par rapport à la dernière requête de l’utilisateur
8
Caveman
Compression de texte fondée sur des règles (~65–75 % sur la sortie)
9
Aggressive
Résumé et vieillissement progressif des anciens échanges
10
LLMLingua-2
Élagage sémantique par ML via MobileBERT ONNX — compatible avec le code, asynchrone
11
Ultra
Élagage heuristique des tokens avec un niveau optionnel reposant sur un petit modèle (SLM)
12
OmniGlyph
Encodage expérimental du contexte sous forme d’image pour le modèle Claude Fable 5 évalué via une connexion directe à Anthropic ; les transformeurs GPT 5.6 restent bloqués par défaut dans l’attente des justificatifs du fournisseur. Quatre profils de compression (agressif par défaut, équilibré, compatible avec le code, sans transformation) (le plus agressif ; activation explicite requise)
Les blocs de code, les URLs et les données structurées sont **toujours préservés** à l’octet près. Des **préréglages en un clic** combinent les moteurs :
Mode
Économies
Idéal pour
🪶 Lite
~15%
Option sûre par défaut, toujours active
🪨 Standard (Caveman)
~30%
Développement quotidien
⚡ Aggressive
~50%
Longues sessions utilisant beaucoup d’outils
🔥 Ultra
~75%
Économies maximales
🧰 RTK
60–90%
Sorties de shell, de tests, de builds et de git
🔗 Empilé (RTK → Caveman)
78–95%
Prompts mixtes et journaux d’outils
**Exemple réel — mode Standard :**
> **Avant (69 tokens) :** _« Votre composant React s’affiche probablement de nouveau parce que vous créez une nouvelle référence d’objet à chaque cycle de rendu. Lorsque vous transmettez un objet inline comme prop, la comparaison superficielle de React le considère à chaque fois comme un objet différent, ce qui déclenche un nouveau rendu. Je vous recommande d’utiliser useMemo pour mémoriser l’objet. »_
>
> **Après (19 tokens) :** _« Nouvelle réf. d’objet à chaque rendu. Objet inline en prop = nouvelle réf. = nouveau rendu. Encapsulez-le dans useMemo. »_
>
> **Même réponse. 72 % de tokens en moins. Aucune perte de précision.** ✅
**Exemple PT-BR — mode [Troglodita](https://github.com/leninejunior/troglodita) :**
> **Avant (42 tokens) :** _« Le problème est que le composant effectue un nouveau rendu parce qu’une nouvelle référence d’objet est créée à chaque cycle de rendu. Je recommanderais d’utiliser useMemo. »_
>
> **Après (12 tokens) :** _« Nouveau rendu : nouvelle réf. à chaque cycle (objet inline recréé). Utiliser `useMemo`. »_
>
> **Même réponse. Environ 70 % de tokens en moins. Précision technique intacte.** ✅
### 🎚️ Au-delà des moteurs — styles de sortie, réglage adaptatif et contrôle par requête
Les 12 moteurs ci-dessus réduisent ce qui **entre**. Trois couches supplémentaires déterminent **comment**, **quand** et ce qui **sort** :
- **🪄 Styles de sortie** _(pilotage de l’axe de sortie)_ — injectent des instructions déterministes et compatibles avec le cache pour façonner les réponses ; combinables, chacune avec une intensité `lite` / `full` / `ultra`. Ajouter un style nécessite une seule ligne dans le registre :
- **Prose concise** — supprime le remplissage, les articles et les formulations prudentes ; préserve exactement le contenu technique.
- **Moins de code** — approche YAGNI du « développeur senior paresseux » : modification fonctionnelle minimale, sans structure non demandée.
- **Queue-de-cheval (développeur senior paresseux)** — gravit l’échelle YAGNI, corrige la cause racine, produit le plus petit diff fonctionnel.
- **J’ai un TDAH (action d’abord)** — commence par l’action suivante, numérote les étapes, indique une seule prochaine étape concrète, sans préambule.
- **CJK concis (文言)** — style ultra-concis en chinois classique (limité aux paramètres régionaux `zh`).
- **🎯 Budget de contexte adaptatif** _(le réglage)_ — au lieu d’un seuil de tokens binaire, active progressivement les moteurs les moins coûteux et les plus fidèles, uniquement dans la mesure nécessaire pour **tenir dans la fenêtre de contexte du modèle**. Politique : `reserve-output` (par défaut, adaptée au modèle) · `percentage` · `absolute`. Mode : `floor` (garantit que le contenu tient) · `replace-autotrigger` (votre choix explicite l’emporte) · `off` (seuil historique).
- **🎛️ Où la compression est décidée** _(priorité, de la plus élevée à la plus faible)_ — en-tête `x-omniroute-compression` par requête › remplacement de la combinaison de routage › profil nommé actif › adaptatif / déclenchement automatique › valeur par défaut du panneau › désactivé. Le plan appliqué est renvoyé dans l’en-tête de réponse `X-OmniRoute-Compression: ; source=`.
Déclenchez automatiquement la compression selon un seuil de tokens, activez le réglage adaptatif, épinglez un profil nommé, définissez une configuration ponctuelle par requête ou attribuez un pipeline à chaque combinaison de routage — selon ce qui convient à la charge de travail. Un **harness d’évaluation** hors ligne et optionnel (`npm run eval:compression`) mesure la fidélité par rapport aux économies sur un corpus figé avant la mise en production d’une modification.
📖 [`COMPRESSION_GUIDE.md`](docs/compression/COMPRESSION_GUIDE.md) · [`RTK_COMPRESSION.md`](docs/compression/RTK_COMPRESSION.md) · [`COMPRESSION_ENGINES.md`](docs/compression/COMPRESSION_ENGINES.md)
# ⚡ Démarrage rapide
**1) Installer et exécuter**
```bash
npm install -g omniroute
omniroute
```
> 💡 Vous voyez `npm warn ERESOLVE` ou des avertissements de dépendances homologues ? [Ils sont sans conséquence](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **Vous utilisez npm 11 ou une version ultérieure ?** npm peut bloquer les scripts de cycle de vie des paquets s’ils ne sont pas autorisés. Le script `postinstall` d’OmniRoute (`node scripts/build/postinstall.mjs`) est nécessaire pour préparer ses fichiers d’exécution natifs. Lors d’une installation globale, autorisez les paquets indiqués dans l’avertissement de npm. Pour l’ensemble de paquets signalé par OmniRoute 3.8.51 :
>
> ```bash
> npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
> ```
>
> Pour réutiliser cette liste d’autorisation lors des prochaines installations globales, configurez-la une fois, puis procédez normalement à l’installation :
>
> ```bash
> npm config set allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild --location=user
> npm install -g omniroute
> ```
>
> La liste des dépendances peut changer d’une version à l’autre ; si npm indique une liste différente, utilisez les noms de paquets figurant dans cet avertissement. Autoriser un paquet permet l’exécution de ses scripts d’installation.
> **Vous utilisez Gemini Web ou un autre fournisseur reposant sur des cookies web ?** Le paquet npm inclut
> Playwright, mais pas son binaire Chromium. Consultez la note sur la
> [configuration de Chromium pour Playwright](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium)
> avant d’effectuer la première requête auprès du fournisseur web.
Tableau de bord à l’adresse `http://localhost:20128` · API à l’adresse `http://localhost:20128/v1`.
**2) Connecter un fournisseur admissible avec votre propre compte**
Tableau de bord → **Fournisseurs** → choisissez un fournisseur dont les conditions et le quota actuels correspondent à votre cas d’usage → ajoutez sa clé API ou suivez son processus de connexion au compte. Les offres gratuites peuvent nécessiter une inscription, une approbation ou un moyen de paiement. Consultez le [guide des offres gratuites](docs/getting-started/FREE-TIERS-GUIDE.md) ; la disponibilité sans clé n’est pas garantie et les fournisseurs marqués `tos: avoid` sont exclus de `auto` par défaut.
**3) Configurer votre outil de programmation**
```txt
URL de base : http://localhost:20128/v1
Clé API : [copier depuis Tableau de bord → Points de terminaison]
Modèle : auto (route parmi les connexions admissibles — ou choisissez un fournisseur/modèle)
```
**4) Vérifier le fonctionnement**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Vous devriez voir la liste de vos modèles connectés. 🎉 C’est tout — commencez à programmer, et OmniRoute assurera automatiquement le routage et le repli pour vous.
Si votre client ne peut pas envoyer d’en-têtes personnalisés, OmniRoute fournit également des alias de compatibilité avec jeton :
```txt
Catalogue OpenAI : http://localhost:20128/vscode/YOUR_KEY/
Modèles OpenAI : http://localhost:20128/vscode/YOUR_KEY/models
Chat OpenAI : http://localhost:20128/vscode/YOUR_KEY/chat/completions
Réponses OpenAI : http://localhost:20128/vscode/YOUR_KEY/responses
Chat Ollama : http://localhost:20128/vscode/YOUR_KEY/api/chat
Étiquettes Ollama : http://localhost:20128/vscode/YOUR_KEY/api/tags
```
Utilisez-les uniquement pour les clients qui ne peuvent pas joindre `Authorization: Bearer ...`. L’authentification par en-tête reste le mode privilégié.
## 📦 Autres méthodes d’installation — Docker, code source, pnpm, Arch
**🐳 Docker**
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
`:latest` suit la version SemVer stable **publiée** la plus élevée. Elle ne suit pas la branche git `main`. Épinglez `:X.Y.Z` pour GitOps. Consultez [Canaux de publication Docker](docs/guides/DOCKER_GUIDE.md#release-channels). L’image définit **`OMNIROUTE_MEMORY_MB=1024`**. Cela suffit pour le tableau de bord et une conversation légère. Les **agents de programmation** (`POST /v1/responses` depuis Claude Code, Codex, Grok, …) nécessitent un tas V8 bien plus important, sans quoi le processus déclenche une `FATAL ERROR` à environ 12 Gio avec deux longs contextes qui se chevauchent. Dimensionnez le conteneur au-dessus de la taille du tas (les tampons natifs se trouvent en dehors de V8) :
| Charge de travail | Tas (`-e OMNIROUTE_MEMORY_MB`) | Conteneur (`--memory`) |
| ------------------------------------- | ------------------------------------- | ---------------------- |
| Tableau de bord / conversation légère | `1024` (valeur par défaut de l’image) | ≥2 g |
| Un agent de programmation | `8192` | ≥10 g |
| Deux longs `/v1/responses` simultanés | `10240`–`12288` | ≥12–16 g |
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-e OMNIROUTE_MEMORY_MB=8192 --memory=10g \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
Tableau complet : [Guide Docker — RAM d’exécution](docs/guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents).
> **Canal Docker de préversion :** `diegosouzapw/omniroute:next` et
> `diegosouzapw/omniroute:next-web` suivent la branche `release/v*` actuellement
> définie par défaut. Ces balises modifiables sont uniquement destinées à tester des correctifs
> non publiés et ne sont **pas prises en charge en production**. Consultez
> [Canaux de publication Docker](docs/guides/DOCKER_GUIDE.md#release-channels).
**🥟 Bun**
L’installation standard avec `bun install` et l’installation globale (`bun install -g omniroute`) sont prises en charge grâce à la détection de l’environnement d’exécution Bun :
- **`bun:sqlite` intégré** : OmniRoute utilise le pilote `bun:sqlite` intégré à Bun lors de son exécution sous Bun, avec repli sur `better-sqlite3` sous Node.js ou sur `sql.js`.
- **Sélection automatique de Webpack pour le regroupement en développement** : le mode développement (`bun run dev`) détecte automatiquement Bun et désactive Turbopack au profit de Webpack afin d’éviter les incompatibilités avec les liaisons V8 natives. Les compilations de production (`bun run build`) respectent précisément `OMNIROUTE_USE_TURBOPACK`, comme sous Node : Turbopack par défaut, ou `OMNIROUTE_USE_TURBOPACK=0` pour compiler avec Webpack (`Dockerfile.bun` l’expose en tant que `--build-arg`).
- **Dockerfile dédié à Bun** : `Dockerfile.bun` multiétape pour les déploiements natifs de Bun en production (`docker build -f Dockerfile.bun -t omniroute:bun .`).
```bash
# Installer et exécuter avec Bun
bun install
bun run dev
```
**🛠️ Depuis le code source**
```bash
cp .env.example .env && npm install
PORT=20128 npm run dev
```
**📦 pnpm**
```bash
pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core && omniroute
```
**🐧 Arch Linux (AUR)**
```bash
yay -S omniroute-bin && systemctl --user enable --now omniroute.service
```
**🔧 Nix (Flake)**
```bash
# Avec les flakes Nix
nix develop
npm run dev
# Ou avec devbox
devbox run npm run dev
```
📖 [Guide Docker](docs/guides/DOCKER_GUIDE.md) — Profils Compose, HTTPS avec Caddy, tunnels Cloudflare.
**🦭 Podman**
```bash
# 1. Préparer le répertoire de données monté par liaison
mkdir -p data
# 2. Uniquement sous Linux avec Podman local sans privilèges root (jamais avec un client Podman Machine distant) :
podman unshare chown 1000:1000 ./data
# 3. Définir l’indication d’environnement d’exécution, créer l’image Compose locale et démarrer
echo "CONTAINER_HOST=podman" >> .env
podman compose --profile base up -d --build
```
Sous macOS ou Windows, Podman utilise une Podman Machine distante : ignorez `podman unshare` et
suivez les [instructions relatives au répertoire de données propres à la topologie](contrib/podman/README.md#data-directory-permissions-by-topology).
📖 [Guide Podman](contrib/podman/README.md) — Compilations Compose, Podman Machine et
configuration de Quadlet avec Linux/systemd.
**⚡ Installation plus rapide / légère (sans compilation native)**
Le moteur SQLite natif (`better-sqlite3`) est une dépendance **facultative** ; une installation
globale n’est donc jamais bloquée par une compilation depuis le code source : elle utilise un binaire précompilé lorsqu’il en existe un
pour votre plateforme/Node et, dans le cas contraire, se replie de façon transparente sur un moteur JavaScript pur
(`node:sqlite` sous Node 22+, sinon le moteur WASM `sql.js` inclus) — aucun outil de compilation n’est requis.
Pour ignorer entièrement la préparation native après l’installation (CI, environnement sans interface graphique ou machines lentes) :
```bash
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute # CI=1 l’ignore également
```
Pour des installations plus rapides, privilégiez **pnpm** (stockage adressé par contenu + liens physiques — voir ci-dessus).
Pour un environnement d’exécution sans tableau de bord et sans interface graphique, utilisez le profil Docker `base` (ci-dessus) ou le
[guide Termux](docs/guides/TERMUX_GUIDE.md). La CLI et le tableau de bord web sont servis par le
même processus sur un seul port ; il n’existe donc actuellement aucun paquet distinct exclusivement destiné à la CLI.
Disjoncteur, temporisation exponentielle, protection contre les accès simultanés massifs, auto-réparation des combinaisons automatiques
Journalisation
pino — journaux JSON structurés avec contexte de requête
Tests
Exécuteur de tests Node.js + Vitest — plus de 39 000 déclarations de tests statiques réparties dans plus de 5 100 fichiers de test suivis (unitaires, intégration, E2E, sécurité, écosystème)
Plateformes
Ordinateur de bureau (Electron) · Android (Termux) · PWA (tout navigateur)
CI/CD
GitHub Actions — publication automatique sur npm + Docker Hub lors des versions
Stratégie de couverture des tests pour plus de 39 000 déclarations de tests statiques réparties dans plus de 5 100 fichiers de test suivis
# ⭐ Principaux contributeurs
> OmniRoute est façonné par une communauté open source passionnée. Ces personnes ont apporté des contributions exceptionnelles qui ont une incidence directe sur la qualité, la stabilité et la portée du projet. **Merci.**
### Contributeurs externes par demandes de tirage fusionnées
Statistiques figées à la pointe active de release/v3.8.50, au commit dafb4ae808, avec les fusions effectuées jusqu’au 2026-08-24 à 05:26:03 UTC. Le recensement paginé via l’API GraphQL de GitHub contient 5 911 PR fusionnées : 2 707 par le propriétaire du dépôt, 179 par Dependabot et 3 025 PR externes provenant de 535 contributeurs distincts. Les « lignes modifiées » correspondent aux ajouts et suppressions comptabilisés par GitHub et incluent les fichiers générés, les fichiers de verrouillage, les catalogues, les traductions et la documentation ; elles représentent le volume de modifications, et non les lignes de code rédigées. Les ex æquo au seuil de classement sont conservés.
### Commits attribués par GitHub
Bob.Hou 🏅 51 commits attribués par GitHub · ex æquo à la 10e place
Xiangzhe 🏅 51 commits attribués par GitHub · ex æquo à la 10e place
Revérifié le 2026-08-24 à 06:14:31 UTC : commits attribués par GitHub et signalés par l’API Contributors du dépôt pour la branche par défaut release/v3.8.50. L’API a renvoyé 525 identités (415 utilisateurs, 2 bots et 108 anonymes) ; ce tableau exclut le responsable de la maintenance, les bots et les identités anonymes, et conserve les ex æquo. Il est distinct à la fois du classement des PR fusionnées ci-dessus et du recensement de 639 personnes fondé sur les métadonnées Git ci-dessous.
> 🙏 Les fonctionnalités, les corrections de bogues et les améliorations de l’infrastructure apportées par ces contributeurs constituent une **composante essentielle** de ce qui rend OmniRoute fiable et riche en fonctionnalités. Chaque pull request, chaque cas de test et chaque fichier de traduction i18n compte. L’open source est construit par des personnes comme elles.
---
## 💖 Sponsors
Un grand merci aux personnes qui financent OmniRoute de leur propre poche — chaque contribution permet au projet de rester gratuit, indépendant et dynamique.
… et d’autres personnes qui préfèrent rester anonymes 💛Les sponsors GitHub publics ont été revérifiés le 2026-08-24. Le statut activeOnly de GitHub détermine les libellés d’activité ci-dessus ; les contributeurs ponctuels publics précédemment déclarés restent remerciés, tandis que les sponsors privés restent anonymes.💖 Devenir sponsor → — chaque dollar permet à OmniRoute de rester gratuit et indépendant.
## 👥 Plus de 600 contributeurs
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Audit réalisé le 2026-08-24 à partir de la base figée ac02c5b42f, puis revérifié à la pointe active de release/v3.8.50, dafb4ae808 : 639 identités Git humaines normalisées — 407 apparaissent comme auteurs de commits (y compris le mainteneur) et 232 uniquement dans des lignes explicites Co-authored-by. Le recensement normalise les identifiants GitHub noreply, exclut 26 identités de bots, d’agents, de services ou d’espaces réservés, et ne fusionne pas les adresses e-mail ordinaires au seul motif que leurs noms d’affichage correspondent.
### Comment contribuer
1. Forkez le dépôt
2. Créez votre branche à partir de la pointe **active** de `release/vX.Y.Z` (et non de `main`) — consultez le [modèle de branches et de versions](docs/ops/BRANCHING_MODEL.md)
3. Créez votre branche de fonctionnalité (`git checkout -b feat/amazing-feature`)
4. Commitez vos modifications (`git commit -m 'feat: add amazing feature'`)
5. Poussez vers la branche (`git push origin feat/amazing-feature`)
6. Ouvrez une Pull Request avec **base = cette branche `release/vX.Y.Z`**
Consultez [CONTRIBUTING.md](CONTRIBUTING.md) pour obtenir des directives détaillées.
### Publier une nouvelle version
```bash
# Créer une version — npm publish s’exécute automatiquement
VERSION=x.y.z
gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes
```
## 📊 Étoiles
## 🌍 StarMapper
## 🙏 Remerciements
OmniRoute repose sur les épaules de géants. Le projet a commencé comme un fork de **[9router](https://github.com/decolua/9router)** et un portage TypeScript du projet Go **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — puis, à partir de là, chacun des sous-systèmes ci-dessous s’est inspiré d’un projet open source qui l’avait précédé. Chacun d’entre eux a façonné une partie concrète d’OmniRoute. Nous tenons à tous les remercier. 🙏
> ⭐ nombre d’étoiles vérifié à partir de l’API REST de GitHub le 24 août 2026 — allez attribuer une étoile à ces projets. Ces nombres constituent un instantané exact à cette date et évolueront naturellement.
### 🧬 Filiation et passerelle
La passerelle d’IA dont le jeu de données public sur les tarifs alimente notre synchronisation du suivi des coûts et dont le modèle de normalisation des fournisseurs a guidé notre routage.
Code source sous licence MIT adapté dans la passerelle intégrée ChatGPT Web → Codex Responses, notamment les adaptateurs de session de navigateur, de structuration des réponses, d’utilisation et de recherche sur le Web.
Modèles portés dans la récupération des flux, les alias sans raisonnement, la recherche Web de secours, les limites par fenêtre glissante, la caviardisation des journaux et les flux renforcés du lanceur.
Valeurs par défaut de transformation compatibles avec Claude Code et comportement des en-têtes de facturation généralisés dans la passerelle d’OmniRoute pilotée par la configuration.
Ses correspondances de modèles Grok, son générateur Statsig simulant une TypeError, ses valeurs par défaut pour les requêtes et les appareils, ainsi que son processeur de réponses NDJSON ont été adaptés de manière substantielle dans l’exécuteur Grok Web d’OmniRoute.
La principale source de code transitive à l’origine de grok2api-merged ; ses implémentations des modèles, des en-têtes, des charges utiles, de Statsig et du processeur sont préservées dans la lignée de Grok Web.
La source sous-jacente sous licence MIT pour les valeurs par défaut des charges utiles et des appareils de Grok, le générateur Statsig et le processeur result.response repris par l’intermédiaire de TQZHR et de grok2api-merged.
Une source transitive créditée par grok2api-merged pour sa couche de pool de proxys ; OmniRoute conserve cette mention de filiation, mais ne revendique pas le portage d’un pool de proxys dans son exécuteur Grok Web délimité.
L’implémentation Grok Web d’origine a pris en compte sa conception du service en amont HTTP/navigateur ; son chemin HTTP direct dérive de GrokProxy, aucun portage de code indépendant n’est donc revendiqué.
Le projet viral « pourquoi utiliser beaucoup jetons quand peu jetons faire affaire » — sa philosophie de langage d’homme des cavernes alimente notre mode de compression standard et plus de 30 règles de suppression des mots de remplissage et de condensation.
Compression haute performance des sorties de commandes — a inspiré notre moteur RTK, notre DSL de filtrage JSON, la récupération de la sortie brute et le pipeline en cascade RTK → Caveman.
Recherche sur la compression des invites (LLMLingua / LLMLingua-2) — a inspiré notre moteur llmlingua asynchrone, compatible avec le code et conçu pour rester opérationnel en cas d’échec.
Compression de jetons en portugais brésilien — alimente notre pack linguistique pt-BR : réduction des pléonasmes et suppression des mots de remplissage adaptées à la grammaire du portugais brésilien.
La compétence virale de « développeur senior paresseux » adepte de YAGNI — a inspiré notre style de sortie less-code : privilégier la plus petite modification fonctionnelle afin de réduire le code _généré_ (l’équivalent, côté sortie, de la prose concise de Caveman).
Son format de graphe compact et sa conception fondée sur un profil générique ont influencé le compactage tabulaire d’OmniRoute et le format du codec Headroom.
Compression de sortie tenant compte du contenu, adaptée à chaque type de fichier et avec abandon en cas d’échec — a validé notre répartition par type et notre mécanisme d’omission en cas de gain insuffisant.
JSON en colonnes sous Rust, récupération adressée par le contenu et déduplication entre messages — a validé la conception de nos moteurs headroom/ccr/session-dedup ainsi que l’invariant de stabilité du cache selon lequel « la forme compressée est indépendante de la position ».
Classement de cartes de dépôt dans le style d’Aider — a influencé notre exploration de la cartographie des dépôts et du classement pour la récupération.
Boîte à outils pour l’API du compilateur TypeScript — a inspiré notre suppression des commentaires fondée sur un analyseur syntaxique, qui préserve les littéraux de chaîne, de modèle et d’expression régulière.
L'interception et l'analyse MITM du trafic entre assistants de programmation et LLM ont contribué à définir les premières exigences de l'Inspecteur de trafic. Quatre modules précédemment dérivés — fusion SSE, normalisation des conversations, masquage des secrets et assainissement des en-têtes — ont été remplacés par des implémentations indépendantes en salle blanche, fondées sur des normes de protocole publiques. Les deux surfaces de transmission directe vers l'hôte (passthrough.ts et _internal/bypass.cjs) restent des implémentations internes à OmniRoute, classées indépendamment ; elles n'ont pas été réécrites dans le cadre de ce remplacement.
Routage transparent du proxy par processus — a inspiré notre arrêt MITM résistant aux plantages, les délais d'inactivité des sockets, l'attribution des processus via /proc et la capture TPROXY.
### 📚 Données des modèles, observabilité et interface utilisateur
Base de données ouverte regroupant les spécifications, les tarifs et les capacités des modèles d'IA — synchronisée nativement avec notre catalogue de modèles.
Observabilité du maillage de services Istio — a inspiré nos badges de coupe-circuit et la représentation visuelle des arêtes en erreur dans le Studio de routage/combinaisons.
Une liste soigneusement sélectionnée de bibliothèques sécurisées par défaut qui guide nos choix en matière de sécurité (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink).
A inspiré la déduplication des requêtes, le repli d'urgence sans coût, les stratégies Auto-Combo enfichables et la classification multilingue des intentions.
Ses mécanismes de remappage des modèles tenant compte des comptes, de validation des chemins d'exécutables et de gestion des libellés de forfait ont influencé l'environnement d'exécution Antigravity d'OmniRoute.
Son format compact de compte à rebours avant la réinitialisation des quotas a inspiré l'affichage correspondant des limites des fournisseurs dans OmniRoute.
A permis d'identifier l'interface de quota de Grok Build ; OmniRoute a ensuite vérifié et corrigé indépendamment le format réellement utilisé sur le réseau.
## 📄 Licence
Licence MIT — consultez le fichier [LICENSE](LICENSE) pour plus de détails.
---
**[⬆ Retour en haut](#-omniroute)** · Conçu avec ❤️ pour la communauté de l’IA open source.
OmniRoute v3.8.52 · Node ≥22.22.2 · Licence MIT · omniroute.online