mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-05-02 00:00:23 +00:00
## Security Fixes - Sanitize OMNIROUTE_MEMORY_MB with parseInt + range validation (64-16384) to prevent command injection via spawn() args - Validate URL protocol in shell.openExternal (http/https only) to prevent RCE in Electron renderer compromise - Bump default memory from 256MB to 512MB ## Electron package-lock.json - Added to .gitignore (5278 lines removed from tracking) ## Test Suite (64 tests, 9 suites) - electron-main.test.mjs: URL validation, IPC channels, window handler - electron-preload.test.mjs: channel whitelist, API surface, open-external - cli-memory.test.mjs: injection prevention, boundary values, .env parsing ## Documentation - Desktop App section added to all 30 READMEs (9 fully translated) - USER_GUIDE.md updated with 512MB default - .env.example reflects new defaults
1262 lines
51 KiB
Markdown
1262 lines
51 KiB
Markdown
<div align="center">
|
||
<img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute Dashboard" width="800"/>
|
||
|
||
# 🚀 OmniRoute — De gratis AI-gateway
|
||
|
||
🌐 **[English](#-omniroute--the-free-ai-gateway)** | **[Português (BR)](#-omniroute--gateway-de-ia-gratuito)**
|
||
|
||
### Stop nooit met coderen. Slimme routering naar **GRATIS en voordelige AI-modellen** met automatische terugval.
|
||
|
||
_Uw universele API-proxy: één eindpunt, meer dan 36 providers, geen downtime._
|
||
|
||
**Chatvoltooiingen • Insluitingen • Afbeelding genereren • Audio • Herrangschikking • 100% TypeScript**
|
||
|
||
---
|
||
|
||
### 🤖 Gratis AI-provider voor uw favoriete codeeragenten
|
||
|
||
_Verbind elke AI-aangedreven IDE- of CLI-tool via OmniRoute: gratis API-gateway voor onbeperkte codering._
|
||
|
||
<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>📡 Alle agenten maken verbinding via <code>http://localhost:20128/v1</code> of <code>http://cloud.omniroute.online/v1</code> — één configuratie, onbeperkte modellen en quota</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)
|
||
[](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
|
||
|
||
[🌐 Website](https://omniroute.online) • [🚀 Quick Start](#-quick-start) • [💡 Features](#-key-features) • [📖 Docs](#-documentation) • [💰 Pricing](#-pricing-at-a-glance) • [💬 WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
|
||
|
||
🌐 **Available in:** 🇺🇸 [English](README.md) | 🇧🇷 [Português (Brasil)](README.pt-BR.md) | 🇪🇸 [Español](README.es.md) | 🇫🇷 [Français](README.fr.md) | 🇮🇹 [Italiano](README.it.md) | 🇷🇺 [Русский](README.ru.md) | 🇨🇳 [中文 (简体)](README.zh-CN.md) | 🇩🇪 [Deutsch](README.de.md) | 🇮🇳 [हिन्दी](README.in.md) | 🇹🇭 [ไทย](README.th.md) | 🇺🇦 [Українська](README.uk-UA.md) | 🇸🇦 [العربية](README.ar.md) | 🇯🇵 [日本語](README.ja.md) | 🇻🇳 [Tiếng Việt](README.vi.md) | 🇧🇬 [Български](README.bg.md) | 🇩🇰 [Dansk](README.da.md) | 🇫🇮 [Suomi](README.fi.md) | 🇮🇱 [עברית](README.he.md) | 🇭🇺 [Magyar](README.hu.md) | 🇮🇩 [Bahasa Indonesia](README.id.md) | 🇰🇷 [한국어](README.ko.md) | 🇲🇾 [Bahasa Melayu](README.ms.md) | 🇳🇱 [Nederlands](README.nl.md) | 🇳🇴 [Norsk](README.no.md) | 🇵🇹 [Português (Portugal)](README.pt.md) | 🇷🇴 [Română](README.ro.md) | 🇵🇱 [Polski](README.pl.md) | 🇸🇰 [Slovenčina](README.sk.md) | 🇸🇪 [Svenska](README.sv.md) | 🇵🇭 [Filipino](README.phi.md)
|
||
|
||
</div>
|
||
|
||
---
|
||
|
||
## 🤔 Waarom OmniRoute?
|
||
|
||
**Stop met het verspillen van geld en het bereiken van grenzen:**
|
||
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Het abonnementsquotum verloopt elke maand ongebruikt
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Snelheidslimieten voorkomen dat u halverwege codeert
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Dure API's ($20-50/maand per provider)
|
||
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Handmatig schakelen tussen providers
|
||
|
||
**OmniRoute lost dit op:**
|
||
|
||
- ✅ **Maximaliseer abonnementen** - Houd quota bij, gebruik elk bit voordat u het opnieuw instelt
|
||
- ✅ **Automatische fallback** - Abonnement → API-sleutel → Goedkoop → Gratis, geen downtime
|
||
- ✅ **Multi-account** - Round-robin tussen accounts per provider
|
||
- ✅ **Universeel** - Werkt met Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, elke CLI-tool
|
||
|
||
---
|
||
|
||
## 🔄 Hoe het werkt
|
||
|
||
```
|
||
┌─────────────┐
|
||
│ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
|
||
│ Tool │
|
||
└──────┬──────┘
|
||
│ http://localhost:20128/v1
|
||
↓
|
||
┌─────────────────────────────────────────┐
|
||
│ OmniRoute (Smart Router) │
|
||
│ • Format translation (OpenAI ↔ Claude) │
|
||
│ • Quota tracking + Embeddings + Images │
|
||
│ • Auto token refresh │
|
||
└──────┬──────────────────────────────────┘
|
||
│
|
||
├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI
|
||
│ ↓ quota exhausted
|
||
├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
|
||
│ ↓ budget limit
|
||
├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M)
|
||
│ ↓ budget limit
|
||
└─→ [Tier 4: FREE] iFlow, Qwen, Kiro (unlimited)
|
||
|
||
Result: Never stop coding, minimal cost
|
||
```
|
||
|
||
---
|
||
|
||
## ⚡ Snelle start
|
||
|
||
**1. Wereldwijd installeren:**
|
||
|
||
```bash
|
||
npm install -g omniroute
|
||
omniroute
|
||
```
|
||
|
||
🎉 Dashboard wordt geopend op `http://localhost:20128`
|
||
|
||
| Commando | Beschrijving |
|
||
| ----------------------- | ---------------------------------- |
|
||
| `omniroute` | Startserver (standaardpoort 20128) |
|
||
| `omniroute --port 3000` | Gebruik aangepaste poort |
|
||
| `omniroute --no-open` | Browser niet automatisch openen |
|
||
| `omniroute --help` | Hulp tonen |
|
||
|
||
**2. Sluit een GRATIS provider aan:**
|
||
|
||
Dashboard → Providers → **Claude Code** of **Antigravity** verbinden → OAuth-aanmelding → Klaar!
|
||
|
||
**3. Gebruik in uw CLI-tool:**
|
||
|
||
```
|
||
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
|
||
Endpoint: http://localhost:20128/v1
|
||
API Key: [copy from dashboard]
|
||
Model: if/kimi-k2-thinking
|
||
```
|
||
|
||
**Dat is alles!** Begin met coderen met GRATIS AI-modellen.
|
||
|
||
**Alternatief — uitvoeren vanaf bron:**
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
npm install
|
||
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
|
||
```
|
||
|
||
---
|
||
|
||
## 🐳 Docker
|
||
|
||
OmniRoute is beschikbaar als openbare Docker-image op [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
||
|
||
**Snelle uitvoering:**
|
||
|
||
```bash
|
||
docker run -d \
|
||
--name omniroute \
|
||
--restart unless-stopped \
|
||
-p 20128:20128 \
|
||
-v omniroute-data:/app/data \
|
||
diegosouzapw/omniroute:latest
|
||
```
|
||
|
||
**Met omgevingsbestand:**
|
||
|
||
```bash
|
||
# Copy and edit .env first
|
||
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
|
||
```
|
||
|
||
** Docker Compose gebruiken:**
|
||
|
||
```bash
|
||
# Base profile (no CLI tools)
|
||
docker compose --profile base up -d
|
||
|
||
# CLI profile (Claude Code, Codex, OpenClaw built-in)
|
||
docker compose --profile cli up -d
|
||
```
|
||
|
||
| Afbeelding | Label | Maat | Beschrijving |
|
||
| ------------------------ | -------- | ------ | ------------------------- |
|
||
| `diegosouzapw/omniroute` | `latest` | ~250MB | Nieuwste stabiele release |
|
||
| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Huidige versie |
|
||
|
||
---
|
||
|
||
---
|
||
|
||
## 🖥️ Desktop App — Offline & Always-On
|
||
|
||
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
|
||
|
||
- 🖥️ **Native Window** — Dedicated app window with system tray integration
|
||
- 🔄 **Auto-Start** — Launch OmniRoute on system login
|
||
- 🔔 **Native Notifications** — Get alerts for quota exhaustion or provider issues
|
||
- ⚡ **One-Click Install** — NSIS (Windows), DMG (macOS), AppImage (Linux)
|
||
- 🌐 **Offline Mode** — Works fully offline with bundled server
|
||
|
||
```bash
|
||
npm run electron:dev # Development mode
|
||
npm run electron:build # Current platform
|
||
npm run electron:build:win # Windows (.exe)
|
||
npm run electron:build:mac # macOS (.dmg)
|
||
npm run electron:build:linux # Linux (.AppImage)
|
||
```
|
||
|
||
📖 Full documentation: [`electron/README.md`](electron/README.md)
|
||
|
||
---
|
||
|
||
## 💰 Prijzen in één oogopslag
|
||
|
||
| Niveau | Aanbieder | Kosten | Quotum opnieuw instellen | Beste voor |
|
||
| ------------------ | ----------------- | ------------------------- | ------------------------ | -------------------------- |
|
||
| **💳 ABONNEMENT** | Claude Code (Pro) | $ 20/maand | 5u + wekelijks | Al geabonneerd |
|
||
| | Codex (Plus/Pro) | $ 20-200/maand | 5u + wekelijks | OpenAI-gebruikers |
|
||
| | Tweeling CLI | **GRATIS** | 180K/maand + 1K/dag | Iedereen! |
|
||
| | GitHub-copiloot | $ 10-19/maand | Maandelijks | GitHub-gebruikers |
|
||
| **🔑 API-SLEUTEL** | NVIDIA NIM | **GRATIS** (1000 credits) | Eenmalig | Gratis niveautesten |
|
||
| | DeepSeek | Betalen per gebruik | Geen | Beste prijs/kwaliteit |
|
||
| | Groq | Gratis niveau + betaald | Tarief beperkt | Ultrasnelle gevolgtrekking |
|
||
| | xAI (Grok) | Betalen per gebruik | Geen | Grok-modellen |
|
||
| | Mistral | Gratis niveau + betaald | Tarief beperkt | Europese AI |
|
||
| | OpenRouter | Betalen per gebruik | Geen | 100+ modellen |
|
||
| **💰GOEDKOOP** | GLM-4.7 | $ 0,6/1 miljoen | Dagelijks 10.00 uur | Budgetback-up |
|
||
| | MiniMax M2.1 | $ 0,2/1 miljoen | 5-uurs rollen | Goedkoopste optie |
|
||
| | Kimi K2 | $ 9/maand plat | 10 miljoen tokens/maand | Voorspelbare kosten |
|
||
| **🆓 GRATIS** | iFlow | $0 | Onbeperkt | 8 modellen gratis |
|
||
| | Qwen | $0 | Onbeperkt | 3 modellen gratis |
|
||
| | Kiro | $0 | Onbeperkt | Claude vrij |
|
||
|
||
**💡 Pro-tip:** Begin met Gemini CLI (180K gratis/maand) + iFlow (onbeperkt gratis) combo = $ 0 kosten!
|
||
|
||
---
|
||
|
||
## 🎯 Gebruiksscenario's
|
||
|
||
### Geval 1: "Ik heb een Claude Pro-abonnement"
|
||
|
||
**Probleem:** Quotum verloopt ongebruikt, snelheidslimieten tijdens intensief coderen
|
||
|
||
```
|
||
Combo: "maximize-claude"
|
||
1. cc/claude-opus-4-6 (use subscription fully)
|
||
2. glm/glm-4.7 (cheap backup when quota out)
|
||
3. if/kimi-k2-thinking (free emergency fallback)
|
||
|
||
Monthly cost: $20 (subscription) + ~$5 (backup) = $25 total
|
||
vs. $20 + hitting limits = frustration
|
||
```
|
||
|
||
### Geval 2: "Ik wil geen kosten"
|
||
|
||
**Probleem:** Ik kan geen abonnementen betalen, heb betrouwbare AI-codering nodig
|
||
|
||
```
|
||
Combo: "free-forever"
|
||
1. gc/gemini-3-flash (180K free/month)
|
||
2. if/kimi-k2-thinking (unlimited free)
|
||
3. qw/qwen3-coder-plus (unlimited free)
|
||
|
||
Monthly cost: $0
|
||
Quality: Production-ready models
|
||
```
|
||
|
||
### Geval 3: "Ik heb 24/7 codering nodig, geen onderbrekingen"
|
||
|
||
**Probleem:** Deadlines, downtime is niet mogelijk
|
||
|
||
```
|
||
Combo: "always-on"
|
||
1. cc/claude-opus-4-6 (best quality)
|
||
2. cx/gpt-5.2-codex (second subscription)
|
||
3. glm/glm-4.7 (cheap, resets daily)
|
||
4. minimax/MiniMax-M2.1 (cheapest, 5h reset)
|
||
5. if/kimi-k2-thinking (free unlimited)
|
||
|
||
Result: 5 layers of fallback = zero downtime
|
||
```
|
||
|
||
### Case 4: "Ik wil GRATIS AI in OpenClaw"
|
||
|
||
**Probleem:** AI-assistent nodig in berichtenapps, geheel gratis
|
||
|
||
```
|
||
Combo: "openclaw-free"
|
||
1. if/glm-4.7 (unlimited free)
|
||
2. if/minimax-m2.1 (unlimited free)
|
||
3. if/kimi-k2-thinking (unlimited free)
|
||
|
||
Monthly cost: $0
|
||
Access via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 Belangrijkste kenmerken
|
||
|
||
### 🧠 Kernroutering en intelligentie
|
||
|
||
| Kenmerk | Wat het doet |
|
||
| ------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
||
| 🎯 **Slimme terugval op 4 niveaus** | Autoroute: Abonnement → API-sleutel → Goedkoop → Gratis |
|
||
| 📊 **Realtime quota bijhouden** | Live tokentelling + reset-aftelling per provider |
|
||
| 🔄 **Formaatvertaling** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro naadloos + responsopschoning |
|
||
| 👥 **Ondersteuning voor meerdere accounts** | Meerdere accounts per aanbieder met intelligente selectie |
|
||
| 🔄 **Automatische tokenvernieuwing** | OAuth-tokens worden automatisch vernieuwd bij nieuwe poging |
|
||
| 🎨 **Aangepaste combo's** | 6 strategieën: eerst vullen, round-robin, p2c, willekeurig, minst gebruikt, kostengeoptimaliseerd |
|
||
| 🧩 **Aangepaste modellen** | Voeg elke model-ID toe aan elke provider |
|
||
| 🌐 **Wildcard-router** | Stuur `provider/*` patronen dynamisch naar elke provider |
|
||
| 🧠 **Denkbudget** | Passthrough-, automatische, aangepaste en adaptieve modi voor redeneermodellen |
|
||
| 💬 **Systeempromptinjectie** | Algemene systeemprompt toegepast op alle verzoeken |
|
||
| 📄 **Reacties-API** | Volledige OpenAI Responses API (`/v1/responses`) ondersteuning voor Codex |
|
||
|
||
### 🎵 Multimodale API's
|
||
|
||
| Kenmerk | Wat het doet |
|
||
| ------------------------ | --------------------------------------------------------- |
|
||
| 🖼️ **Beeldgeneratie** | `/v1/images/generations` — 4 providers, 9+ modellen |
|
||
| 📐 **Insluitingen** | `/v1/embeddings` — 6 providers, 9+ modellen |
|
||
| 🎤 **Audiotranscriptie** | `/v1/audio/transcriptions` — Whisper-compatibel |
|
||
| 🔊 **Tekst-naar-spraak** | `/v1/audio/speech` — Audiosynthese van meerdere providers |
|
||
| 🛡️ **Moderaties** | `/v1/moderations` — Veiligheidscontroles van inhoud |
|
||
| 🔀 **Herschikking** | `/v1/rerank` — Herschikking van documentrelevantie |
|
||
|
||
### 🛡️ Veerkracht en veiligheid
|
||
|
||
| Kenmerk | Wat het doet |
|
||
| ------------------------------------- | ---------------------------------------------------------------------------------------- |
|
||
| 🔌 **Stroomonderbreker** | Automatisch openen/sluiten per provider met configureerbare drempels |
|
||
| 🛡️ **Anti-donderende kudde** | Mutex + semafoorsnelheidslimiet voor API-sleutelproviders |
|
||
| 🧠 **Semantische cache** | Tweelaagse cache (handtekening + semantisch) verlaagt de kosten en latentie |
|
||
| ⚡ **Idempotentie aanvragen** | 5s ontdubbelingsvenster voor dubbele verzoeken |
|
||
| 🔒 **TLS-vingerafdrukspoofing** | Omzeil TLS-gebaseerde botdetectie via wreq-js |
|
||
| 🌐 **IP-filtering** | Toelatingslijst/blokkeerlijst voor API-toegangscontrole |
|
||
| 📊 **Bewerkbare tarieflimieten** | Configureerbare RPM, minimale tussenruimte en maximale gelijktijdigheid op systeemniveau |
|
||
| 🛡 **API-eindpuntbescherming** | Auth-gating + providerblokkering voor het `/models` eindpunt |
|
||
| 🔒 **Proxyzichtbaarheid** | Kleurgecodeerde badges: 🟢 wereldwijd, 🟡 provider, 🔵 per verbinding met IP-display |
|
||
| 🌐 **Proxyconfiguratie op 3 niveaus** | Configureer proxy's op globaal, per provider of per verbindingsniveau |
|
||
|
||
### 📊 Waarneembaarheid en analyse
|
||
|
||
| Kenmerk | Wat het doet |
|
||
| ------------------------------------------------- | ------------------------------------------------------------------------------------------- |
|
||
| 📝 **Logboekregistratie aanvragen** | Foutopsporingsmodus met volledige aanvraag-/antwoordlogboeken |
|
||
| 💾 **SQLite Proxy-logboeken** | Aanhoudende proxylogboeken overleven het opnieuw opstarten van de server |
|
||
| 📊 **Analytics-dashboard** | Recharts-aangedreven: statistische kaarten, modelgebruiksgrafiek, providertabel |
|
||
| 📈 **Voortgang bijhouden** | SSE-voortgangsgebeurtenissen aanmelden voor streaming |
|
||
| 🧪 **LLM-evaluaties** | Gouden settesten met 4 wedstrijdstrategieën |
|
||
| 🔍 **Telemetrie aanvragen** | p50/p95/p99 latentie-aggregatie + X-Request-Id-tracering |
|
||
| 📋 **Logdashboard** | Uniforme pagina met 4 tabbladen: aanvraaglogboeken, proxylogboeken, auditlogboeken, console |
|
||
| 🖥️ **Consolelogviewer** | Realtime viewer in terminalstijl met niveaufilter, zoeken, automatisch scrollen |
|
||
| 📑 **Op bestanden gebaseerde logboekregistratie** | Console-interceptor legt alle uitvoer vast naar JSON-logbestand met rotatie |
|
||
| 🏥 **Gezondheidsdashboard** | Systeemuptime, status van stroomonderbrekers, uitsluitingen, cachestatistieken |
|
||
| 💰 **Kosten bijhouden** | Budgetbeheer + prijsconfiguratie per model |
|
||
|
||
### ☁️ Implementatie en synchronisatie
|
||
|
||
| Kenmerk | Wat het doet |
|
||
| ----------------------------- | ------------------------------------------------------------------------------- |
|
||
| 💾 **Cloudsynchronisatie** | Synchroniseer de configuratie op verschillende apparaten via Cloudflare Workers |
|
||
| 🌐 **Overal implementeren** | Localhost, VPS, Docker, Cloudflare Workers |
|
||
| 🔑 **API-sleutelbeheer** | Genereer, roteer en bereik API-sleutels per provider |
|
||
| 🧙 **Onboarding-wizard** | Begeleide installatie in 4 stappen voor nieuwe gebruikers |
|
||
| 🔧 **CLI Tools-dashboard** | Configureer met één klik Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
||
| 🔄 **DB-back-ups** | Automatische back-up, herstel, export en import voor alle instellingen |
|
||
| 🌐 **Internationalisering** | Volledige i18n met next-intl — Engels + Portugees (Brazilië) ondersteuning |
|
||
| 🌍 **Taalkiezer** | Wereldbolpictogram in koptekst voor realtime taalwisseling (🇺🇸/🇧🇷) |
|
||
| 📂 **Aangepaste gegevensmap** | `DATA_DIR` env var om standaard `~/.omniroute` opslagpad te overschrijven |
|
||
|
||
<details>
|
||
<summary><b>📖 Functiedetails</b></summary>
|
||
|
||
### 🎯 Slimme terugval op 4 niveaus
|
||
|
||
Creëer combo's met automatische terugval:
|
||
|
||
```
|
||
Combo: "my-coding-stack"
|
||
1. cc/claude-opus-4-6 (your subscription)
|
||
2. nvidia/llama-3.3-70b (free NVIDIA API)
|
||
3. glm/glm-4.7 (cheap backup, $0.6/1M)
|
||
4. if/kimi-k2-thinking (free fallback)
|
||
|
||
→ Auto switches when quota runs out or errors occur
|
||
```
|
||
|
||
### 📊 Realtime quota bijhouden
|
||
|
||
- Tokenverbruik per aanbieder
|
||
- Aftellen resetten (5 uur, dagelijks, wekelijks)
|
||
- Kostenraming voor betaalde niveaus
|
||
- Maandelijkse uitgavenrapporten
|
||
|
||
### 🔄 Formaatvertaling
|
||
|
||
Naadloze vertaling tussen formaten:
|
||
|
||
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI-reacties**
|
||
- Uw CLI-tool verzendt OpenAI-formaat → OmniRoute vertaalt → Provider ontvangt native formaat
|
||
- Werkt met elke tool die aangepaste OpenAI-eindpunten ondersteunt
|
||
- **Reactieopschoning** — Verwijdert niet-standaardvelden voor strikte OpenAI SDK-compatibiliteit
|
||
- **Rolnormalisatie** — `developer` → `system` voor niet-OpenAI; `system` → `user` voor GLM/ERNIE-modellen
|
||
- **Extractie van Think-tags** — `<think>` blokken → `reasoning_content` voor denkmodellen
|
||
- **Gestructureerde uitvoer** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
|
||
|
||
### 👥 Ondersteuning voor meerdere accounts
|
||
|
||
- Voeg meerdere accounts per aanbieder toe
|
||
- Automatische round-robin of op prioriteit gebaseerde routering
|
||
- Terugval naar het volgende account wanneer één het quotum bereikt
|
||
|
||
### 🔄 Automatische tokenvernieuwing
|
||
|
||
- OAuth-tokens worden automatisch vernieuwd voordat ze verlopen
|
||
- Geen handmatige herauthenticatie nodig
|
||
- Naadloze ervaring bij alle providers
|
||
|
||
### 🎨 Aangepaste combo's
|
||
|
||
- Creëer onbeperkte modelcombinaties
|
||
- 6 strategieën: eerst vullen, round-robin, macht van twee keuzes, willekeurig, minst gebruikt, kostengeoptimaliseerd
|
||
- Deel combo's op verschillende apparaten met Cloud Sync
|
||
|
||
### 🏥 Gezondheidsdashboard
|
||
|
||
- Systeemstatus (uptime, versie, geheugengebruik)
|
||
- Status van de stroomonderbrekers per provider (Gesloten/Open/Half-Open)
|
||
- Tarieflimietstatus en actieve uitsluitingen
|
||
- Kenmerkende cachestatistieken
|
||
- Latency-telemetrie (p50/p95/p99) + promptcache
|
||
- Reset de gezondheidsstatus met één klik
|
||
|
||
### 🔧 Vertalerspeeltuin
|
||
|
||
OmniRoute bevat een krachtige ingebouwde Translator Playground met **4 modi** voor het debuggen, testen en monitoren van API-vertalingen:
|
||
|
||
| Modus | Beschrijving |
|
||
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| **💻 Speeltuin** | Directe formaatvertaling: plak de hoofdtekst van een API-verzoek en zie direct hoe OmniRoute deze vertaalt tussen providerformaten (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Bevat voorbeeldsjablonen en automatische detectie van formaten. |
|
||
| **💬 Chattester** | Stuur echte chatverzoeken via OmniRoute en bekijk het volledige overzicht: uw invoer, het vertaalde verzoek, het antwoord van de provider en het vertaalde antwoord terug. Van onschatbare waarde voor het valideren van combo-routering. |
|
||
| **🧪 Proefbank** | Batchtestmodus: definieer meerdere testgevallen met verschillende inputs en verwachte outputs, voer ze allemaal tegelijk uit en vergelijk de resultaten van verschillende providers en modellen. |
|
||
| **📱Livemonitor** | Real-time monitoring van verzoeken: bekijk binnenkomende verzoeken terwijl ze door OmniRoute stromen, bekijk de formaatvertalingen live en identificeer problemen direct. |
|
||
|
||
**Toegang:** Dashboard → Vertaler (zijbalk)
|
||
|
||
### 💾Cloudsynchronisatie
|
||
|
||
- Synchroniseer providers, combo's en instellingen op verschillende apparaten
|
||
- Automatische achtergrondsynchronisatie
|
||
- Veilige gecodeerde opslag
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 📖 Installatiehandleiding
|
||
|
||
<details>
|
||
<summary><b>💳 Abonnementaanbieders</b></summary>
|
||
|
||
### Claude-code (Pro/Max)
|
||
|
||
```bash
|
||
Dashboard → Providers → Connect Claude Code
|
||
→ OAuth login → Auto token refresh
|
||
→ 5-hour + weekly quota tracking
|
||
|
||
Models:
|
||
cc/claude-opus-4-6
|
||
cc/claude-sonnet-4-5-20250929
|
||
cc/claude-haiku-4-5-20251001
|
||
```
|
||
|
||
**Pro-tip:** Gebruik Opus voor complexe taken, Sonnet voor snelheid. OmniRoute houdt quota bij per model!
|
||
|
||
### OpenAI-codex (Plus/Pro)
|
||
|
||
```bash
|
||
Dashboard → Providers → Connect Codex
|
||
→ OAuth login (port 1455)
|
||
→ 5-hour + weekly reset
|
||
|
||
Models:
|
||
cx/gpt-5.2-codex
|
||
cx/gpt-5.1-codex-max
|
||
```
|
||
|
||
### Gemini CLI (GRATIS 180K/maand!)
|
||
|
||
```bash
|
||
Dashboard → Providers → Connect Gemini CLI
|
||
→ Google OAuth
|
||
→ 180K completions/month + 1K/day
|
||
|
||
Models:
|
||
gc/gemini-3-flash-preview
|
||
gc/gemini-2.5-pro
|
||
```
|
||
|
||
**Beste waarde:** Enorm gratis niveau! Gebruik dit vóór betaalde niveaus.
|
||
|
||
### GitHub-copiloot
|
||
|
||
```bash
|
||
Dashboard → Providers → Connect GitHub
|
||
→ OAuth via GitHub
|
||
→ Monthly reset (1st of month)
|
||
|
||
Models:
|
||
gh/gpt-5
|
||
gh/claude-4.5-sonnet
|
||
gh/gemini-3-pro
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔑 API-sleutelproviders</b></summary>
|
||
|
||
### NVIDIA NIM (GRATIS 1000 credits!)
|
||
|
||
1. Aanmelden: [build.nvidia.com](https://build.nvidia.com)
|
||
2. Ontvang een gratis API-sleutel (inclusief 1000 inferentiecredits)
|
||
3. Dashboard → Provider toevoegen → NVIDIA NIM:
|
||
- API-sleutel: `nvapi-your-key`
|
||
|
||
**Modellen:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` en nog meer dan 50
|
||
|
||
**Pro-tip:** OpenAI-compatibele API — werkt naadloos samen met de formaatvertaling van OmniRoute!
|
||
|
||
### Diepzoeken
|
||
|
||
1. Aanmelden: [platform.deepseek.com](https://platform.deepseek.com)
|
||
2. Haal de API-sleutel op
|
||
3. Dashboard → Provider toevoegen → DeepSeek
|
||
|
||
**Modellen:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
||
|
||
### Groq (gratis niveau beschikbaar!)
|
||
|
||
1. Aanmelden: [console.groq.com](https://console.groq.com)
|
||
2. Ontvang een API-sleutel (inclusief gratis laag)
|
||
3. Dashboard → Provider toevoegen → Groq
|
||
|
||
**Modellen:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
||
|
||
**Pro-tip:** Ultrasnelle gevolgtrekking — het beste voor realtime coderen!
|
||
|
||
### OpenRouter (meer dan 100 modellen)
|
||
|
||
1. Aanmelden: [openrouter.ai](https://openrouter.ai)
|
||
2. Haal de API-sleutel op
|
||
3. Dashboard → Provider toevoegen → OpenRouter
|
||
|
||
**Modellen:** Krijg toegang tot meer dan 100 modellen van alle grote providers via één API-sleutel.
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>💰 Goedkope providers (back-up)</b></summary>
|
||
|
||
### GLM-4.7 (dagelijkse reset, $0,6/1 miljoen)
|
||
|
||
1. Aanmelden: [Zhipu AI](https://open.bigmodel.cn/)
|
||
2. Haal de API-sleutel op uit het Coderingsplan
|
||
3. Dashboard → API-sleutel toevoegen:
|
||
- Aanbieder: `glm`
|
||
- API-sleutel: `your-key`
|
||
|
||
**Gebruik:** `glm/glm-4.7`
|
||
|
||
**Pro-tip:** Coderingsplan biedt 3× quotum tegen 1/7 kosten! Dagelijks resetten om 10:00 uur.
|
||
|
||
### MiniMax M2.1 (5 uur resetten, $0,20/1M)
|
||
|
||
1. Aanmelden: [MiniMax](https://www.minimax.io/)
|
||
2. Haal de API-sleutel op
|
||
3. Dashboard → API-sleutel toevoegen
|
||
|
||
**Gebruik:** `minimax/MiniMax-M2.1`
|
||
|
||
**Pro-tip:** Goedkoopste optie voor lange context (1 miljoen tokens)!
|
||
|
||
### Kimi K2 ($9/maand vast)
|
||
|
||
1. Abonneer je: [Moonshot AI](https://platform.moonshot.ai/)
|
||
2. Haal de API-sleutel op
|
||
3. Dashboard → API-sleutel toevoegen
|
||
|
||
**Gebruik:** `kimi/kimi-latest`
|
||
|
||
**Pro-tip:** Vaste $ 9/maand voor 10 miljoen tokens = $ 0,90/1 miljoen effectieve kosten!
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🆓 GRATIS providers (noodback-up)</b></summary>
|
||
|
||
### iFlow (8 GRATIS modellen)
|
||
|
||
```bash
|
||
Dashboard → Connect iFlow
|
||
→ iFlow OAuth login
|
||
→ Unlimited usage
|
||
|
||
Models:
|
||
if/kimi-k2-thinking
|
||
if/qwen3-coder-plus
|
||
if/glm-4.7
|
||
if/minimax-m2
|
||
if/deepseek-r1
|
||
```
|
||
|
||
### Qwen (3 GRATIS modellen)
|
||
|
||
```bash
|
||
Dashboard → Connect Qwen
|
||
→ Device code authorization
|
||
→ Unlimited usage
|
||
|
||
Models:
|
||
qw/qwen3-coder-plus
|
||
qw/qwen3-coder-flash
|
||
```
|
||
|
||
### Kiro (Claude GRATIS)
|
||
|
||
```bash
|
||
Dashboard → Connect Kiro
|
||
→ AWS Builder ID or Google/GitHub
|
||
→ Unlimited usage
|
||
|
||
Models:
|
||
kr/claude-sonnet-4.5
|
||
kr/claude-haiku-4.5
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🎨 Combo's maken</b></summary>
|
||
|
||
### Voorbeeld 1: Maximaliseer abonnement → Goedkope back-up
|
||
|
||
```
|
||
Dashboard → Combos → Create New
|
||
|
||
Name: premium-coding
|
||
Models:
|
||
1. cc/claude-opus-4-6 (Subscription primary)
|
||
2. glm/glm-4.7 (Cheap backup, $0.6/1M)
|
||
3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
|
||
|
||
Use in CLI: premium-coding
|
||
```
|
||
|
||
### Voorbeeld 2: Alleen gratis (geen kosten)
|
||
|
||
```
|
||
Name: free-combo
|
||
Models:
|
||
1. gc/gemini-3-flash-preview (180K free/month)
|
||
2. if/kimi-k2-thinking (unlimited)
|
||
3. qw/qwen3-coder-plus (unlimited)
|
||
|
||
Cost: $0 forever!
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>🔧 CLI-integratie</b></summary>
|
||
|
||
### Cursor-IDE
|
||
|
||
```
|
||
Settings → Models → Advanced:
|
||
OpenAI API Base URL: http://localhost:20128/v1
|
||
OpenAI API Key: [from OmniRoute dashboard]
|
||
Model: cc/claude-opus-4-6
|
||
```
|
||
|
||
### Claude-code
|
||
|
||
Gebruik de pagina **CLI Tools** in het dashboard voor configuratie met één klik, of bewerk `~/.claude/settings.json` handmatig.
|
||
|
||
### Codex-CLI
|
||
|
||
```bash
|
||
export OPENAI_BASE_URL="http://localhost:20128"
|
||
export OPENAI_API_KEY="your-omniroute-api-key"
|
||
|
||
codex "your prompt"
|
||
```
|
||
|
||
### Open Klauw
|
||
|
||
**Optie 1 — Dashboard (aanbevolen):**
|
||
|
||
```
|
||
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
|
||
```
|
||
|
||
**Optie 2 — Handmatig:** Bewerk `~/.openclaw/openclaw.json`:
|
||
|
||
```json
|
||
{
|
||
"models": {
|
||
"providers": {
|
||
"omniroute": {
|
||
"baseUrl": "http://127.0.0.1:20128/v1",
|
||
"apiKey": "sk_omniroute",
|
||
"api": "openai-completions"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
> **Opmerking:** OpenClaw werkt alleen met lokale OmniRoute. Gebruik `127.0.0.1` in plaats van `localhost` om IPv6-resolutieproblemen te voorkomen.
|
||
|
||
### Cline / Doorgaan / RooCode
|
||
|
||
```
|
||
Settings → API Configuration:
|
||
Provider: OpenAI Compatible
|
||
Base URL: http://localhost:20128/v1
|
||
API Key: [from OmniRoute dashboard]
|
||
Model: if/kimi-k2-thinking
|
||
```
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 📊 Beschikbare modellen
|
||
|
||
<details>
|
||
<summary><b>Bekijk alle beschikbare modellen</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/`)** - GRATIS:
|
||
|
||
- `gc/gemini-3-flash-preview`
|
||
- `gc/gemini-2.5-pro`
|
||
|
||
**GitHub-copiloot (`gh/`)**:
|
||
|
||
- `gh/gpt-5`
|
||
- `gh/claude-4.5-sonnet`
|
||
|
||
**NVIDIA NIM (`nvidia/`)** - GRATIS tegoeden:
|
||
|
||
- `nvidia/llama-3.3-70b-instruct`
|
||
- `nvidia/mistral-7b-instruct`
|
||
- 50+ meer modellen op [build.nvidia.com](https://build.nvidia.com)
|
||
|
||
**GLM (`glm/`)** - $ 0,6/1 miljoen:
|
||
|
||
- `glm/glm-4.7`
|
||
|
||
**MiniMax (`minimax/`)** - $ 0,2/1 miljoen:
|
||
|
||
- `minimax/MiniMax-M2.1`
|
||
|
||
**iFlow (`if/`)** - GRATIS:
|
||
|
||
- `if/kimi-k2-thinking`
|
||
- `if/qwen3-coder-plus`
|
||
- `if/deepseek-r1`
|
||
- `if/glm-4.7`
|
||
- `if/minimax-m2`
|
||
|
||
**Qwen (`qw/`)** - GRATIS:
|
||
|
||
- `qw/qwen3-coder-plus`
|
||
- `qw/qwen3-coder-flash`
|
||
|
||
**Kiro (`kr/`)** - GRATIS:
|
||
|
||
- `kr/claude-sonnet-4.5`
|
||
- `kr/claude-haiku-4.5`
|
||
|
||
**OpenRouter (`or/`)** - 100+ modellen:
|
||
|
||
- `or/anthropic/claude-4-sonnet`
|
||
- `or/google/gemini-2.5-pro`
|
||
- Elk model vanaf [openrouter.ai/models](https://openrouter.ai/models)
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 🧪 Evaluaties (Evals)
|
||
|
||
OmniRoute bevat een ingebouwd evaluatieframework om de LLM-responskwaliteit te testen aan de hand van een gouden set. U kunt deze openen via **Analytics → Evaluaties** in het dashboard.
|
||
|
||
### Ingebouwde gouden set
|
||
|
||
De vooraf geladen "OmniRoute Golden Set" bevat 10 testcases die betrekking hebben op:
|
||
|
||
- Groeten, wiskunde, aardrijkskunde, codegeneratie
|
||
- Naleving van JSON-formaat, vertaling, prijsverlaging
|
||
- Veiligheidsweigering (schadelijke inhoud), tellen, booleaanse logica
|
||
|
||
### Evaluatiestrategieën
|
||
|
||
| Strategie | Beschrijving | Voorbeeld |
|
||
| ---------- | --------------------------------------------------------------------- | -------------------------------- |
|
||
| `exact` | De uitvoer moet exact overeenkomen met | `"4"` |
|
||
| `contains` | De uitvoer moet een subtekenreeks bevatten (niet hoofdlettergevoelig) | `"Paris"` |
|
||
| `regex` | Uitvoer moet overeenkomen met regex-patroon | `"1.*2.*3"` |
|
||
| `custom` | Aangepaste JS-functie retourneert waar/onwaar | `(output) => output.length > 10` |
|
||
|
||
---
|
||
|
||
## 🔐 OAuth em Servidor Remoto (OAuth-installatie op afstand)
|
||
|
||
<a name="oauth-em-servidor-remoto"></a>
|
||
|
||
> **⚠️ BELANGRIJK voor gebruik met OmniRoute op VPS/Docker/server op afstand**
|
||
|
||
### Waarom werkt OAuth met Antigravity / Gemini CLI op externe servers?
|
||
|
||
Deze bewijzen **Antigravity** en **Gemini CLI** gebruiken **Google OAuth 2.0** voor authenticatie. O Google vraagt dat `redirect_uri` geen OAuth-stroom gebruikt **exatamente** een van de URI's vóór de kadaster zonder toepassing van Google Cloud Console.
|
||
|
||
Omdat OAuth geen OmniRoute heeft geregistreerd, is dit **apenas para `localhost`**. Wanneer u OmniRoute op een externe server opent (bijvoorbeeld: `https://omniroute.meuservidor.com`), of Google een authenticatie aanvraagt:
|
||
|
||
```
|
||
Error 400: redirect_uri_mismatch
|
||
```
|
||
|
||
### Oplossing: Configureer uw eigen OAuth-credenciais
|
||
|
||
U kunt precies zien hoe **OAuth 2.0 Client ID** geen Google Cloud Console heeft met een URI van zijn server.
|
||
|
||
#### Passo een passo
|
||
|
||
**1. Toegang tot Google Cloud Console**
|
||
|
||
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
|
||
|
||
**2. Nieuwe OAuth 2.0 client-ID**
|
||
|
||
- Klik op **"+ Credentials aanmaken"** → **"OAuth-client-ID"**
|
||
- Applicatietip: **"Webapplicatie"**
|
||
- Nome: escolha qualquer nome (bijvoorbeeld: `OmniRoute Remote`)
|
||
|
||
**3. Adicione als geautoriseerde omleidings-URI's**
|
||
|
||
Geen campagne **"Geautoriseerde omleidings-URI's"**, aanbevolen:
|
||
|
||
```
|
||
https://seu-servidor.com/callback
|
||
```
|
||
|
||
> Vervang `seu-servidor.com` door de domicilie of het IP-adres van uw server (inclusief een noodzakelijke poort, bijvoorbeeld: `http://45.33.32.156:20128/callback`).
|
||
|
||
**4. Bewaar en kopieer als credenciais**
|
||
|
||
U kunt ook op Google klikken op **Client-ID** en **Clientgeheim**.
|
||
|
||
**5. Configureer als variáveis de ambiente**
|
||
|
||
Geen `.env` (of de verschillende omgevingen van Docker):
|
||
|
||
```bash
|
||
# Para Antigravity:
|
||
ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
|
||
ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
|
||
|
||
# Para Gemini CLI:
|
||
GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
|
||
GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
|
||
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
|
||
```
|
||
|
||
**6. Reinicie van OmniRoute**
|
||
|
||
```bash
|
||
# Se usando npm:
|
||
npm run dev
|
||
|
||
# Se usando Docker:
|
||
docker restart omniroute
|
||
```
|
||
|
||
**7. Nieuwe verbinding**
|
||
|
||
Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
|
||
|
||
Nadat Google de juiste verwijzing naar `https://seu-servidor.com/callback` heeft gemaakt, is deze autenticaal functioneel geworden.
|
||
|
||
---
|
||
|
||
### Tijdelijke tijdelijke oplossing (sem credenciais próprias configureren)
|
||
|
||
Als u geen geloofwaardige geloofwaardigheid meer heeft, is het mogelijk om de stroom **handleiding van de URL** te gebruiken:
|
||
|
||
1. OmniRoute gebruikt een autorisatie-URL van Google
|
||
2. Als u de autorisatie heeft gegeven, zal Google de doorverwijzing naar `localhost` uitvoeren (die geen externe service biedt)
|
||
3. **Kopieer een volledige URL** door de browser van uw browser (het bericht dat de pagina niet verder gaat)
|
||
4. Cole essa URL is niet beschikbaar op de verbindingswijze van OmniRoute
|
||
5. Klik op **"Verbinden"**
|
||
|
||
> Deze tijdelijke oplossing werkt door de autorisatiecode van de URL en is onafhankelijk van het omleiden naar uw autorisatie of niet.
|
||
|
||
---
|
||
|
||
## 🐛 Problemen oplossen
|
||
|
||
<details>
|
||
<summary><b>Klik om de probleemoplossingsgids uit te vouwen</b></summary>
|
||
|
||
**"Taalmodel heeft geen berichten verstrekt"**
|
||
|
||
- Providerquotum opgebruikt → Controleer dashboardquotumtracker
|
||
- Oplossing: gebruik combo-fallback of schakel over naar een goedkoper niveau
|
||
|
||
**Snelheidslimiet**
|
||
|
||
- Abonnementquotum op → Terugval op GLM/MiniMax
|
||
- Combinatie toevoegen: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
||
|
||
**OAuth-token verlopen**
|
||
|
||
- Automatisch vernieuwd door OmniRoute
|
||
- Als de problemen aanhouden: Dashboard → Provider → Opnieuw verbinding maken
|
||
|
||
**Hoge kosten**
|
||
|
||
- Controleer gebruiksstatistieken in Dashboard → Kosten
|
||
- Schakel het primaire model over naar GLM/MiniMax
|
||
- Gebruik de gratis laag (Gemini CLI, iFlow) voor niet-kritieke taken
|
||
|
||
**Dashboard opent op verkeerde poort**
|
||
|
||
- Stel `PORT=20128` en `NEXT_PUBLIC_BASE_URL=http://localhost:20128` in
|
||
|
||
**Cloudsynchronisatiefouten**
|
||
|
||
- Controleer of `BASE_URL` verwijst naar uw actieve exemplaar
|
||
- Controleer of `CLOUD_URL` verwijst naar uw verwachte cloudeindpunt
|
||
- Houd `NEXT_PUBLIC_*` waarden afgestemd op de waarden op de server
|
||
|
||
**Eerste login werkt niet**
|
||
|
||
- Controleer `INITIAL_PASSWORD` in `.env`
|
||
- Indien niet ingesteld, is het reservewachtwoord `123456`
|
||
|
||
**Geen verzoeklogboeken**
|
||
|
||
- Stel `ENABLE_REQUEST_LOGS=true` in in `.env`
|
||
|
||
**Verbindingstest toont "Ongeldig" voor OpenAI-compatibele providers**
|
||
|
||
- Veel providers stellen geen `/models` eindpunt beschikbaar
|
||
- OmniRoute v1.0.6+ omvat fallback-validatie via chat-voltooiingen
|
||
- Zorg ervoor dat de basis-URL het achtervoegsel `/v1` bevat
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 🛠️Technische stapel
|
||
|
||
- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ wordt **niet ondersteund** — `better-sqlite3` native binaire bestanden zijn incompatibel)
|
||
- **Taal**: TypeScript 5.9 — **100% TypeScript** voor `src/` en `open-sse/` (v1.0.6)
|
||
- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
|
||
- **Database**: LowDB (JSON) + SQLite (domeinstatus + proxylogboeken)
|
||
- **Streaming**: door de server verzonden gebeurtenissen (SSE)
|
||
- **Auth**: OAuth 2.0 (PKCE) + JWT + API-sleutels
|
||
- **Testen**: Node.js-testloper (368+ unit-tests)
|
||
- **CI/CD**: GitHub-acties (automatische npm-publicatie + Docker Hub bij release)
|
||
- **Website**: [omniroute.online](https://omniroute.online)
|
||
- **Pakket**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
|
||
- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
|
||
- **Veerkracht**: stroomonderbreker, exponentieel uitstel, anti-donderkudde, TLS-spoofing
|
||
|
||
---
|
||
|
||
## 📖 Documentatie
|
||
|
||
| Document | Beschrijving |
|
||
| -------------------------------------------- | --------------------------------------------------- |
|
||
| [User Guide](docs/USER_GUIDE.md) | Providers, combo's, CLI-integratie, implementatie |
|
||
| [API Reference](docs/API_REFERENCE.md) | Alle eindpunten met voorbeelden |
|
||
| [Troubleshooting](docs/TROUBLESHOOTING.md) | Veelvoorkomende problemen en oplossingen |
|
||
| [Architecture](docs/ARCHITECTURE.md) | Systeemarchitectuur en internals |
|
||
| [Contributing](CONTRIBUTING.md) | Ontwikkelingsopstelling en richtlijnen |
|
||
| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0-specificatie |
|
||
| [Security Policy](SECURITY.md) | Kwetsbaarheidsrapportage en beveiligingspraktijken |
|
||
| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Volledige gids: VM + nginx + Cloudflare-installatie |
|
||
| [Features Gallery](docs/FEATURES.md) | Visuele dashboardrondleiding met screenshots |
|
||
|
||
### 📸 Dashboardvoorbeeld
|
||
|
||
<details>
|
||
<summary><b>Klik om dashboardscreenshots te bekijken</b></summary>
|
||
|
||
| Pagina | Schermafbeelding |
|
||
| --------------------- | ------------------------------------------------- |
|
||
| **Aanbieders** |  |
|
||
| **Combo's** |  |
|
||
| **Analytics** |  |
|
||
| **Gezondheid** |  |
|
||
| **Vertaler** |  |
|
||
| **Instellingen** |  |
|
||
| **CLI-hulpmiddelen** |  |
|
||
| **Gebruikslogboeken** |  |
|
||
| **Eindpunt** |  |
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
## 🗺️ Routekaart
|
||
|
||
OmniRoute heeft **210+ functies gepland** over meerdere ontwikkelingsfasen. Dit zijn de belangrijkste gebieden:
|
||
|
||
| Categorie | Geplande functies | Hoogtepunten |
|
||
| ------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------- |
|
||
| 🧠 **Routing en intelligentie** | 25+ | Routering met de laagste latentie, op tags gebaseerde routering, quota-preflight, P2C-accountselectie |
|
||
| 🔒 **Beveiliging en naleving** | 20+ | SSRF-verharding, cloaking van inloggegevens, snelheidslimiet per eindpunt, scoping van beheersleutels |
|
||
| 📊 **Waarneembaarheid** | 15+ | OpenTelemetry-integratie, realtime quotabewaking, kostenregistratie per model |
|
||
| 🔄 **Provider-integraties** | 20+ | Dynamisch modelregister, cooldowns van providers, Codex met meerdere accounts, parseren van Copilot-quota |
|
||
| ⚡ **Prestaties** | 15+ | Dubbele cachelaag, promptcache, responscache, streaming keepalive, batch-API |
|
||
| 🌐 **Ecosysteem** | 10+ | WebSocket API, configuratie hot-reload, gedistribueerde configuratieopslag, commerciële modus |
|
||
|
||
### 🔜 Binnenkort beschikbaar
|
||
|
||
- 🔗 **OpenCode-integratie** — Native providerondersteuning voor de OpenCode AI-coderings-IDE
|
||
- 🔗 **TRAE-integratie** — Volledige ondersteuning voor het TRAE AI-ontwikkelingsframework
|
||
- 📦 **Batch API** — Asynchrone batchverwerking voor bulkaanvragen
|
||
- 🎯 **Op tags gebaseerde routering** — Routeer verzoeken op basis van aangepaste tags en metagegevens
|
||
- 💰 **Laagste kostenstrategie** — Selecteer automatisch de goedkoopste beschikbare provider
|
||
|
||
> 📝 Volledige functiespecificaties beschikbaar in [link](docs/new-features/) (217 gedetailleerde specificaties)
|
||
|
||
---
|
||
|
||
## 📧 Ondersteuning
|
||
|
||
> 💬 **Word lid van onze community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Krijg hulp, deel tips en blijf op de hoogte.
|
||
|
||
- **Website**: [omniroute.online](https://omniroute.online)
|
||
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
||
- **Problemen**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
||
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
|
||
- **Origineel project**: [9router by decolua](https://github.com/decolua/9router)
|
||
|
||
---
|
||
|
||
## 👥 Bijdragers
|
||
|
||
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
||
|
||
### Hoe u kunt bijdragen
|
||
|
||
1. Fork de repository
|
||
2. Maak uw feature branch (`git checkout -b feature/amazing-feature`)
|
||
3. Leg uw wijzigingen vast (`git commit -m 'Add amazing feature'`)
|
||
4. Duw naar het filiaal (`git push origin feature/amazing-feature`)
|
||
5. Open een Pull Request
|
||
|
||
Zie [CONTRIBUTING.md](CONTRIBUTING.md) voor gedetailleerde richtlijnen.
|
||
|
||
### Er wordt een nieuwe versie uitgebracht
|
||
|
||
```bash
|
||
# Create a release — npm publish happens automatically
|
||
gh release create v1.0.6 --title "v1.0.6" --generate-notes
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Sterrengeschiedenis
|
||
|
||
<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>
|
||
|
||
---
|
||
|
||
## 🙏 Dankbetuigingen
|
||
|
||
Speciale dank aan **[9router](https://github.com/decolua/9router)** door **[decolua](https://github.com/decolua)** — het originele project dat deze vork inspireerde. OmniRoute bouwt voort op die ongelooflijke basis met extra functies, multimodale API's en een volledige TypeScript-herschrijving.
|
||
|
||
Speciale dank aan **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — de originele Go-implementatie die deze JavaScript-port inspireerde.
|
||
|
||
---
|
||
|
||
## 📄 Licentie
|
||
|
||
MIT-licentie - zie [LICENSE](LICENSE) voor details.
|
||
|
||
---
|
||
|
||
---
|
||
|
||
## 🇧🇷 OmniRoute — Gateway de IA Gratis
|
||
|
||
<a name="-omniroute--gateway-de-ia-gratuito"></a>
|
||
|
||
### Nunca de coder. Intelligente rotatie voor **gratis IA-modellen en klantgerichte** met automatische terugval.
|
||
|
||
_Seu proxy universal de API - een eindpunt, 36+ tests, geen downtime._
|
||
|
||
### 🌐 Internacionalização (i18n)
|
||
|
||
Het dashboard ondersteunt **meerdere uitdrukkingen** door OmniRoute. Uiteindelijk wordt dit afgewezen:
|
||
|
||
| Idioom | Código | Staat |
|
||
| ----------------------- | ------- | ----------- |
|
||
| 🇺🇸 Engels | `en` | ✅ Compleet |
|
||
| 🇧🇷 Português (Brazilië) | `pt-BR` | ✅ Compleet |
|
||
|
||
**Para trocar o idioma:** Clique no seletor de idioma (🇺🇸 EN) no header do dashboard → selectie van idioom desejado.
|
||
|
||
**Voor een nieuw idioom:**
|
||
|
||
1. Roep `src/i18n/messages/{codigo}.json` op `en.json`
|
||
2. Voeg een code toe aan `src/i18n/config.ts` → `LOCALES` en `LANGUAGES`
|
||
3. Reinicie of dienstverlener
|
||
|
||
### ⚡ Início Rápido
|
||
|
||
```bash
|
||
# Instalar via npm
|
||
npx omniroute@latest
|
||
|
||
# Ou rodar do código-fonte
|
||
cp .env.example .env
|
||
npm install
|
||
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
|
||
```
|
||
|
||
### 🐳 Docker
|
||
|
||
```bash
|
||
docker run -d --name omniroute -p 20128:20128 diegosouzapw/omniroute:latest
|
||
```
|
||
|
||
### 🔑Funcionalidades Principais
|
||
|
||
- **36+ IA-tests** — Claude, GPT, Gemini, Llama, Qwen, DeepSeek, en meer
|
||
- **Roteamento inteligente** — Automatische terugval tussen de bewijzen
|
||
- **Formaattraditie** — OpenAI ↔ Claude ↔ Gemini automatisch
|
||
- **Multi-conta** — Meerdere contass door bewijs of met intelligente selectie
|
||
- **Semântico cache** — Verlaag de kosten en letaliteit
|
||
- **OAuth automático** — Tokens worden automatisch vernieuwd
|
||
- **Persoonlijke combinaties** — 6 roteamento-indelingen
|
||
- **Dashboard compleet** — Monitoren, logs, analyses, configuraties
|
||
- **CLI Tools** — Configureer Claude Code, Codex, Cursor, Cline als een kliek
|
||
- **100% TypeScript** — Code is limpo en tipado
|
||
|
||
### 📖 Documentação
|
||
|
||
| Document | Beschrijving |
|
||
| ----------------------------------------------- | ------------------------------------------- |
|
||
| [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, combo's, CLI, implementeren |
|
||
| [Referência da API](docs/API_REFERENCE.md) | Alle eindpunten met voorbeelden |
|
||
| [Solução de Problemas](docs/TROUBLESHOOTING.md) | Gemeenschappelijke problemen en oplossingen |
|
||
| [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura en internos do system |
|
||
| [Contribuição](CONTRIBUTING.md) | Opstelling van de ontwikkelingsrichtlijnen |
|
||
| [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | Volledige versie: VM + nginx + Cloudflare |
|
||
|
||
### 📧 Steun
|
||
|
||
> 💬 **Entre para a comunidade!** [Grupo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Banden, vergelijkingen en vijf gebeurtenissen.
|
||
|
||
- **Website**: [omniroute.online](https://omniroute.online)
|
||
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
||
- **Problemen**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
<sub>Gebouwd met ❤️ voor ontwikkelaars die 24/7 coderen</sub>
|
||
<br/>
|
||
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
||
</div>
|