mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
OmniRoute is an intelligent API gateway that unifies 20+ AI providers behind a single OpenAI-compatible endpoint. Features include intelligent routing with 6 strategies, multi-format translation (OpenAI/Claude/Gemini/Responses API), circuit breakers, semantic caching, combo fallback chains, real-time health monitoring, and a full dashboard with provider management, analytics, and CLI tool integration. Key highlights: - 20+ providers (Claude Code, Codex, Gemini CLI, GitHub Copilot, iFlow, Qwen, Kiro, etc.) - 6 routing strategies (Fill First, Round Robin, P2C, Random, Least Used, Cost Optimized) - Export/Import database backup with full archive support - Translator Playground with 4 modes (Playground, Chat Tester, Test Bench, Live Monitor) - 100% TypeScript across src/ and open-sse/ - Docker support with multi-stage builds - Comprehensive documentation and 9 dashboard screenshots
996 lines
36 KiB
Markdown
996 lines
36 KiB
Markdown
<div align="center">
|
||
<img src="./images/omniroute.png" alt="OmniRoute Dashboard" width="800"/>
|
||
|
||
# 🚀 OmniRoute — La Passerelle IA Gratuite
|
||
|
||
### N'arrêtez jamais de coder. Routage intelligent vers des **modèles IA GRATUITS et économiques** avec fallback automatique.
|
||
|
||
_Votre proxy API universel — un endpoint, 36+ fournisseurs, zéro temps d'arrêt._
|
||
|
||
**Chat Completions • Embeddings • Génération d'images • Audio • Reranking • 100% TypeScript**
|
||
|
||
---
|
||
|
||
### 🤖 Fournisseur IA gratuit pour vos agents de programmation préférés
|
||
|
||
_Connectez n'importe quel IDE ou outil CLI alimenté par l'IA via OmniRoute — passerelle API gratuite pour un codage illimité._
|
||
|
||
<table>
|
||
<tr>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/cline/cline">
|
||
<img src="./public/providers/openclaw.png" alt="OpenClaw" width="48"/><br/>
|
||
<b>OpenClaw</b>
|
||
</a><br/>
|
||
<sub>⭐ 205K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/HKUDS/nanobot">
|
||
<img src="./public/providers/nanobot.png" alt="NanoBot" width="48"/><br/>
|
||
<b>NanoBot</b>
|
||
</a><br/>
|
||
<sub>⭐ 20.9K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/sipeed/picoclaw">
|
||
<img src="./public/providers/picoclaw.jpg" alt="PicoClaw" width="48"/><br/>
|
||
<b>PicoClaw</b>
|
||
</a><br/>
|
||
<sub>⭐ 14.6K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/zeroclaw-labs/zeroclaw">
|
||
<img src="./public/providers/zeroclaw.png" alt="ZeroClaw" width="48"/><br/>
|
||
<b>ZeroClaw</b>
|
||
</a><br/>
|
||
<sub>⭐ 9.9K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/nearai/ironclaw">
|
||
<img src="./public/providers/ironclaw.png" alt="IronClaw" width="48"/><br/>
|
||
<b>IronClaw</b>
|
||
</a><br/>
|
||
<sub>⭐ 2.1K</sub>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/anomalyco/opencode">
|
||
<img src="./public/providers/opencode.svg" alt="OpenCode" width="48"/><br/>
|
||
<b>OpenCode</b>
|
||
</a><br/>
|
||
<sub>⭐ 106K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/openai/codex">
|
||
<img src="./public/providers/codex.png" alt="Codex CLI" width="48"/><br/>
|
||
<b>Codex CLI</b>
|
||
</a><br/>
|
||
<sub>⭐ 60.8K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/anthropics/claude-code">
|
||
<img src="./public/providers/claude.png" alt="Claude Code" width="48"/><br/>
|
||
<b>Claude Code</b>
|
||
</a><br/>
|
||
<sub>⭐ 67.3K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/google-gemini/gemini-cli">
|
||
<img src="./public/providers/gemini-cli.png" alt="Gemini CLI" width="48"/><br/>
|
||
<b>Gemini CLI</b>
|
||
</a><br/>
|
||
<sub>⭐ 94.7K</sub>
|
||
</td>
|
||
<td align="center" width="110">
|
||
<a href="https://github.com/Kilo-Org/kilocode">
|
||
<img src="./public/providers/kilocode.png" alt="Kilo Code" width="48"/><br/>
|
||
<b>Kilo Code</b>
|
||
</a><br/>
|
||
<sub>⭐ 15.5K</sub>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<sub>📡 Tous les agents se connectent via <code>http://localhost:20128/v1</code> ou <code>http://cloud.omniroute.online/v1</code> — une configuration, modèles et quota illimités</sub>
|
||
|
||
---
|
||
|
||
[](https://www.npmjs.com/package/omniroute)
|
||
[](https://hub.docker.com/r/diegosouzapw/omniroute)
|
||
[](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
|
||
[](https://omniroute.online)
|
||
|
||
[🌐 Site web](https://omniroute.online) • [🚀 Démarrage rapide](#-démarrage-rapide) • [💡 Fonctionnalités](#-fonctionnalités-principales) • [📖 Docs](#-documentation) • [💰 Tarifs](#-aperçu-des-tarifs)
|
||
|
||
🌐 **Disponible en :** [English](README.md) | [Português](README.pt-BR.md) | [Español](README.es.md) | [Русский](README.ru.md) | [中文](README.zh-CN.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Italiano](README.it.md)
|
||
|
||
</div>
|
||
|
||
---
|
||
|
||
## 🤔 Pourquoi OmniRoute ?
|
||
|
||
**Arrêtez de gaspiller de l'argent et de vous heurter aux limites :**
|
||
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Le quota d'abonnement expire inutilisé chaque mois
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Les limites de débit vous arrêtent en plein codage
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> APIs coûteuses (20-50 $/mois par fournisseur)
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Changement manuel entre fournisseurs
|
||
|
||
**OmniRoute résout ces problèmes :**
|
||
|
||
- ✅ **Maximisez les abonnements** — Suivez les quotas, utilisez chaque bit avant la réinitialisation
|
||
- ✅ **Fallback automatique** — Abonnement → Clé API → Économique → Gratuit, zéro temps d'arrêt
|
||
- ✅ **Multi-comptes** — Round-robin entre les comptes par fournisseur
|
||
- ✅ **Universel** — Fonctionne avec Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, tout outil CLI
|
||
|
||
---
|
||
|
||
## 🔄 Comment ça fonctionne
|
||
|
||
```
|
||
┌─────────────┐
|
||
│ Votre CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
|
||
│ Tool │
|
||
└──────┬──────┘
|
||
│ http://localhost:20128/v1
|
||
↓
|
||
┌─────────────────────────────────────────┐
|
||
│ OmniRoute (Routeur intelligent) │
|
||
│ • Traduction de format (OpenAI ↔ Claude) │
|
||
│ • Suivi des quotas + Embeddings + Images │
|
||
│ • Renouvellement automatique des tokens │
|
||
└──────┬──────────────────────────────────┘
|
||
│
|
||
├─→ [Tier 1: ABONNEMENT] Claude Code, Codex, Gemini CLI
|
||
│ ↓ quota épuisé
|
||
├─→ [Tier 2: CLÉ API] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
|
||
│ ↓ limite de budget
|
||
├─→ [Tier 3: ÉCONOMIQUE] GLM ($0.6/1M), MiniMax ($0.2/1M)
|
||
│ ↓ limite de budget
|
||
└─→ [Tier 4: GRATUIT] iFlow, Qwen, Kiro (illimité)
|
||
|
||
Résultat : Ne jamais arrêter de coder, coût minimal
|
||
```
|
||
|
||
---
|
||
|
||
## ⚡ Démarrage rapide
|
||
|
||
**1. Installer globalement :**
|
||
|
||
```bash
|
||
npm install -g omniroute
|
||
omniroute
|
||
```
|
||
|
||
🎉 Le tableau de bord s'ouvre sur `http://localhost:20128`
|
||
|
||
| Commande | Description |
|
||
| ----------------------- | ------------------------------------------- |
|
||
| `omniroute` | Démarrer le serveur (port par défaut 20128) |
|
||
| `omniroute --port 3000` | Utiliser un port personnalisé |
|
||
| `omniroute --no-open` | Ne pas ouvrir le navigateur automatiquement |
|
||
| `omniroute --help` | Afficher l'aide |
|
||
|
||
**2. Connecter un fournisseur GRATUIT :**
|
||
|
||
Tableau de bord → Fournisseurs → Connecter **Claude Code** ou **Antigravity** → Connexion OAuth → Terminé !
|
||
|
||
**3. Utiliser dans votre outil CLI :**
|
||
|
||
```
|
||
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Paramètres :
|
||
Endpoint : http://localhost:20128/v1
|
||
API Key : [copier depuis le tableau de bord]
|
||
Model : if/kimi-k2-thinking
|
||
```
|
||
|
||
**C'est tout !** Commencez à coder avec des modèles IA GRATUITS.
|
||
|
||
**Alternative — exécuter depuis le code source :**
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
npm install
|
||
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
|
||
```
|
||
|
||
---
|
||
|
||
## 🐳 Docker
|
||
|
||
OmniRoute est disponible en tant qu'image Docker publique sur [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
||
|
||
**Démarrage rapide :**
|
||
|
||
```bash
|
||
docker run -d \
|
||
--name omniroute \
|
||
--restart unless-stopped \
|
||
-p 20128:20128 \
|
||
-v omniroute-data:/app/data \
|
||
diegosouzapw/omniroute:latest
|
||
```
|
||
|
||
**Avec fichier d'environnement :**
|
||
|
||
```bash
|
||
# Copier et modifier le .env d'abord
|
||
cp .env.example .env
|
||
|
||
docker run -d \
|
||
--name omniroute \
|
||
--restart unless-stopped \
|
||
--env-file .env \
|
||
-p 20128:20128 \
|
||
-v omniroute-data:/app/data \
|
||
diegosouzapw/omniroute:latest
|
||
```
|
||
|
||
**Avec Docker Compose :**
|
||
|
||
```bash
|
||
# Profil de base (sans outils CLI)
|
||
docker compose --profile base up -d
|
||
|
||
# Profil CLI (Claude Code, Codex, OpenClaw intégrés)
|
||
docker compose --profile cli up -d
|
||
```
|
||
|
||
| Image | Tag | Taille | Description |
|
||
| ------------------------ | -------- | ------ | ----------------------- |
|
||
| `diegosouzapw/omniroute` | `latest` | ~250MB | Dernière version stable |
|
||
| `diegosouzapw/omniroute` | `0.9.0` | ~250MB | Version actuelle |
|
||
|
||
---
|
||
|
||
## 💰 Aperçu des tarifs
|
||
|
||
| Tier | Fournisseur | Coût | Réinitialisation | Idéal pour |
|
||
| ----------------- | ----------------- | -------------------------- | ------------------- | ----------------------------- |
|
||
| **💳 ABONNEMENT** | Claude Code (Pro) | 20 $/mois | 5h + hebdomadaire | Déjà abonné |
|
||
| | Codex (Plus/Pro) | 20-200 $/mois | 5h + hebdomadaire | Utilisateurs OpenAI |
|
||
| | Gemini CLI | **GRATUIT** | 180K/mois + 1K/jour | Tout le monde ! |
|
||
| | GitHub Copilot | 10-19 $/mois | Mensuel | Utilisateurs GitHub |
|
||
| **🔑 CLÉ API** | NVIDIA NIM | **GRATUIT** (1000 crédits) | Unique | Tests gratuits |
|
||
| | DeepSeek | À l'usage | Aucune | Meilleur rapport qualité-prix |
|
||
| | Groq | Niveau gratuit + payant | Limité | Inférence ultra-rapide |
|
||
| | xAI (Grok) | À l'usage | Aucune | Modèles Grok |
|
||
| | Mistral | Niveau gratuit + payant | Limité | IA européenne |
|
||
| | OpenRouter | À l'usage | Aucune | 100+ modèles |
|
||
| **💰 ÉCONOMIQUE** | GLM-4.7 | 0,6 $/1M | Quotidien 10h | Backup économique |
|
||
| | MiniMax M2.1 | 0,2 $/1M | Rotatif 5h | Option la moins chère |
|
||
| | Kimi K2 | 9 $/mois fixe | 10M tokens/mois | Coût prévisible |
|
||
| **🆓 GRATUIT** | iFlow | 0 $ | Illimité | 8 modèles gratuits |
|
||
| | Qwen | 0 $ | Illimité | 3 modèles gratuits |
|
||
| | Kiro | 0 $ | Illimité | Claude gratuit |
|
||
|
||
**💡 Conseil Pro :** Commencez avec Gemini CLI (180K gratuits/mois) + iFlow (illimité gratuit) = 0 $ de coût !
|
||
|
||
---
|
||
|
||
## 🎯 Cas d'utilisation
|
||
|
||
### Cas 1 : « J'ai un abonnement Claude Pro »
|
||
|
||
**Problème :** Le quota expire inutilisé, limites de débit pendant le codage intensif
|
||
|
||
```
|
||
Combo : "maximize-claude"
|
||
1. cc/claude-opus-4-6 (utiliser l'abonnement au maximum)
|
||
2. glm/glm-4.7 (backup économique quand le quota est épuisé)
|
||
3. if/kimi-k2-thinking (fallback d'urgence gratuit)
|
||
|
||
Coût mensuel : 20 $ (abonnement) + ~5 $ (backup) = 25 $ au total
|
||
vs. 20 $ + atteindre les limites = frustration
|
||
```
|
||
|
||
### Cas 2 : « Je veux zéro coût »
|
||
|
||
**Problème :** Impossible de payer des abonnements, besoin d'IA fiable pour coder
|
||
|
||
```
|
||
Combo : "free-forever"
|
||
1. gc/gemini-3-flash (180K gratuits/mois)
|
||
2. if/kimi-k2-thinking (illimité gratuit)
|
||
3. qw/qwen3-coder-plus (illimité gratuit)
|
||
|
||
Coût mensuel : 0 $
|
||
Qualité : Modèles prêts pour la production
|
||
```
|
||
|
||
### Cas 3 : « Je dois coder 24/7, sans interruption »
|
||
|
||
**Problème :** Délais serrés, ne peut pas se permettre de temps d'arrêt
|
||
|
||
```
|
||
Combo : "always-on"
|
||
1. cc/claude-opus-4-6 (meilleure qualité)
|
||
2. cx/gpt-5.2-codex (deuxième abonnement)
|
||
3. glm/glm-4.7 (économique, reset quotidien)
|
||
4. minimax/MiniMax-M2.1 (le moins cher, reset 5h)
|
||
5. if/kimi-k2-thinking (gratuit illimité)
|
||
|
||
Résultat : 5 niveaux de fallback = zéro temps d'arrêt
|
||
```
|
||
|
||
### Cas 4 : « Je veux l'IA GRATUITE dans OpenClaw »
|
||
|
||
**Problème :** Besoin d'assistant IA dans les apps de messagerie, entièrement gratuit
|
||
|
||
```
|
||
Combo : "openclaw-free"
|
||
1. if/glm-4.7 (illimité gratuit)
|
||
2. if/minimax-m2.1 (illimité gratuit)
|
||
3. if/kimi-k2-thinking (illimité gratuit)
|
||
|
||
Coût mensuel : 0 $
|
||
Accès via : WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 Fonctionnalités principales
|
||
|
||
### 🧠 Routage & Intelligence
|
||
|
||
| Fonctionnalité | Ce qu'elle fait |
|
||
| ------------------------------------- | ------------------------------------------------------------------------------- |
|
||
| 🎯 **Fallback intelligent 4 niveaux** | Auto-routage : Abonnement → Clé API → Économique → Gratuit |
|
||
| 📊 **Suivi des quotas en temps réel** | Comptage de tokens en direct + compte à rebours de réinitialisation |
|
||
| 🔄 **Traduction de format** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro transparent |
|
||
| 👥 **Support multi-comptes** | Plusieurs comptes par fournisseur avec sélection intelligente |
|
||
| 🔄 **Renouvellement auto des tokens** | Les tokens OAuth se renouvellent automatiquement avec retry |
|
||
| 🎨 **Combos personnalisés** | 6 stratégies : fill-first, round-robin, p2c, random, least-used, cost-optimized |
|
||
| 🧩 **Modèles personnalisés** | Ajoutez n'importe quel ID de modèle à n'importe quel fournisseur |
|
||
| 🌐 **Routeur wildcard** | Routez les patterns `provider/*` vers n'importe quel fournisseur dynamiquement |
|
||
| 🧠 **Budget de raisonnement** | Modes passthrough, auto, custom et adaptive pour les modèles de raisonnement |
|
||
| 💬 **Injection System Prompt** | System prompt global appliqué à toutes les requêtes |
|
||
| 📄 **API Responses** | Support complet de l'API Responses d'OpenAI (`/v1/responses`) pour Codex |
|
||
|
||
### 🎵 APIs multi-modales
|
||
|
||
| Fonctionnalité | Ce qu'elle fait |
|
||
| -------------------------- | ------------------------------------------------------- |
|
||
| 🖼️ **Génération d'images** | `/v1/images/generations` — 4 fournisseurs, 9+ modèles |
|
||
| 📐 **Embeddings** | `/v1/embeddings` — 6 fournisseurs, 9+ modèles |
|
||
| 🎤 **Transcription audio** | `/v1/audio/transcriptions` — compatible Whisper |
|
||
| 🔊 **Texte vers parole** | `/v1/audio/speech` — synthèse audio multi-fournisseur |
|
||
| 🛡️ **Modérations** | `/v1/moderations` — vérifications de sécurité |
|
||
| 🔀 **Reranking** | `/v1/rerank` — reclassement de pertinence des documents |
|
||
|
||
### 🛡️ Résilience & Sécurité
|
||
|
||
| Fonctionnalité | Ce qu'elle fait |
|
||
| ------------------------------- | -------------------------------------------------------------------- |
|
||
| 🔌 **Circuit Breaker** | Ouverture/fermeture auto par fournisseur avec seuils configurables |
|
||
| 🛡️ **Anti-Thundering Herd** | Mutex + sémaphore de rate-limit pour les fournisseurs avec clé API |
|
||
| 🧠 **Cache sémantique** | Cache à deux niveaux (signature + sémantique) réduit coût et latence |
|
||
| ⚡ **Idempotence des requêtes** | Fenêtre de dédup 5s pour les requêtes dupliquées |
|
||
| 🔒 **Spoofing TLS Fingerprint** | Contournement de détection de bot via wreq-js |
|
||
| 🌐 **Filtrage IP** | Allowlist/blocklist pour le contrôle d'accès API |
|
||
| 📊 **Rate limits éditables** | RPM configurable, intervalle minimum, concurrence max |
|
||
|
||
### 📊 Observabilité & Analytique
|
||
|
||
| Fonctionnalité | Ce qu'elle fait |
|
||
| --------------------------------- | ------------------------------------------------------------------------- |
|
||
| 📝 **Logs de requêtes** | Mode debug avec logs complets requête/réponse |
|
||
| 💾 **Logs SQLite** | Logs proxy persistants survivant aux redémarrages |
|
||
| 📊 **Tableau de bord analytique** | Recharts : cartes de stats, graphique d'utilisation, tableau fournisseurs |
|
||
| 📈 **Suivi de progression** | Événements SSE de progression opt-in pour le streaming |
|
||
| 🧪 **Évaluations LLM** | Tests avec golden set et 4 stratégies de correspondance |
|
||
| 🔍 **Télémétrie des requêtes** | Agrégation de latence p50/p95/p99 + traçage X-Request-Id |
|
||
| 📋 **Logs + Quotas** | Pages dédiées pour navigation des logs et suivi des quotas |
|
||
| 🏥 **Tableau de bord santé** | Uptime, états circuit breaker, lockouts, stats cache |
|
||
| 💰 **Suivi des coûts** | Gestion de budget + configuration des prix par modèle |
|
||
|
||
### ☁️ Déploiement & Synchronisation
|
||
|
||
| Fonctionnalité | Ce qu'elle fait |
|
||
| --------------------------------- | ------------------------------------------------------------------------------- |
|
||
| 💾 **Cloud Sync** | Synchroniser les paramètres entre appareils via Cloudflare Workers |
|
||
| 🌐 **Déployer partout** | Localhost, VPS, Docker, Cloudflare Workers |
|
||
| 🔑 **Gestion des clés API** | Générer, faire tourner et limiter les clés API par fournisseur |
|
||
| 🧙 **Assistant de configuration** | Setup guidé en 4 étapes pour les nouveaux utilisateurs |
|
||
| 🔧 **Tableau de bord CLI Tools** | Configuration en un clic pour Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
||
| 🔄 **Sauvegardes DB** | Sauvegarde et restauration automatiques de tous les paramètres |
|
||
|
||
<details>
|
||
<summary><b>📖 Détails des fonctionnalités</b></summary>
|
||
|
||
### 🎯 Fallback intelligent 4 niveaux
|
||
|
||
Créez des combos avec fallback automatique :
|
||
|
||
```
|
||
Combo : "my-coding-stack"
|
||
1. cc/claude-opus-4-6 (votre abonnement)
|
||
2. nvidia/llama-3.3-70b (API NVIDIA gratuite)
|
||
3. glm/glm-4.7 (backup économique, $0.6/1M)
|
||
4. if/kimi-k2-thinking (fallback gratuit)
|
||
|
||
→ Bascule automatiquement lorsque le quota est épuisé ou en cas d'erreurs
|
||
```
|
||
|
||
### 📊 Suivi des quotas en temps réel
|
||
|
||
- Consommation de tokens par fournisseur
|
||
- Compte à rebours de réinitialisation (5 heures, quotidien, hebdomadaire)
|
||
- Estimation des coûts pour les niveaux payants
|
||
- Rapports de dépenses mensuels
|
||
|
||
### 🔄 Traduction de format
|
||
|
||
Traduction transparente entre les formats :
|
||
|
||
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
|
||
- Votre CLI envoie le format OpenAI → OmniRoute traduit → Le fournisseur reçoit le format natif
|
||
- Fonctionne avec tout outil supportant les endpoints OpenAI personnalisés
|
||
|
||
### 👥 Support multi-comptes
|
||
|
||
- Ajouter plusieurs comptes par fournisseur
|
||
- Round-robin automatique ou routage par priorité
|
||
- Basculement vers le compte suivant lorsqu'un quota est atteint
|
||
|
||
### 🔄 Renouvellement automatique des tokens
|
||
|
||
- Les tokens OAuth se renouvellent automatiquement avant expiration
|
||
- Pas de réauthentification manuelle nécessaire
|
||
- Expérience transparente sur tous les fournisseurs
|
||
|
||
### 🎨 Combos personnalisés
|
||
|
||
- Créer des combinaisons de modèles illimitées
|
||
- 6 stratégies : fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
|
||
- Partager les combos entre appareils avec Cloud Sync
|
||
|
||
### 🏥 Tableau de bord santé
|
||
|
||
- Statut du système (uptime, version, utilisation mémoire)
|
||
- États des circuit breakers par fournisseur (Closed/Open/Half-Open)
|
||
- Statut des rate limits et lockouts actifs
|
||
- Statistiques du cache de signatures
|
||
- Télémétrie de latence (p50/p95/p99) + cache de prompt
|
||
- Réinitialisation de la santé en un clic
|
||
|
||
### 🔧 Playground du traducteur
|
||
|
||
- Déboguer, tester et visualiser les traductions de format d'API
|
||
- Envoyer des requêtes et voir comment OmniRoute traduit entre les formats des fournisseurs
|
||
- Inestimable pour résoudre les problèmes d'intégration
|
||
|
||
### 💾 Cloud Sync
|
||
|
||
- Synchroniser fournisseurs, combos et paramètres entre appareils
|
||
- Synchronisation en arrière-plan automatique
|
||
- Stockage chiffré sécurisé
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 📖 Guide de configuration
|
||
|
||
<details>
|
||
<summary><b>💳 Fournisseurs par abonnement</b></summary>
|
||
|
||
### Claude Code (Pro/Max)
|
||
|
||
```bash
|
||
Tableau de bord → Fournisseurs → Connecter Claude Code
|
||
→ Connexion OAuth → Renouvellement auto des tokens
|
||
→ Suivi de quota 5h + hebdomadaire
|
||
|
||
Modèles :
|
||
cc/claude-opus-4-6
|
||
cc/claude-sonnet-4-5-20250929
|
||
cc/claude-haiku-4-5-20251001
|
||
```
|
||
|
||
**Conseil Pro :** Utilisez Opus pour les tâches complexes, Sonnet pour la vitesse. OmniRoute suit les quotas par modèle !
|
||
|
||
### OpenAI Codex (Plus/Pro)
|
||
|
||
```bash
|
||
Tableau de bord → Fournisseurs → Connecter Codex
|
||
→ Connexion OAuth (port 1455)
|
||
→ Reset 5h + hebdomadaire
|
||
|
||
Modèles :
|
||
cx/gpt-5.2-codex
|
||
cx/gpt-5.1-codex-max
|
||
```
|
||
|
||
### Gemini CLI (GRATUIT 180K/mois !)
|
||
|
||
```bash
|
||
Tableau de bord → Fournisseurs → Connecter Gemini CLI
|
||
→ Google OAuth
|
||
→ 180K completions/mois + 1K/jour
|
||
|
||
Modèles :
|
||
gc/gemini-3-flash-preview
|
||
gc/gemini-2.5-pro
|
||
```
|
||
|
||
**Meilleure valeur :** Niveau gratuit énorme ! Utilisez avant les niveaux payants.
|
||
|
||
### GitHub Copilot
|
||
|
||
```bash
|
||
Tableau de bord → Fournisseurs → Connecter GitHub
|
||
→ OAuth via GitHub
|
||
→ Reset mensuel (1er du mois)
|
||
|
||
Modèles :
|
||
gh/gpt-5
|
||
gh/claude-4.5-sonnet
|
||
gh/gemini-3-pro
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔑 Fournisseurs par clé API</b></summary>
|
||
|
||
### NVIDIA NIM (GRATUIT 1000 crédits !)
|
||
|
||
1. S'inscrire : [build.nvidia.com](https://build.nvidia.com)
|
||
2. Obtenir une clé API gratuite (1000 crédits d'inférence inclus)
|
||
3. Tableau de bord → Ajouter fournisseur → NVIDIA NIM :
|
||
- API Key : `nvapi-your-key`
|
||
|
||
**Modèles :** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` et 50+ autres
|
||
|
||
**Conseil Pro :** API compatible OpenAI — fonctionne parfaitement avec la traduction de format d'OmniRoute !
|
||
|
||
### DeepSeek
|
||
|
||
1. S'inscrire : [platform.deepseek.com](https://platform.deepseek.com)
|
||
2. Obtenir une clé API
|
||
3. Tableau de bord → Ajouter fournisseur → DeepSeek
|
||
|
||
**Modèles :** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
||
|
||
### Groq (Niveau gratuit disponible !)
|
||
|
||
1. S'inscrire : [console.groq.com](https://console.groq.com)
|
||
2. Obtenir une clé API (niveau gratuit inclus)
|
||
3. Tableau de bord → Ajouter fournisseur → Groq
|
||
|
||
**Modèles :** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
||
|
||
**Conseil Pro :** Inférence ultra-rapide — idéal pour le codage en temps réel !
|
||
|
||
### OpenRouter (100+ modèles)
|
||
|
||
1. S'inscrire : [openrouter.ai](https://openrouter.ai)
|
||
2. Obtenir une clé API
|
||
3. Tableau de bord → Ajouter fournisseur → OpenRouter
|
||
|
||
**Modèles :** Accès à 100+ modèles de tous les grands fournisseurs via une seule clé API.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>💰 Fournisseurs économiques (Backup)</b></summary>
|
||
|
||
### GLM-4.7 (Reset quotidien, $0.6/1M)
|
||
|
||
1. S'inscrire : [Zhipu AI](https://open.bigmodel.cn/)
|
||
2. Obtenir une clé API du Coding Plan
|
||
3. Tableau de bord → Ajouter clé API :
|
||
- Fournisseur : `glm`
|
||
- API Key : `your-key`
|
||
|
||
**Utilisez :** `glm/glm-4.7`
|
||
|
||
**Conseil Pro :** Le Coding Plan offre 3× le quota à 1/7 du coût ! Reset quotidien à 10h.
|
||
|
||
### MiniMax M2.1 (Reset 5h, $0.20/1M)
|
||
|
||
1. S'inscrire : [MiniMax](https://www.minimax.io/)
|
||
2. Obtenir une clé API
|
||
3. Tableau de bord → Ajouter clé API
|
||
|
||
**Utilisez :** `minimax/MiniMax-M2.1`
|
||
|
||
**Conseil Pro :** L'option la moins chère pour le contexte long (1M tokens) !
|
||
|
||
### Kimi K2 (9 $/mois fixe)
|
||
|
||
1. S'abonner : [Moonshot AI](https://platform.moonshot.ai/)
|
||
2. Obtenir une clé API
|
||
3. Tableau de bord → Ajouter clé API
|
||
|
||
**Utilisez :** `kimi/kimi-latest`
|
||
|
||
**Conseil Pro :** 9 $/mois fixe pour 10M tokens = 0,90 $/1M de coût effectif !
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🆓 Fournisseurs GRATUITS (Backup d'urgence)</b></summary>
|
||
|
||
### iFlow (8 modèles GRATUITS)
|
||
|
||
```bash
|
||
Tableau de bord → Connecter iFlow
|
||
→ Connexion OAuth iFlow
|
||
→ Utilisation illimitée
|
||
|
||
Modèles :
|
||
if/kimi-k2-thinking
|
||
if/qwen3-coder-plus
|
||
if/glm-4.7
|
||
if/minimax-m2
|
||
if/deepseek-r1
|
||
```
|
||
|
||
### Qwen (3 modèles GRATUITS)
|
||
|
||
```bash
|
||
Tableau de bord → Connecter Qwen
|
||
→ Autorisation par code d'appareil
|
||
→ Utilisation illimitée
|
||
|
||
Modèles :
|
||
qw/qwen3-coder-plus
|
||
qw/qwen3-coder-flash
|
||
```
|
||
|
||
### Kiro (Claude GRATUIT)
|
||
|
||
```bash
|
||
Tableau de bord → Connecter Kiro
|
||
→ AWS Builder ID ou Google/GitHub
|
||
→ Utilisation illimitée
|
||
|
||
Modèles :
|
||
kr/claude-sonnet-4.5
|
||
kr/claude-haiku-4.5
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🎨 Créer des combos</b></summary>
|
||
|
||
### Exemple 1 : Maximiser l'abonnement → Backup économique
|
||
|
||
```
|
||
Tableau de bord → Combos → Créer nouveau
|
||
|
||
Nom : premium-coding
|
||
Modèles :
|
||
1. cc/claude-opus-4-6 (Abonnement principal)
|
||
2. glm/glm-4.7 (Backup économique, $0.6/1M)
|
||
3. minimax/MiniMax-M2.1 (Fallback le moins cher, $0.20/1M)
|
||
|
||
Utilisez en CLI : premium-coding
|
||
```
|
||
|
||
### Exemple 2 : Gratuit uniquement (Zéro coût)
|
||
|
||
```
|
||
Nom : free-combo
|
||
Modèles :
|
||
1. gc/gemini-3-flash-preview (180K gratuits/mois)
|
||
2. if/kimi-k2-thinking (illimité)
|
||
3. qw/qwen3-coder-plus (illimité)
|
||
|
||
Coût : 0 $ pour toujours !
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔧 Intégration CLI</b></summary>
|
||
|
||
### Cursor IDE
|
||
|
||
```
|
||
Paramètres → Modèles → Avancé :
|
||
OpenAI API Base URL : http://localhost:20128/v1
|
||
OpenAI API Key : [du tableau de bord OmniRoute]
|
||
Model : cc/claude-opus-4-6
|
||
```
|
||
|
||
### Claude Code
|
||
|
||
Utilisez la page **CLI Tools** dans le tableau de bord pour la configuration en un clic, ou modifiez `~/.claude/settings.json` manuellement.
|
||
|
||
### Codex CLI
|
||
|
||
```bash
|
||
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é) :**
|
||
|
||
```
|
||
Tableau de bord → CLI Tools → OpenClaw → Sélectionner modèle → Appliquer
|
||
```
|
||
|
||
**Option 2 — Manuel :** Modifier `~/.openclaw/openclaw.json` :
|
||
|
||
```json
|
||
{
|
||
"models": {
|
||
"providers": {
|
||
"omniroute": {
|
||
"baseUrl": "http://127.0.0.1:20128/v1",
|
||
"apiKey": "sk_omniroute",
|
||
"api": "openai-completions"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
> **Note :** OpenClaw fonctionne uniquement avec OmniRoute local. Utilisez `127.0.0.1` au lieu de `localhost` pour éviter les problèmes de résolution IPv6.
|
||
|
||
### Cline / Continue / RooCode
|
||
|
||
```
|
||
Paramètres → Configuration API :
|
||
Fournisseur : OpenAI Compatible
|
||
Base URL : http://localhost:20128/v1
|
||
API Key : [du tableau de bord OmniRoute]
|
||
Model : if/kimi-k2-thinking
|
||
```
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 📊 Modèles disponibles
|
||
|
||
<details>
|
||
<summary><b>Voir tous les modèles disponibles</b></summary>
|
||
|
||
**Claude Code (`cc/`)** - Pro/Max :
|
||
|
||
- `cc/claude-opus-4-6`
|
||
- `cc/claude-sonnet-4-5-20250929`
|
||
- `cc/claude-haiku-4-5-20251001`
|
||
|
||
**Codex (`cx/`)** - Plus/Pro :
|
||
|
||
- `cx/gpt-5.2-codex`
|
||
- `cx/gpt-5.1-codex-max`
|
||
|
||
**Gemini CLI (`gc/`)** - GRATUIT :
|
||
|
||
- `gc/gemini-3-flash-preview`
|
||
- `gc/gemini-2.5-pro`
|
||
|
||
**GitHub Copilot (`gh/`)** :
|
||
|
||
- `gh/gpt-5`
|
||
- `gh/claude-4.5-sonnet`
|
||
|
||
**NVIDIA NIM (`nvidia/`)** - Crédits GRATUITS :
|
||
|
||
- `nvidia/llama-3.3-70b-instruct`
|
||
- `nvidia/mistral-7b-instruct`
|
||
- 50+ modèles sur [build.nvidia.com](https://build.nvidia.com)
|
||
|
||
**GLM (`glm/`)** - $0.6/1M :
|
||
|
||
- `glm/glm-4.7`
|
||
|
||
**MiniMax (`minimax/`)** - $0.2/1M :
|
||
|
||
- `minimax/MiniMax-M2.1`
|
||
|
||
**iFlow (`if/`)** - GRATUIT :
|
||
|
||
- `if/kimi-k2-thinking`
|
||
- `if/qwen3-coder-plus`
|
||
- `if/deepseek-r1`
|
||
- `if/glm-4.7`
|
||
- `if/minimax-m2`
|
||
|
||
**Qwen (`qw/`)** - GRATUIT :
|
||
|
||
- `qw/qwen3-coder-plus`
|
||
- `qw/qwen3-coder-flash`
|
||
|
||
**Kiro (`kr/`)** - GRATUIT :
|
||
|
||
- `kr/claude-sonnet-4.5`
|
||
- `kr/claude-haiku-4.5`
|
||
|
||
**OpenRouter (`or/`)** - 100+ modèles :
|
||
|
||
- `or/anthropic/claude-4-sonnet`
|
||
- `or/google/gemini-2.5-pro`
|
||
- Tout modèle de [openrouter.ai/models](https://openrouter.ai/models)
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 🧪 Évaluations (Evals)
|
||
|
||
OmniRoute inclut un framework d'évaluation intégré pour tester la qualité des réponses LLM contre un golden set. Accès via **Analytics → Evals** dans le tableau de bord.
|
||
|
||
### Golden Set intégré
|
||
|
||
Le « OmniRoute Golden Set » préchargé contient 10 cas de test :
|
||
|
||
- Salutations, mathématiques, géographie, génération de code
|
||
- Conformité format JSON, traduction, markdown
|
||
- Rejet de sécurité (contenu nocif), comptage, logique booléenne
|
||
|
||
### Stratégies d'évaluation
|
||
|
||
| Stratégie | Description | Exemple |
|
||
| ---------- | -------------------------------------------------------------- | -------------------------------- |
|
||
| `exact` | La sortie doit correspondre exactement | `"4"` |
|
||
| `contains` | La sortie doit contenir la sous-chaîne (insensible à la casse) | `"Paris"` |
|
||
| `regex` | La sortie doit correspondre au motif regex | `"1.*2.*3"` |
|
||
| `custom` | Fonction JS personnalisée retourne true/false | `(output) => output.length > 10` |
|
||
|
||
---
|
||
|
||
## 🐛 Dépannage
|
||
|
||
<details>
|
||
<summary><b>Cliquez pour développer le guide de dépannage</b></summary>
|
||
|
||
**« Language model did not provide messages »**
|
||
|
||
- Quota du fournisseur épuisé → Vérifiez le suivi de quota dans le tableau de bord
|
||
- Solution : Utilisez un combo avec fallback ou passez à un niveau moins cher
|
||
|
||
**Rate limiting**
|
||
|
||
- Quota d'abonnement épuisé → Fallback vers GLM/MiniMax
|
||
- Ajoutez un combo : `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
||
|
||
**Token OAuth expiré**
|
||
|
||
- Renouvelé automatiquement par OmniRoute
|
||
- Si le problème persiste : Tableau de bord → Fournisseur → Reconnecter
|
||
|
||
**Coûts élevés**
|
||
|
||
- Vérifiez les statistiques d'utilisation dans Tableau de bord → Coûts
|
||
- Changez le modèle principal pour GLM/MiniMax
|
||
- Utilisez le niveau gratuit (Gemini CLI, iFlow) pour les tâches non critiques
|
||
|
||
**Le tableau de bord s'ouvre sur le mauvais port**
|
||
|
||
- Définissez `PORT=20128` et `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
|
||
|
||
**Erreurs de cloud sync**
|
||
|
||
- Vérifiez que `BASE_URL` pointe vers votre instance en cours d'exécution
|
||
- Vérifiez que `CLOUD_URL` pointe vers le point de terminaison cloud attendu
|
||
- Gardez les valeurs `NEXT_PUBLIC_*` alignées avec les valeurs du serveur
|
||
|
||
**Le premier login ne fonctionne pas**
|
||
|
||
- Vérifiez `INITIAL_PASSWORD` dans `.env`
|
||
- Si non défini, le mot de passe par défaut est `123456`
|
||
|
||
**Pas de logs de requêtes**
|
||
|
||
- Définissez `ENABLE_REQUEST_LOGS=true` dans `.env`
|
||
|
||
**Le test de connexion affiche « Invalid » pour les fournisseurs compatibles OpenAI**
|
||
|
||
- Beaucoup de fournisseurs n'exposent pas le point de terminaison `/models`
|
||
- OmniRoute v0.9.0+ inclut une validation de secours via chat completions
|
||
- Assurez-vous que l'URL de base inclut le suffixe `/v1`
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 🛠️ Stack technologique
|
||
|
||
- **Runtime** : Node.js 20+
|
||
- **Langage** : TypeScript 5.9 — **100% TypeScript** dans `src/` et `open-sse/` (v0.9.0)
|
||
- **Framework** : Next.js 16 + React 19 + Tailwind CSS 4
|
||
- **Base de données** : LowDB (JSON) + SQLite (état du domaine + logs proxy)
|
||
- **Streaming** : Server-Sent Events (SSE)
|
||
- **Auth** : OAuth 2.0 (PKCE) + JWT + API Keys
|
||
- **Tests** : Node.js test runner (368+ tests unitaires)
|
||
- **CI/CD** : GitHub Actions (publication automatique npm + Docker Hub lors du release)
|
||
- **Site web** : [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** : Circuit breaker, backoff exponentiel, anti-thundering herd, spoofing TLS
|
||
|
||
---
|
||
|
||
## 📖 Documentation
|
||
|
||
| Document | Description |
|
||
| ------------------------------------------ | --------------------------------------------------- |
|
||
| [Guide utilisateur](docs/USER_GUIDE.md) | Fournisseurs, combos, intégration CLI, déploiement |
|
||
| [Référence API](docs/API_REFERENCE.md) | Tous les endpoints avec exemples |
|
||
| [Dépannage](docs/TROUBLESHOOTING.md) | Problèmes courants et solutions |
|
||
| [Architecture](docs/ARCHITECTURE.md) | Architecture système et détails internes |
|
||
| [Contribuer](CONTRIBUTING.md) | Configuration de développement et directives |
|
||
| [Spécification OpenAPI](docs/openapi.yaml) | Spécification OpenAPI 3.0 |
|
||
| [Politique de sécurité](SECURITY.md) | Signalement de vulnérabilités et pratiques sécurité |
|
||
|
||
---
|
||
|
||
## 📧 Support
|
||
|
||
- **Site web** : [omniroute.online](https://omniroute.online)
|
||
- **GitHub** : [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
||
- **Issues** : [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
||
- **Projet original** : [9router par decolua](https://github.com/decolua/9router)
|
||
|
||
---
|
||
|
||
## 👥 Contributeurs
|
||
|
||
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
||
|
||
### Comment contribuer
|
||
|
||
1. Forkez le dépôt
|
||
2. Créez votre branche de fonctionnalité (`git checkout -b feature/amazing-feature`)
|
||
3. Committez vos changements (`git commit -m 'Add amazing feature'`)
|
||
4. Poussez vers la branche (`git push origin feature/amazing-feature`)
|
||
5. Ouvrez une Pull Request
|
||
|
||
Consultez [CONTRIBUTING.md](CONTRIBUTING.md) pour les directives détaillées.
|
||
|
||
### Publier une nouvelle version
|
||
|
||
```bash
|
||
# Créer un release — la publication npm est automatique
|
||
gh release create v0.9.0 --title "v0.9.0" --generate-notes
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Historique des Stars
|
||
|
||
<a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
|
||
<picture>
|
||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
|
||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
|
||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
|
||
</picture>
|
||
</a>
|
||
|
||
---
|
||
|
||
## 🙏 Remerciements
|
||
|
||
Remerciements spéciaux à **[9router](https://github.com/decolua/9router)** par **[decolua](https://github.com/decolua)** — le projet original qui a inspiré ce fork. OmniRoute construit sur cette base incroyable avec des fonctionnalités supplémentaires, des APIs multi-modales et une réécriture complète en TypeScript.
|
||
|
||
Remerciements spéciaux à **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — l'implémentation originale en Go qui a inspiré ce portage en JavaScript.
|
||
|
||
---
|
||
|
||
## 📄 Licence
|
||
|
||
Licence MIT — voir [LICENSE](LICENSE) pour les détails.
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
<sub>Fait avec ❤️ pour les développeurs qui codent 24/7</sub>
|
||
<br/>
|
||
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
||
</div>
|