You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Every developer using AI tools faces these problems daily. OmniRoute was built to solve them all — from cost overruns to regional blocks, from broken OAuth flows to zero observability.
💸 1. "I pay for an expensive subscription but still get interrupted by limits"
Developers pay $20–200/month for Claude Pro, Codex Pro, or GitHub Copilot. Even paying, quota has a ceiling — 5h of usage, weekly limits, or per-minute rate limits. Mid-coding session, the provider stops responding and the developer loses flow and productivity.
How OmniRoute solves it:
Smart 4-Tier Fallback — If subscription quota runs out, automatically redirects to API Key → Cheap → Free with zero manual intervention
Real-Time Quota Tracking — Shows token consumption in real-time with reset countdown (5h, daily, weekly)
Multi-Account Support — Multiple accounts per provider with auto round-robin — when one runs out, switches to the next
Codex Business Quotas — Business/Team workspace quota monitoring directly in the dashboard
🔌 2. "I need to use multiple providers but each has a different API"
OpenAI uses one format, Claude (Anthropic) uses another, Gemini yet another. If a dev wants to test models from different providers or fallback between them, they need to reconfigure SDKs, change endpoints, deal with incompatible formats. Custom providers (FriendLI, NIM) have non-standard model endpoints.
How OmniRoute solves it:
Unified Endpoint — A single http://localhost:20128/v1 serves as proxy for all 36+ providers
Format Translation — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
Role Normalization — Converts developer → system for non-OpenAI providers; system → user for GLM/ERNIE
Think Tag Extraction — Extracts <think> blocks from models like DeepSeek R1 into standardized reasoning_content
Structured Output for Gemini — json_schema → responseMimeType/responseSchema automatic conversion
stream defaults to false — Aligns with OpenAI spec, avoiding unexpected SSE in Python/Rust/Go SDKs
🌐 3. "My AI provider blocks my region/country"
Providers like OpenAI/Codex block access from certain geographic regions. Users get errors like unsupported_country_region_territory during OAuth and API connections. This is especially frustrating for developers from developing countries.
How OmniRoute solves it:
3-Level Proxy Config — Configurable proxy at 3 levels: global (all traffic), per-provider (one provider only), and per-connection/key
Color-Coded Proxy Badges — Visual indicators: 🟢 global proxy, 🟡 provider proxy, 🔵 connection proxy, always showing the IP
OAuth Token Exchange Through Proxy — OAuth flow also goes through the proxy, solving unsupported_country_region_territory
Connection Tests via Proxy — Connection tests use the configured proxy (no more direct bypass)
SOCKS5 Support — Full SOCKS5 proxy support for outbound routing
TLS Fingerprint Spoofing — Browser-like TLS fingerprint via wreq-js to bypass bot detection
🆓 4. "I want to use AI for coding but I have no money"
Not everyone can pay $20–200/month for AI subscriptions. Students, devs from emerging countries, hobbyists, and freelancers need access to quality models at zero cost.
How OmniRoute solves it:
Free Tier Providers Built-in — Native support for 100% free providers: iFlow (8 unlimited models), Qwen (3 unlimited models), Kiro (Claude for free), Gemini CLI (180K/month free)
Free-Only Combos — Chain gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus = $0/month with zero downtime
NVIDIA NIM Free Credits — 1000 free credits integrated
Cost Optimized Strategy — Routing strategy that automatically chooses the cheapest available provider
🔒 5. "I need to protect my AI gateway from unauthorized access"
When exposing an AI gateway to the network (LAN, VPS, Docker), anyone with the address can consume the developer's tokens/quota. Without protection, APIs are vulnerable to misuse, prompt injection, and abuse.
How OmniRoute solves it:
API Key Management — Generation, rotation, and scoping per provider with a dedicated /dashboard/api-manager page
Model-Level Permissions — Restrict API keys to specific models (openai/*, wildcard patterns), with Allow All/Restrict toggle
API Endpoint Protection — Require a key for /v1/models and block specific providers from the listing
Auth Guard + CSRF Protection — All dashboard routes protected with withAuth middleware + CSRF tokens
Rate Limiter — Per-IP rate limiting with configurable windows
IP Filtering — Allowlist/blocklist for access control
Prompt Injection Guard — Sanitization against malicious prompt patterns
AES-256-GCM Encryption — Credentials encrypted at rest
🛑 6. "My provider went down and I lost my coding flow"
AI providers can become unstable, return 5xx errors, or hit temporary rate limits. If a dev depends on a single provider, they're interrupted. Without circuit breakers, repeated retries can crash the application.
How OmniRoute solves it:
Circuit Breaker per-provider — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open)
🔧 7. "Configuring each AI tool is tedious and repetitive"
Developers use Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Each tool needs a different config (API endpoint, key, model). Reconfiguring when switching providers or models is a waste of time.
How OmniRoute solves it:
CLI Tools Dashboard — Dedicated page with one-click setup for Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
GitHub Copilot Config Generator — Generates chatLanguageModels.json for VS Code with bulk model selection
Onboarding Wizard — Guided 4-step setup for first-time users
One endpoint, all models — Configure http://localhost:20128/v1 once, access 36+ providers
🔑 8. "Managing OAuth tokens from multiple providers is hell"
Claude Code, Codex, Gemini CLI, Copilot — all use OAuth 2.0 with expiring tokens. Developers need to re-authenticate constantly, deal with client_secret is missing, redirect_uri_mismatch, and failures on remote servers. OAuth on LAN/VPS is particularly problematic.
How OmniRoute solves it:
Auto Token Refresh — OAuth tokens refresh in background before expiration
OAuth 2.0 (PKCE) Built-in — Automatic flow for Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
Multi-Account OAuth — Multiple accounts per provider via JWT/ID token extraction
OAuth LAN/Remote Fix — Private IP detection for redirect_uri + manual URL mode for remote servers
OAuth Behind Nginx — Uses window.location.origin for reverse proxy compatibility
Remote OAuth Guide — Step-by-step guide for Google Cloud credentials on VPS/Docker
📊 9. "I don't know how much I'm spending or where"
Developers use multiple paid providers but have no unified view of spending. Each provider has its own billing dashboard, but there's no consolidated view. Unexpected costs can pile up.
How OmniRoute solves it:
Cost Analytics Dashboard — Per-token cost tracking and budget management per provider
Budget Limits per Tier — Spending ceiling per tier that triggers automatic fallback
Per-Model Pricing Configuration — Configurable prices per model
Usage Statistics Per API Key — Request count and last-used timestamp per key
Analytics Dashboard — Stat cards, model usage chart, provider table with success rates and latency
🐛 10. "I can't diagnose errors and problems in AI calls"
When a call fails, the dev doesn't know if it was a rate limit, expired token, wrong format, or provider error. Fragmented logs across different terminals. Without observability, debugging is trial-and-error.
File-Based Logging with Rotation — Console interceptor captures everything to JSON log with size-based rotation
🏗️ 11. "Deploying and maintaining the gateway is complex"
Installing, configuring, and maintaining an AI proxy across different environments (local, VPS, Docker, cloud) is labor-intensive. Problems like hardcoded paths, EACCES on directories, port conflicts, and cross-platform builds add friction.
Docker Compose Profiles — base (no CLI tools) and cli (with Claude Code, Codex, OpenClaw)
Electron Desktop App — Native app for Windows/macOS/Linux with system tray, auto-start, offline mode
Split-Port Mode — API and Dashboard on separate ports for advanced scenarios (reverse proxy, container networking)
Cloud Sync — Config synchronization across devices via Cloudflare Workers
DB Backups — Automatic backup, restore, export and import of all settings
🌍 12. "The interface is English-only and my team doesn't speak English"
Teams in non-English-speaking countries, especially in Latin America, Asia, and Europe, struggle with English-only interfaces. Language barriers reduce adoption and increase configuration errors.
Language Selector — Globe icon in header for real-time switching
🔄 13. "I need more than chat — I need embeddings, images, audio"
AI isn't just chat completion. Devs need to generate images, transcribe audio, create embeddings for RAG, rerank documents, and moderate content. Each API has a different endpoint and format.
How OmniRoute solves it:
Embeddings — /v1/embeddings with 6 providers and 9+ models
Image Generation — /v1/images/generations with 4 providers and 9+ models
Responses API — Full /v1/responses support for Codex
🧪 14. "I have no way to test and compare quality across models"
Developers want to know which model is best for their use case — code, translation, reasoning — but comparing manually is slow. No integrated eval tools exist.
How OmniRoute solves it:
LLM Evaluations — Golden set testing with 10 pre-loaded cases covering greetings, math, geography, code generation, JSON compliance, translation, markdown, safety refusal
4 Match Strategies — exact, contains, regex, custom (JS function)
Translator Playground Test Bench — Batch testing with multiple inputs and expected outputs, cross-provider comparison
Chat Tester — Full round-trip with visual response rendering
Live Monitor — Real-time stream of all requests flowing through the proxy
📈 15. "I need to scale without losing performance"
As request volume grows, without caching the same questions generate duplicate costs. Without idempotency, duplicate requests waste processing. Per-provider rate limits must be respected.
Request Idempotency — 5s deduplication window for identical requests
Rate Limit Detection — Per-provider RPM, min gap, and max concurrent tracking
Editable Rate Limits — Configurable defaults in Settings → Resilience with persistence
API Key Validation Cache — 3-tier cache for production performance
Health Dashboard with Telemetry — p50/p95/p99 latency, cache stats, uptime
🤖 16. "I want to control model behavior globally"
Developers who want all responses in a specific language, with a specific tone, or want to limit reasoning tokens. Configuring this in every tool/request is impractical.
How OmniRoute solves it:
System Prompt Injection — Global prompt applied to all requests
Thinking Budget Validation — Reasoning token allocation control per request (passthrough, auto, custom, adaptive)
6 Routing Strategies — Global strategies that determine how requests are distributed
Wildcard Router — provider/* patterns route dynamically to any provider
Combo Enable/Disable Toggle — Toggle combos directly from the dashboard
Provider Toggle — Enable/disable all connections for a provider with one click
Blocked Providers — Exclude specific providers from /v1/models listing
⚡ Mabilis na Pagsisimula
1. I-install sa buong mundo:
npm install -g omniroute
omniroute
🎉 Magbubukas ang dashboard sa http://localhost:20128
Utos
Paglalarawan
omniroute
Simulan ang server (default port 20128)
omniroute --port 3000
Gumamit ng custom na port
omniroute --no-open
Huwag awtomatikong buksan ang browser
omniroute --help
Ipakita ang tulong
2. Ikonekta ang isang LIBRENG provider:
Dashboard → Mga Provider → Ikonekta ang Claude Code o Antigravity → OAuth login → Tapos na!
3. Gamitin sa iyong 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
Iyon na! Magsimulang mag-coding gamit ang LIBRENG mga modelo ng AI.
Alternatibong — tumakbo mula sa pinagmulan:
cp .env.example .env
npm install
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
🐳 Docker
Available ang OmniRoute bilang isang pampublikong larawan ng Docker sa Docker Hub.
🌐 Offline Mode — Works fully offline with bundled server
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)
Magdagdag ng maramihang mga account sa bawat provider
Auto round-robin o priority-based na pagruruta
Fallback sa susunod na account kapag naabot ng isa ang quota
🔄 Auto Token Refresh
Awtomatikong nagre-refresh ang mga token ng OAuth bago mag-expire
Walang kinakailangang manu-manong muling pagpapatotoo
Walang putol na karanasan sa lahat ng provider
🎨 Mga Custom na Combos
Lumikha ng walang limitasyong mga kumbinasyon ng modelo
6 na diskarte: fill-first, round-robin, power-of-two-choices, random, hindi gaanong ginagamit, cost-optimized
Magbahagi ng mga combo sa mga device na may Cloud Sync
🏥 Dashboard ng Kalusugan
Katayuan ng system (uptime, bersyon, paggamit ng memorya)
Mga estado ng circuit breaker bawat provider (Sarado/Bukas/Kalahating Bukas)
Katayuan ng limitasyon sa rate at mga aktibong lockout
Mga istatistika ng cache ng lagda
Latency telemetry (p50/p95/p99) + prompt cache
I-reset ang katayuan ng kalusugan sa isang pag-click
🔧 Palaruan ng Tagasalin
Kasama sa OmniRoute ang isang malakas na built-in na Playground ng Translator na may 4 na mode para sa pag-debug, pagsubok, at pagsubaybay sa mga pagsasalin ng API:
Mode
Paglalarawan
💻 Palaruan
Direktang pagsasalin ng format — i-paste ang anumang katawan ng kahilingan sa API at agad na makita kung paano ito isinasalin ng OmniRoute sa pagitan ng mga format ng provider (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). May kasamang mga halimbawang template at format ng auto-detection.
💬 Chat Tester
Magpadala ng mga totoong kahilingan sa chat sa pamamagitan ng OmniRoute at tingnan ang buong round-trip: ang iyong input, ang isinaling kahilingan, ang tugon ng provider, at ang isinaling tugon pabalik. Napakahalaga para sa pagpapatunay ng combo routing.
🧪 Test Bench
Batch testing mode — tumukoy ng maraming test case na may iba't ibang input at inaasahang output, patakbuhin ang mga ito nang sabay-sabay, at paghambingin ang mga resulta sa mga provider at modelo.
📱 Live Monitor
Real-time na pagsubaybay sa kahilingan — panoorin ang mga papasok na kahilingan habang dumadaloy ang mga ito sa OmniRoute, tingnan ang mga pagsasalin ng format na nangyayari nang live, at tukuyin kaagad ang mga isyu.
Access: Dashboard → Translator (sidebar)
💾 Cloud Sync
I-sync ang mga provider, combo, at mga setting sa mga device
Awtomatikong pag-sync sa background
Secure na naka-encrypt na imbakan
🎯 Use Cases
Case 1: "May subscription ako sa Claude Pro"
Problema: Nag-e-expire ang quota nang hindi nagamit, mga limitasyon sa rate sa panahon ng mabigat na coding
Tandaan: Ang OpenClaw ay gumagana lamang sa lokal na OmniRoute. Gamitin ang 127.0.0.1 sa halip na localhost upang maiwasan ang mga isyu sa paglutas ng IPv6.
Cline / Magpatuloy / RooCode
Settings → API Configuration:
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
API Key: [from OmniRoute dashboard]
Model: if/kimi-k2-thinking
🧪 Mga Pagsusuri (Evals)
Ang OmniRoute ay may kasamang built-in na balangkas ng pagsusuri upang subukan ang kalidad ng pagtugon ng LLM laban sa isang ginintuang hanay. I-access ito sa pamamagitan ng Analytics → Evals sa dashboard.
Built-in na Golden Set
Ang pre-loaded na "OmniRoute Golden Set" ay naglalaman ng 10 test case na sumasaklaw sa:
Pagbati, matematika, heograpiya, pagbuo ng code
Pagsunod sa format ng JSON, pagsasalin, markdown
Pagtanggi sa kaligtasan (nakapipinsalang nilalaman), pagbibilang, lohika ng boolean
Estratehiya sa Pagsusuri
Diskarte
Paglalarawan
Halimbawa
exact
Dapat na eksaktong tumugma ang output
"4"
contains
Ang output ay dapat maglaman ng substring (case-insensitive)
"Paris"
regex
Ang output ay dapat tumugma sa regex pattern
"1.*2.*3"
custom
Ang custom na JS function ay nagbabalik ng true/false
(output) => output.length > 10
🐛 Pag-troubleshoot
Mag-click upang palawakin ang gabay sa pag-troubleshoot
"Ang modelo ng wika ay hindi nagbigay ng mga mensahe"
Naubos na ang quota ng provider → Suriin ang tracker ng quota ng dashboard
Solusyon: Gumamit ng combo fallback o lumipat sa mas murang tier
Paglilimita sa rate
Out na ang quota ng subscription → Fallback sa GLM/MiniMax
Magdagdag ng combo: cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking
Nag-expire ang token ng OAuth
Auto-refresh ng OmniRoute
Kung magpapatuloy ang mga isyu: Dashboard → Provider → Muling kumonekta
Mataas na gastos
Suriin ang mga istatistika ng paggamit sa Dashboard → Mga Gastos
Ilipat ang pangunahing modelo sa GLM/MiniMax
Gumamit ng libreng tier (Gemini CLI, iFlow) para sa mga hindi kritikal na gawain
Nagbubukas ang dashboard sa maling port
Itakda ang PORT=20128 at NEXT_PUBLIC_BASE_URL=http://localhost:20128
Mga error sa cloud sync
I-verify ang BASE_URL na mga puntos sa iyong running instance
I-verify ang CLOUD_URL na mga puntos sa iyong inaasahang cloud endpoint
Panatilihing nakahanay ang mga value ng NEXT_PUBLIC_* sa mga value sa gilid ng server
Hindi gumagana ang unang pag-login
Suriin ang INITIAL_PASSWORD sa .env
Kung hindi nakatakda, ang fallback na password ay 123456
Walang mga log ng kahilingan
Itakda ang ENABLE_REQUEST_LOGS=true sa .env
Ang pagsubok sa koneksyon ay nagpapakita ng "Di-wasto" para sa mga provider na katugma sa OpenAI
Maraming provider ang hindi naglalantad ng /models endpoint
Kasama sa OmniRoute v1.0.6+ ang fallback validation sa pamamagitan ng mga pagkumpleto ng chat
Tiyaking may kasamang /v1 suffix ang base URL
🔐 OAuth em Servidor Remoto (Remote OAuth Setup)
⚠️ MAHALAGA para sa usuários com OmniRoute sa VPS/Docker/servidor remoto
Para sa que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
Os provedores Antigravity at Gemini CLI gamit ang Google OAuth 2.0 para sa autenticação. O Google exige que a redirect_uri usada no fluxo OAuth seja exatamente uma das URIs pré-cadastradas no Google Cloud Console do aplicativo.
Bilang credenciais OAuth embutidas no OmniRoute estão cadastradas apenas para sa localhost. Quando você acessa o OmniRoute em um servidor remoto (hal: https://omniroute.meuservidor.com), o Google rejeita a autenticação com:
Error 400: redirect_uri_mismatch
Solusyon: I-configure ang suas próprias credenciais OAuth
Você precisa criar um OAuth 2.0 Client ID walang Google Cloud Console com a URI do seu servidor.
Espesyal na pasasalamat kay 9router ni decolua — ang orihinal na proyektong nagbigay inspirasyon sa tinidor na ito. Bumubuo ang OmniRoute sa hindi kapani-paniwalang pundasyong iyon na may mga karagdagang feature, multi-modal na API, at buong TypeScript na muling pagsulat.
Espesyal na salamat sa CLIProxyAPI — ang orihinal na pagpapatupad ng Go na nagbigay inspirasyon sa JavaScript port na ito.
📄 Lisensya
Lisensya ng MIT - tingnan ang LICENSE para sa mga detalye.
Built with ❤️ para sa mga developer na nagko-code 24/7 omniroute.online