` ब्लॉक → सोच मॉडल के लिए `reasoning_content`
-- **संरचित आउटपुट** — `json_schema` → मिथुन राशि का `responseMimeType`/`responseSchema`
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
-### 👥 मल्टी-अकाउंट सपोर्ट
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
-- प्रति प्रदाता एकाधिक खाते जोड़ें
-- ऑटो राउंड-रॉबिन या प्राथमिकता-आधारित रूटिंग
-- कोटा पूरा होने पर अगले खाते में फ़ॉलबैक
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
-### 🔄 ऑटो टोकन रिफ्रेश
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
-- OAuth टोकन समाप्ति से पहले स्वचालित रूप से ताज़ा हो जाते हैं
-- किसी मैन्युअल पुन: प्रमाणीकरण की आवश्यकता नहीं है
-- सभी प्रदाताओं के बीच निर्बाध अनुभव
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
-### 🎨 कस्टम कॉम्बो
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
-- असीमित मॉडल संयोजन बनाएं
-- 6 रणनीतियाँ: पहले भरें, राउंड-रॉबिन, दो-विकल्पों की शक्ति, यादृच्छिक, कम से कम उपयोग, लागत-अनुकूलित
-- क्लाउड सिंक के साथ सभी डिवाइसों पर कॉम्बो साझा करें
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
-### 🏥 स्वास्थ्य डैशबोर्ड
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
-- सिस्टम स्थिति (अपटाइम, संस्करण, मेमोरी उपयोग)
-- प्रति प्रदाता सर्किट ब्रेकर की स्थिति (बंद/खुला/आधा खुला)
-- दर सीमा स्थिति और सक्रिय तालाबंदी
-- हस्ताक्षर कैश आँकड़े
-- विलंबता टेलीमेट्री (p50/p95/p99) + शीघ्र कैश
-- एक क्लिक से स्वास्थ्य स्थिति रीसेट करें
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
-### 🔧 अनुवादक खेल का मैदान
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
-ओमनीरूट में डिबगिंग, परीक्षण और एपीआई अनुवादों की निगरानी के लिए **4 मोड** के साथ एक शक्तिशाली अंतर्निहित अनुवादक खेल का मैदान शामिल है:
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
-| मोड | विवरण |
-| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻खेल का मैदान** | प्रत्यक्ष प्रारूप अनुवाद - किसी भी एपीआई अनुरोध निकाय को पेस्ट करें और तुरंत देखें कि ओम्नीरूट प्रदाता प्रारूपों (ओपनएआई ↔ क्लाउड ↔ जेमिनी ↔ रिस्पॉन्स एपीआई) के बीच इसका अनुवाद कैसे करता है। उदाहरण टेम्प्लेट और प्रारूप ऑटो-डिटेक्शन शामिल है। |
-| **💬 चैट परीक्षक** | ओम्निरूट के माध्यम से वास्तविक चैट अनुरोध भेजें और पूरी राउंड-ट्रिप देखें: आपका इनपुट, अनुवादित अनुरोध, प्रदाता प्रतिक्रिया, और अनुवादित प्रतिक्रिया वापस। कॉम्बो रूटिंग को मान्य करने के लिए अमूल्य। |
-| **🧪 टेस्ट बेंच** | बैच परीक्षण मोड - विभिन्न इनपुट और अपेक्षित आउटपुट के साथ कई परीक्षण मामलों को परिभाषित करें, उन सभी को एक साथ चलाएं, और प्रदाताओं और मॉडलों के परिणामों की तुलना करें। |
-| **📱लाइव मॉनिटर** | वास्तविक समय अनुरोध की निगरानी - आने वाले अनुरोधों को ओम्नीरूट के माध्यम से प्रवाहित होते हुए देखें, प्रारूप अनुवाद को लाइव होते हुए देखें, और समस्याओं की तुरंत पहचान करें। |
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
-**पहुँच:** डैशबोर्ड → अनुवादक (साइडबार)
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
-### 💾 क्लाउड सिंक
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
-- सभी डिवाइसों में सिंक प्रदाता, कॉम्बो और सेटिंग्स
-- स्वचालित पृष्ठभूमि सिंक
-- सुरक्षित एन्क्रिप्टेड भंडारण
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
-## 🧪 मूल्यांकन
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
-ओमनीरूट में गोल्डन सेट के मुकाबले एलएलएम प्रतिक्रिया गुणवत्ता का परीक्षण करने के लिए एक अंतर्निहित मूल्यांकन ढांचा शामिल है। डैशबोर्ड में **एनालिटिक्स → इवेल्स** के माध्यम से इसे एक्सेस करें।
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
-### बिल्ट-इन गोल्डन सेट
+## 🎙️ Free Transcription Combo
-प्री-लोडेड "ओम्नीरूट गोल्डन सेट" में 10 परीक्षण मामले शामिल हैं:
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
-- नमस्ते, गणित, भूगोल, कोड जनरेशन
-- JSON प्रारूप अनुपालन, अनुवाद, मार्कडाउन
-- सुरक्षा इनकार (हानिकारक सामग्री), गिनती, बूलियन तर्क
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
-### मूल्यांकन रणनीतियाँ
+**Suggested combo in `/dashboard/combos`:**
-| रणनीति | विवरण | उदाहरण |
-| ---------- | ------------------------------------------------- | -------------------------------- |
-| `exact` | आउटपुट बिल्कुल मेल खाना चाहिए | `"4"` |
-| `contains` | आउटपुट में सबस्ट्रिंग (केस-असंवेदनशील) होना चाहिए | `"Paris"` |
-| `regex` | आउटपुट रेगेक्स पैटर्न से मेल खाना चाहिए | `"1.*2.*3"` |
-| `custom` | कस्टम जेएस फ़ंक्शन सही/गलत लौटाता है | `(output) => output.length > 10` |
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
---
-## 📖 सेटअप गाइड
+## 📖 Setup Guide
-💳 सदस्यता प्रदाता
-
-### क्लाउड कोड (प्रो/मैक्स)
-
-**प्रो टिप:** जटिल कार्यों के लिए ओपस और गति के लिए सॉनेट का उपयोग करें। ओमनीरूट प्रति मॉडल कोटा ट्रैक करता है!
-
-### ओपनएआई कोडेक्स (प्लस/प्रो)
-
-### जेमिनी सीएलआई (मुफ़्त 180K/माह!)
-
-**सर्वोत्तम मूल्य:** विशाल निःशुल्क स्तर! सशुल्क स्तरों से पहले इसका उपयोग करें।
-
-### गिटहब कोपायलट
+### Protocol Setup (MCP + A2A)
-🔑 API कुंजी प्रदाता
+🧩 MCP Setup (Model Context Protocol)
-### एनवीडिया एनआईएम (मुफ़्त 1000 क्रेडिट!)
+Start MCP transport in stdio mode:
-1. साइन अप करें: [build.nvidia.com](https://build.nvidia.com)
-2. निःशुल्क एपीआई कुंजी प्राप्त करें (1000 अनुमान क्रेडिट शामिल)
-3. डैशबोर्ड → प्रदाता जोड़ें → एनवीडिया एनआईएम:
- - एपीआई कुंजी: `nvapi-your-key`
+```bash
+omniroute --mcp
+```
-**मॉडल:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, और 50+ अधिक
+Recommended validation flow:
-**प्रो टिप:** ओपनएआई-संगत एपीआई - ओमनीरूट के प्रारूप अनुवाद के साथ सहजता से काम करता है!
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### डीपसीक
+Useful APIs for automation:
-1. साइन अप करें: [platform.deepseek.com](https://platform.deepseek.com)
-2. एपीआई कुंजी प्राप्त करें
-3. डैशबोर्ड → प्रदाता जोड़ें → डीपसीक
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-**मॉडल:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+
-### ग्रोक (निःशुल्क टियर उपलब्ध!)
+
+🤝 A2A Setup (Agent2Agent)
-1. साइन अप करें: [console.groq.com](https://console.groq.com)
-2. एपीआई कुंजी प्राप्त करें (फ्री टियर शामिल)
-3. डैशबोर्ड → प्रदाता जोड़ें → ग्रोक
+Discover the agent:
-**मॉडल:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-**प्रो टिप:** अल्ट्रा-फास्ट अनुमान - वास्तविक समय कोडिंग के लिए सर्वोत्तम!
+Send a task:
-### ओपनराउटर (100+ मॉडल)
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-1. साइन अप करें: [openrouter.ai](https://openrouter.ai)
-2. एपीआई कुंजी प्राप्त करें
-3. डैशबोर्ड → प्रदाता जोड़ें → ओपनराउटर
+Manage lifecycle:
-**मॉडल:** एक ही एपीआई कुंजी के माध्यम से सभी प्रमुख प्रदाताओं से 100+ मॉडल तक पहुंचें।
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
-💰 सस्ते प्रदाता (बैकअप)
+Operational UI:
-### GLM-4.7 (दैनिक रीसेट, $0.6/1 मिलियन)
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
-1. साइन अप करें: [Zhipu AI](https://open.bigmodel.cn/)
-2. कोडिंग योजना से एपीआई कुंजी प्राप्त करें
-3. डैशबोर्ड → एपीआई कुंजी जोड़ें:
- - प्रदाता: `glm`
- - एपीआई कुंजी: `your-key`
+
-**उपयोग करें:** `glm/glm-4.7`
+
+🧪 End-to-end protocol validation
-**प्रो टिप:** कोडिंग प्लान 1/7 लागत पर 3× कोटा प्रदान करता है! प्रतिदिन सुबह 10:00 बजे रीसेट करें।
+Validate both protocols with real clients:
-### मिनीमैक्स एम2.1 (5 घंटे रीसेट, $0.20/1 मिलियन)
+```bash
+npm run test:protocols:e2e
+```
-1. साइन अप करें: [MiniMax](https://www.minimax.io/)
-2. एपीआई कुंजी प्राप्त करें
-3. डैशबोर्ड → एपीआई कुंजी जोड़ें
+This verifies:
-**उपयोग:** `minimax/MiniMax-M2.1`
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
-**प्रो टिप:** लंबे संदर्भ के लिए सबसे सस्ता विकल्प (1M टोकन)!
+
-### किमी K2 ($9/माह फ्लैट)
+
+💳 Subscription Providers
-1. सदस्यता लें: [Moonshot AI](https://platform.moonshot.ai/)
-2. एपीआई कुंजी प्राप्त करें
-3. डैशबोर्ड → एपीआई कुंजी जोड़ें
+### Claude Code (Pro/Max)
-**उपयोग करें:** `kimi/kimi-latest`
+```bash
+Dashboard → Providers → Connect Claude Code
+→ OAuth login → Auto token refresh
+→ 5-hour + weekly quota tracking
-**प्रो टिप:** 10एम टोकन के लिए निश्चित $9/माह = $0.90/1एम प्रभावी लागत!
+Models:
+ cc/claude-opus-4-6
+ cc/claude-sonnet-4-5-20250929
+ cc/claude-haiku-4-5-20251001
+```
-🆓 मुफ़्त प्रदाता (आपातकालीन बैकअप)
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
-### आईफ्लो (8 मुफ़्त मॉडल)
+### OpenAI Codex (Plus/Pro)
-### क्वेन (3 मुफ़्त मॉडल)
+```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
+```
-🎨 कॉम्बो बनाएं
+#### Codex Account Limit Management (5h + Weekly)
-### उदाहरण 1: सदस्यता अधिकतम करें → सस्ता बैकअप
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
-### उदाहरण 2: केवल निःशुल्क (शून्य लागत)
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
+
+```bash
+Dashboard → Providers → Connect Gemini CLI
+→ Google OAuth
+→ 180K completions/month + 1K/day
+
+Models:
+ gc/gemini-3-flash-preview
+ gc/gemini-2.5-pro
+```
+
+**Best Value:** Huge free tier! Use this before paid tiers.
+
+### GitHub Copilot
+
+```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
+```
+
+
+
+
+🔑 API Key Providers
+
+### NVIDIA NIM (FREE developer access — 70+ models)
+
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
+
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
+
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
+
+### DeepSeek
+
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
+
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+
+### Groq (Free Tier Available!)
+
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
+
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
+
+### OpenRouter (100+ Models)
+
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
+
+**Models:** Access 100+ models from all major providers through a single API key.
+
+
+
+
+💰 Cheap Providers (Backup)
+
+### GLM-4.7 (Daily reset, $0.6/1M)
+
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
+
+**Use:** `glm/glm-4.7`
+
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
+
+### MiniMax M2.1 (5h reset, $0.20/1M)
+
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
+
+**Use:** `minimax/MiniMax-M2.1`
+
+**Pro Tip:** Cheapest option for long context (1M tokens)!
+
+### Kimi K2 ($9/month flat)
+
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
+
+**Use:** `kimi/kimi-latest`
+
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
+
+
+
+
+🆓 FREE Providers (Emergency Backup)
+
+### iFlow (5 FREE models via OAuth)
+
+```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 (4 FREE models via Device Code)
+
+```bash
+Dashboard → Connect Qwen
+→ Device code authorization
+→ Unlimited usage
+
+Models:
+ qw/qwen3-coder-plus
+ qw/qwen3-coder-flash
+```
+
+### Kiro (Claude FREE)
+
+```bash
+Dashboard → Connect Kiro
+→ AWS Builder ID or Google/GitHub
+→ Unlimited usage
+
+Models:
+ kr/claude-sonnet-4.5
+ kr/claude-haiku-4.5
+```
+
+
+
+
+🎨 Create Combos
+
+### Example 1: Maximize Subscription → Cheap Backup
+
+```
+Dashboard → Combos → Create New
+
+Name: premium-coding
+Models:
+ 1. cc/claude-opus-4-6 (Subscription primary)
+ 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
+ 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
+
+Use in CLI: premium-coding
+```
+
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1045,196 +1650,471 @@ Models:
Cost: $0 forever!
```
-🔧 CLI एकीकरण
+
-### कर्सर आईडीई
+
+🔧 CLI Integration
-### क्लाउड कोड
+### Cursor IDE
-एक-क्लिक कॉन्फ़िगरेशन के लिए डैशबोर्ड में **CLI टूल्स** पृष्ठ का उपयोग करें, या `~/.claude/settings.json` को मैन्युअल रूप से संपादित करें।
+```
+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
-### ओपनक्लॉ
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
-**विकल्प 1 - डैशबोर्ड (अनुशंसित):**
+### Codex CLI
-**विकल्प 2 - मैनुअल:** संपादित करें `~/.openclaw/openclaw.json`:
+```bash
+export OPENAI_BASE_URL="http://localhost:20128"
+export OPENAI_API_KEY="your-omniroute-api-key"
-> **ध्यान दें:** ओपनक्लाव केवल स्थानीय ओमनीरूट के साथ काम करता है। IPv6 रिज़ॉल्यूशन समस्याओं से बचने के लिए `localhost` के बजाय `127.0.0.1` का उपयोग करें।
+codex "your prompt"
+```
-### क्लाइन / जारी रखें / रूकोड
+### OpenClaw
+
+**Option 1 — Dashboard (recommended):**
+
+```
+Dashboard → CLI Tools → OpenClaw → Select Model → Apply
+```
+
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
+
+```json
+{
+ "models": {
+ "providers": {
+ "omniroute": {
+ "baseUrl": "http://127.0.0.1:20128/v1",
+ "apiKey": "sk_omniroute",
+ "api": "openai-completions"
+ }
+ }
+ }
+}
+```
+
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
+
+### Cline / Continue / RooCode
+
+```
+Settings → API Configuration:
+ Provider: OpenAI Compatible
+ Base URL: http://localhost:20128/v1
+ API Key: [from OmniRoute dashboard]
+ Model: if/kimi-k2-thinking
+```
+
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
+
---
-## 🐛 समस्या निवारण
+## समस्या निवारण
-समस्या निवारण मार्गदर्शिका का विस्तार करने के लिए क्लिक करें
+
+Click to expand troubleshooting guide
-**"भाषा मॉडल ने संदेश प्रदान नहीं किया"**
+**"Language model did not provide messages"**
-- प्रदाता कोटा समाप्त → डैशबोर्ड कोटा ट्रैकर की जाँच करें
-- समाधान: कॉम्बो फ़ॉलबैक का उपयोग करें या सस्ते स्तर पर स्विच करें
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**दर सीमित करना**
+**Rate limiting**
-- सदस्यता कोटा ख़त्म → GLM/MiniMax पर फ़ॉलबैक
-- कॉम्बो जोड़ें: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**OAuth टोकन समाप्त हो गया**
+**OAuth token expired**
-- ओम्निरूट द्वारा स्वतः ताज़ा
-- यदि समस्या बनी रहती है: डैशबोर्ड → प्रदाता → पुनः कनेक्ट करें
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**उच्च लागत**
+**High costs**
-- डैशबोर्ड → लागत में उपयोग के आँकड़े जाँचें
-- प्राथमिक मॉडल को जीएलएम/मिनीमैक्स पर स्विच करें
-- गैर-महत्वपूर्ण कार्यों के लिए फ्री टियर (मिथुन सीएलआई, आईफ्लो) का उपयोग करें
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**डैशबोर्ड गलत पोर्ट पर खुलता है**
+**Dashboard/API ports are wrong**
-- `PORT=20128` और `NEXT_PUBLIC_BASE_URL=http://localhost:20128` सेट करें
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**क्लाउड सिंक त्रुटियाँ**
+**Cloud sync errors**
-- अपने चल रहे उदाहरण के लिए `BASE_URL` अंक सत्यापित करें
-- अपने अपेक्षित क्लाउड एंडपॉइंट पर `CLOUD_URL` पॉइंट सत्यापित करें
-- `NEXT_PUBLIC_*` मानों को सर्वर-साइड मानों के साथ संरेखित रखें
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**पहला लॉगिन काम नहीं कर रहा**
+**First login not working**
-- `.env` में `INITIAL_PASSWORD` को जांचें
-- यदि सेट नहीं है, तो फ़ॉलबैक पासवर्ड `123456` है
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**कोई अनुरोध लॉग नहीं**
+**No request logs**
-- `.env` में `ENABLE_REQUEST_LOGS=true` सेट करें
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**कनेक्शन परीक्षण OpenAI-संगत प्रदाताओं के लिए "अमान्य" दिखाता है**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- कई प्रदाता `/models` समापन बिंदु को उजागर नहीं करते हैं
-- ओमनीरूट v1.0.6+ में चैट पूर्णता के माध्यम से फ़ॉलबैक सत्यापन शामिल है
-- सुनिश्चित करें कि आधार URL में `/v1` प्रत्यय शामिल हो
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
+
+### 🔐 OAuth on a Remote Server
+
+
+
+
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
+
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
+
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
+
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solution: Configure your own OAuth credentials
+
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
---
-## 🛠️
+#### Temporary workaround (without custom credentials)
-- **रनटाइम**: Node.js 18–22 LTS (⚠️ Node.js 24+ **समर्थित नहीं** है - `better-sqlite3` मूल बायनेरिज़ असंगत हैं)
-- **भाषा**: टाइपस्क्रिप्ट 5.9 - **100% टाइपस्क्रिप्ट** `src/` और `open-sse/` (v1.0.6) में
-- **फ्रेमवर्क**: नेक्स्ट.जेएस 16 + रिएक्ट 19 + टेलविंड सीएसएस 4
-- **डेटाबेस**: लोडीबी (JSON) + SQLite (डोमेन स्थिति + प्रॉक्सी लॉग)
-- **स्ट्रीमिंग**: सर्वर-भेजे गए इवेंट (एसएसई)
-- **प्रामाणिक**: OAuth 2.0 (PKCE) + JWT + API कुंजियाँ
-- **परीक्षण**: Node.js परीक्षण धावक (368+ इकाई परीक्षण)
-- **सीआई/सीडी**: गिटहब क्रियाएँ (ऑटो एनपीएम प्रकाशन + रिलीज पर डॉकर हब)
-- **वेबसाइट**: [omniroute.online](https://omniroute.online)
-- **पैकेज**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **डॉकर**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **लचीलापन**: सर्किट ब्रेकर, एक्सपोनेंशियल बैकऑफ़, एंटी-थंडरिंग झुंड, टीएलएस स्पूफिंग
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
---
-## 📖 दस्तावेज़ीकरण
+
+🇧🇷 Versão em Português
-| दस्तावेज़ | विवरण |
-| -------------------------------------------- | ------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | प्रदाता, कॉम्बो, सीएलआई एकीकरण, तैनाती |
-| [API Reference](docs/API_REFERENCE.md) | उदाहरण सहित सभी समापन बिंदु |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | सामान्य समस्याएँ एवं समाधान |
-| [Architecture](docs/ARCHITECTURE.md) | सिस्टम आर्किटेक्चर और आंतरिक |
-| [Contributing](CONTRIBUTING.md) | विकास सेटअप और दिशानिर्देश |
-| [OpenAPI Spec](docs/openapi.yaml) | ओपनएपीआई 3.0 विशिष्टता |
-| [Security Policy](SECURITY.md) | भेद्यता रिपोर्टिंग और सुरक्षा प्रथाएं |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | संपूर्ण गाइड: VM + nginx + Cloudflare सेटअप |
-| [Features Gallery](docs/FEATURES.md) | स्क्रीनशॉट के साथ विजुअल डैशबोर्ड टूर |
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
-### 📸 डैशबोर्ड पूर्वावलोकन
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
-डैशबोर्ड स्क्रीनशॉट देखने के लिए क्लिक करें
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
-| पेज | स्क्रीनशॉट |
-| ----------------- | ------------------------------------------------- |
-| **प्रदाता** |  |
-| **कॉम्बोस** |  |
-| **एनालिटिक्स** |  |
-| **स्वास्थ्य** |  |
-| **अनुवादक** |  |
-| **सेटिंग्स** |  |
-| **सीएलआई उपकरण** |  |
-| **उपयोग लॉग** |  |
-| **समाप्ति बिंदु** |  |
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
+
+#### Passo a passo
+
+**1. Acesse o Google Cloud Console**
+
+Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Crie um novo OAuth 2.0 Client ID**
+
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
+
+**3. Adicione as Authorized Redirect URIs**
+
+No campo **"Authorized redirect URIs"**, adicione:
+
+```
+https://seu-servidor.com/callback
+```
+
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
+
+**4. Salve e copie as credenciais**
+
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
+
+**5. Configure as variáveis de ambiente**
+
+No seu `.env` (ou nas variáveis de ambiente do Docker):
+
+```bash
+# Para Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+
+# Para Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+```
+
+**6. Reinicie o OmniRoute**
+
+```bash
+# Se usando npm:
+npm run dev
+
+# Se usando Docker:
+docker restart omniroute
+```
+
+**7. Tente conectar novamente**
+
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
+
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-## 🗺️
+#### Workaround temporário (sem configurar credenciais próprias)
-ओम्निरूट ने कई विकास चरणों में **210+ सुविधाओं की योजना बनाई है**। यहां प्रमुख क्षेत्र हैं:
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-| श्रेणी | नियोजित विशेषताएं | हाइलाइट्स |
-| ---------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------- |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🧠 **रूटिंग और इंटेलिजेंस** | 25+ | न्यूनतम-विलंबता रूटिंग, टैग-आधारित रूटिंग, कोटा प्रीफ़्लाइट, पी2सी खाता चयन |
-| 🔒 **सुरक्षा एवं अनुपालन** | 20+ | एसएसआरएफ हार्डनिंग, क्रेडेंशियल क्लोकिंग, प्रति समापन बिंदु दर-सीमा, प्रबंधन कुंजी स्कोपिंग |
-| 📊 **अवलोकनशीलता** | 15+ | ओपन टेलीमेट्री एकीकरण, वास्तविक समय कोटा निगरानी, प्रति मॉडल लागत ट्रैकिंग |
-| 🔄 **प्रदाता एकीकरण** | 20+ | डायनेमिक मॉडल रजिस्ट्री, प्रदाता कूलडाउन, मल्टी-अकाउंट कोडेक्स, कोपायलट कोटा पार्सिंग |
-| ⚡ **प्रदर्शन** | 15+ | दोहरी कैश परत, शीघ्र कैश, प्रतिक्रिया कैश, स्ट्रीमिंग कीपलाइव, बैच एपीआई |
-| 🌐 **पारिस्थितिकी तंत्र** | 10+ | वेबसॉकेट एपीआई, कॉन्फिग हॉट-रीलोड, वितरित कॉन्फिग स्टोर, वाणिज्यिक मोड |
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
+4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
+5. Clique em **"Connect"**
-### 🔜 जल्द आ रहा है
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
-- 🔗 **ओपनकोड इंटीग्रेशन** - ओपनकोड एआई कोडिंग आईडीई के लिए मूल प्रदाता समर्थन
-- 🔗 **TRAE एकीकरण** - TRAE AI विकास ढांचे के लिए पूर्ण समर्थन
-- 📦 **बैच एपीआई** - थोक अनुरोधों के लिए अतुल्यकालिक बैच प्रोसेसिंग
-- 🎯 **टैग-आधारित रूटिंग** - कस्टम टैग और मेटाडेटा के आधार पर रूट अनुरोध
-- 💰 **न्यूनतम-लागत रणनीति** — स्वचालित रूप से सबसे सस्ते उपलब्ध प्रदाता का चयन करें
-
-> 📝 पूर्ण फीचर विशिष्टताएं [link](docs/new-features/) में उपलब्ध हैं (217 विस्तृत विवरण)
+
---
-## 👥 योगदानकर्ता
+
+
+## 🛠️ Tech Stack
+
+
+Click to expand tech stack details
+
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
+
+
+
+---
+
+## दस्तावेज़
+
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
+
+---
+
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### योगदान कैसे करें
+### How to Contribute
-1. रिपॉजिटरी को फोर्क करें
-2. अपनी फीचर शाखा बनाएं (`git checkout -b feature/amazing-feature`)
-3. अपने परिवर्तन प्रतिबद्ध करें (`git commit -m 'Add amazing feature'`)
-4. शाखा में पुश करें (`git push origin feature/amazing-feature`)
-5. एक पुल अनुरोध खोलें
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-विस्तृत दिशानिर्देशों के लिए [CONTRIBUTING.md](CONTRIBUTING.md) देखें।
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### एक नया संस्करण जारी करना
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 सितारा इतिहास
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 आभार
+## 🙏 Acknowledgments
-**[decolua](https://github.com/decolua)** द्वारा **[decolua](https://github.com/decolua)** को विशेष धन्यवाद - मूल परियोजना जिसने इस फोर्क को प्रेरित किया। ओमनीरूट अतिरिक्त सुविधाओं, मल्टी-मोडल एपीआई और पूर्ण टाइपस्क्रिप्ट पुनर्लेखन के साथ उस अविश्वसनीय नींव पर आधारित है।
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-**[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** को विशेष धन्यवाद - मूल गो कार्यान्वयन जिसने इस जावास्क्रिप्ट पोर्ट को प्रेरित किया।
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 लाइसेंस
+## लाइसेंस
-एमआईटी लाइसेंस - विवरण के लिए [LICENSE](LICENSE) देखें।
+MIT License - see [LICENSE](LICENSE) for details.
---
----
+
+
diff --git a/docs/i18n/in/docs/FEATURES.md b/docs/i18n/in/docs/FEATURES.md
new file mode 100644
index 0000000000..76ea57aa04
--- /dev/null
+++ b/docs/i18n/in/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (हिन्दी)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/it/README.md b/docs/i18n/it/README.md
index cdd0ba1db2..5143093323 100644
--- a/docs/i18n/it/README.md
+++ b/docs/i18n/it/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — Il Gateway IA Gratuito
+# 🚀 OmniRoute — The Free AI Gateway (Italiano)
-### Non smettere mai di programmare. Routing intelligente verso **modelli IA GRATUITI e economici** con fallback automatico.
-
-_Il tuo proxy API universale — un endpoint, 67+ provider, zero downtime._
-
-**Chat Completions • Embeddings • Generazione Immagini • Audio • Reranking • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Provider IA gratuito per i tuoi agenti di programmazione preferiti
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Connetti qualsiasi IDE o strumento CLI con IA tramite OmniRoute — gateway API gratuito per programmazione illimitata._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,587 +162,527 @@ _Connetti qualsiasi IDE o strumento CLI con IA tramite OmniRoute — gateway API
|
-📡 Tutti gli agenti si connettono via http://localhost:20128/v1 o http://cloud.omniroute.online/v1 — una configurazione, modelli e quota illimitati
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 Sito Web](https://omniroute.online) • [🚀 Avvio Rapido](#-avvio-rapido) • [💡 Funzionalità](#-funzionalità-principali) • [📖 Docs](#-documentazione) • [💰 Prezzi](#-panoramica-prezzi)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Perché OmniRoute?
-
-**Smetti di sprecare soldi e di sbattere contro i limiti:**
-
--
La quota dell'abbonamento scade inutilizzata ogni mese
--
I limiti di rate ti fermano nel mezzo della programmazione
--
API costose ($20-50/mese per provider)
--
Cambio manuale tra provider
-
-**OmniRoute risolve tutto questo:**
-
-- ✅ **Massimizza gli abbonamenti** — Traccia le quote, usa tutto prima del reset
-- ✅ **Fallback automatico** — Abbonamento → API Key → Economico → Gratuito, zero downtime
-- ✅ **Multi-account** — Round-robin tra account per provider
-- ✅ **Universale** — Funziona con Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, qualsiasi strumento CLI
-
----
-
-## 📧 Supporto
-
-> 💬 **Unisciti alla nostra community!** [Gruppo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Ottieni aiuto, condividi consigli e rimani aggiornato.
-
-- **Sito Web**: [omniroute.online](https://omniroute.online)
+- **Website**: [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)
-- **WhatsApp**: [Gruppo della comunità](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **WhatsApp**: [Gruppo della comunità](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Progetto Originale**: [9router di decolua](https://github.com/decolua/9router)
+- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Come Funziona
+## 🔄 How It Works
```
┌─────────────┐
-│ Il tuo CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
+│ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
│ Tool │
└──────┬──────┘
│ http://localhost:20128/v1
↓
┌─────────────────────────────────────────┐
-│ OmniRoute (Router Intelligente) │
-│ • Traduzione formato (OpenAI ↔ Claude) │
-│ • Tracciamento quote + Embeddings + Immagini │
-│ • Rinnovo automatico dei token │
+│ OmniRoute (Smart Router) │
+│ • Format translation (OpenAI ↔ Claude) │
+│ • Quota tracking + Embeddings + Images │
+│ • Auto token refresh │
└──────┬──────────────────────────────────┘
│
- ├─→ [Tier 1: ABBONAMENTO] Claude Code, Codex, Gemini CLI
- │ ↓ quota esaurita
- ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, ecc.
- │ ↓ limite budget
- ├─→ [Tier 3: ECONOMICO] GLM ($0.6/1M), MiniMax ($0.2/1M)
- │ ↓ limite budget
- └─→ [Tier 4: GRATUITO] iFlow, Qwen, Kiro (illimitato)
+ ├─→ [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)
-Risultato: Non smettere mai di programmare, costo minimo
+Result: Never stop coding, minimal cost
```
---
-## 🎯 Cosa risolve OmniRoute: 30 punti critici reali e casi d'uso
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Ogni sviluppatore che utilizza strumenti di intelligenza artificiale affronta questi problemi quotidianamente.** OmniRoute è stato creato per risolverli tutti: dai superamenti dei costi ai blocchi regionali, dai flussi OAuth interrotti alle operazioni di protocollo e all'osservabilità aziendale.
+> **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 protocol operations and enterprise observability.
-💸 1. "Pago un abbonamento costoso ma vengo comunque interrotto dai limiti"
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Gli sviluppatori pagano $ 20-200 al mese per Claude Pro, Codex Pro o GitHub Copilot. Anche pagando, la quota ha un tetto: 5 ore di utilizzo, limiti settimanali o limiti di tariffa al minuto. A metà sessione di codifica, il provider smette di rispondere e lo sviluppatore perde flusso e produttività.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Fallback intelligente a 4 livelli**: se la quota dell'abbonamento si esaurisce, reindirizza automaticamente alla chiave API → Economico → Gratuito senza alcun intervento manuale
-- **Monitoraggio delle quote in tempo reale**: mostra il consumo di token in tempo reale con il conto alla rovescia ripristinato (5 ore, giornaliero, settimanale)
-- **Supporto multi-account**: più account per fornitore con round robin automatico: quando uno si esaurisce, passa a quello successivo
-- **Combo personalizzate** — Catene di fallback personalizzabili con 6 strategie di bilanciamento (fill-first, round-robin, P2C, casuale, meno utilizzato, ottimizzato in termini di costi)
-- **Quote aziendali Codex**: monitoraggio delle quote dello spazio di lavoro aziendale/team direttamente nella dashboard
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. "Devo utilizzare più provider ma ognuno ha un'API diversa"
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI utilizza un formato, Claude (Anthropic) ne utilizza un altro, Gemini ancora un altro. Se uno sviluppatore desidera testare modelli di fornitori diversi o eseguire il fallback tra di loro, deve riconfigurare gli SDK, modificare gli endpoint e gestire formati incompatibili. I provider personalizzati (FriendLI, NIM) hanno endpoint del modello non standard.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Endpoint unificato**: un singolo `http://localhost:20128/v1` funge da proxy per tutti gli oltre 36 provider
-- **Traduzione del formato** — Automatica e trasparente: OpenAI ↔ Claude ↔ Gemini ↔ API di risposta
-- **Sanitizzazione della risposta**: rimuove i campi non standard (`x_groq`, `usage_breakdown`, `service_tier`) che interrompono OpenAI SDK v1.83+
-- **Normalizzazione del ruolo**: converte `developer` → `system` per provider non OpenAI; `system` → `user` per GLM/ERNIE
-- **Think Tag Extraction** — Estrae i blocchi `` da modelli come DeepSeek R1 in `reasoning_content` standardizzati
-- **Uscita strutturata per Gemini** — `json_schema` → `responseMimeType`/`responseSchema` conversione automatica
-- **`stream` per impostazione predefinita è `false`** — Si allinea con le specifiche OpenAI, evitando SSE imprevisti negli SDK Python/Rust/Go
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. "Il mio fornitore di intelligenza artificiale blocca la mia regione/paese"
+🌐 3. "My AI provider blocks my region/country"
-Provider come OpenAI/Codex bloccano l'accesso da determinate regioni geografiche. Gli utenti ricevono errori come `unsupported_country_region_territory` durante le connessioni OAuth e API. Ciò è particolarmente frustrante per gli sviluppatori dei paesi in via di sviluppo.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Configurazione proxy a 3 livelli**: proxy configurabile a 3 livelli: globale (tutto il traffico), per provider (un solo provider) e per connessione/chiave
-- **Badge proxy con codice colore** — Indicatori visivi: 🟢 proxy globale, 🟡 proxy provider, 🔵 proxy di connessione, che mostra sempre l'IP
-- **Scambio di token OAuth tramite proxy**: anche il flusso OAuth passa attraverso il proxy, risolvendo `unsupported_country_region_territory`
-- **Test di connessione tramite proxy**: i test di connessione utilizzano il proxy configurato (non più bypass diretto)
-- **Supporto SOCKS5**: supporto completo del proxy SOCKS5 per il routing in uscita
-- **Spoofing dell'impronta digitale TLS**: impronta digitale TLS simile a un browser tramite `wreq-js` per bypassare il rilevamento dei bot
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. "Voglio usare l'intelligenza artificiale per programmare ma non ho soldi"
+🆓 4. "I want to use AI for coding but I have no money"
-Non tutti possono pagare $ 20-200 al mese per gli abbonamenti AI. Studenti, sviluppatori provenienti da paesi emergenti, hobbisti e liberi professionisti hanno bisogno di accedere a modelli di qualità a costo zero.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Fornitori del livello gratuito integrati**: supporto nativo per fornitori gratuiti al 100%: iFlow (8 modelli illimitati), Qwen (3 modelli illimitati), Kiro (Claude gratis), Gemini CLI (180.000/mese gratuiti)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Combo solo gratuiti** — Catena `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $ 0/mese senza tempi di inattività
-- **Crediti gratuiti NVIDIA NIM**: 1000 crediti gratuiti integrati
-- **Strategia di ottimizzazione dei costi**: strategia di routing che sceglie automaticamente il fornitore più economico disponibile
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. "Devo proteggere il mio gateway AI da accessi non autorizzati"
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Quando si espone un gateway AI alla rete (LAN, VPS, Docker), chiunque abbia l'indirizzo può consumare i token/la quota dello sviluppatore. Senza protezione, le API sono vulnerabili ad usi impropri, tempestive iniezioni e abusi.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Gestione delle chiavi API**: generazione, rotazione e ambito per provider con una pagina `/dashboard/api-manager` dedicata
-- **Autorizzazioni a livello di modello**: limita le chiavi API a modelli specifici (`openai/*`, modelli con caratteri jolly), con l'interruttore Consenti tutto/Limita
-- **API Endpoint Protection**: richiede una chiave per `/v1/models` e blocca provider specifici dall'elenco
-- **Auth Guard + Protezione CSRF**: tutti i percorsi del dashboard protetti con middleware `withAuth` + token CSRF
-- **Rate Limiter**: limitazione della velocità per IP con finestre configurabili
-- **Filtro IP**: lista consentita/lista bloccata per il controllo degli accessi
-- **Prompt Injection Guard**: sanificazione contro modelli di prompt dannosi
-- **Crittografia AES-256-GCM**: credenziali crittografate a riposo
+- **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. "Il mio provider è andato in tilt e ho perso il flusso di codifica"
+🛑 6. "My provider went down and I lost my coding flow"
-I fornitori di intelligenza artificiale possono diventare instabili, restituire errori 5xx o raggiungere limiti di velocità temporanei. Se uno sviluppatore dipende da un singolo fornitore, viene interrotto. Senza interruttori automatici, tentativi ripetuti possono bloccare l'applicazione.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Interruttore automatico per provider**: apertura/chiusura automatica con soglie e raffreddamento configurabili (chiuso/aperto/semiaperto)
-- **Backoff esponenziale**: ritardi progressivi tra i tentativi
-- **Anti-Thundering Herd** — Mutex + protezione semaforo contro tempeste di tentativi simultanei
-- **Catene di fallback combinate**: se il fornitore primario fallisce, cade automaticamente nella catena senza alcun intervento
-- **Combo Circuit Breaker**: disabilita automaticamente i provider in errore all'interno di una catena combinata
-- **Dashboard integrità**: monitoraggio del tempo di attività, stati degli interruttori automatici, blocchi, statistiche della cache, latenza p50/p95/p99
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. "Configurare ogni strumento AI è noioso e ripetitivo"
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Gli sviluppatori utilizzano Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Ogni strumento necessita di una configurazione diversa (endpoint API, chiave, modello). La riconfigurazione quando si cambia fornitore o modello è una perdita di tempo.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Dashboard degli strumenti CLI**: pagina dedicata con configurazione con un clic per Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-- **GitHub Copilot Config Generator**: genera `chatLanguageModels.json` per VS Code con selezione di modelli in blocco
-- **Procedura guidata di onboarding**: configurazione guidata in 4 passaggi per gli utenti alle prime armi
-- **Un endpoint, tutti i modelli**: configura `http://localhost:20128/v1` una volta, accedi a oltre 36 provider
+- **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 67+ providers
-🔑 8. "Gestire token OAuth da più provider è un inferno"
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot: utilizzano tutti OAuth 2.0 con token in scadenza. Gli sviluppatori devono autenticarsi nuovamente costantemente, gestire `client_secret is missing`, `redirect_uri_mismatch` e errori sui server remoti. OAuth su LAN/VPS è particolarmente problematico.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Aggiornamento automatico dei token**: i token OAuth si aggiornano in background prima della scadenza
-- **OAuth 2.0 (PKCE) integrato**: flusso automatico per Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **OAuth multi-account**: account multipli per provider tramite estrazione di token JWT/ID
-- **OAuth LAN/Correzione remota**: rilevamento IP privato per `redirect_uri` + modalità URL manuale per server remoti
-- **OAuth Behind Nginx**: utilizza `window.location.origin` per la compatibilità con proxy inverso
-- **Guida OAuth remota**: guida passo passo per le credenziali Google Cloud su VPS/Docker
+- **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. "Non so quanto sto spendendo né dove"
+📊 9. "I don't know how much I'm spending or where"
-Gli sviluppatori utilizzano più fornitori a pagamento ma non hanno una visione unificata della spesa. Ogni fornitore ha il proprio dashboard di fatturazione, ma non esiste una visualizzazione consolidata. I costi imprevisti possono accumularsi.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Dashboard di analisi dei costi**: monitoraggio dei costi per token e gestione del budget per fornitore
-- **Limiti di budget per livello**: massimale di spesa per livello che attiva il fallback automatico
-- **Configurazione dei prezzi per modello**: prezzi configurabili per modello
-- **Statistiche di utilizzo per chiave API**: conteggio delle richieste e timestamp dell'ultimo utilizzo per chiave
-- **Dashboard di analisi**: schede statistiche, grafico di utilizzo del modello, tabella dei fornitori con percentuali di successo e latenza
+- **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. "Non riesco a diagnosticare errori e problemi nelle chiamate AI"
+🐛 10. "I can't diagnose errors and problems in AI calls"
-Quando una chiamata fallisce, lo sviluppatore non sa se si trattava di un limite di velocità, di un token scaduto, di un formato errato o di un errore del provider. Registri frammentati su diversi terminali. Senza osservabilità, il debug è un processo per tentativi ed errori.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Dashboard dei registri unificati**: 4 schede: registri delle richieste, registri del proxy, registri di controllo, console
-- **Visualizzatore log della console**: visualizzatore in stile terminale in tempo reale con livelli codificati a colori, scorrimento automatico, ricerca, filtro
-- **Registri proxy SQLite**: registri persistenti che sopravvivono ai riavvii del server
-- **Translator Playground** — 4 modalità di debug: Playground (traduzione del formato), Chat Tester (andata e ritorno), Test Bench (batch), Live Monitor (in tempo reale)
-- **Telemetria richiesta**: latenza p50/p95/p99 + traccia X-Request-Id
-- **Registrazione basata su file con rotazione**: l'interceptor della console acquisisce tutto nel registro JSON con rotazione basata sulle dimensioni
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. "L'implementazione e la manutenzione del gateway sono complesse"
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-L'installazione, la configurazione e la manutenzione di un proxy AI in diversi ambienti (locale, VPS, Docker, cloud) richiedono molto lavoro. Problemi come percorsi codificati, `EACCES` nelle directory, conflitti di porte e build multipiattaforma aggiungono attrito.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Installazione globale npm** — `npm install -g omniroute && omniroute` — completata
-- **Docker multipiattaforma** — AMD64 + ARM64 nativo (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Docker Compose Profiles** — `base` (senza strumenti CLI) e `cli` (con Claude Code, Codex, OpenClaw)
-- **App desktop Electron**: app nativa per Windows/macOS/Linux con barra delle applicazioni, avvio automatico, modalità offline
-- **Modalità porta divisa**: API e dashboard su porte separate per scenari avanzati (proxy inverso, rete di contenitori)
-- **Cloud Sync**: configura la sincronizzazione tra dispositivi tramite Cloudflare Workers
-- **Backup DB**: backup, ripristino, esportazione e importazione automatici di tutte le impostazioni
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. "L'interfaccia è solo inglese e il mio team non parla inglese"
+🌍 12. "The interface is English-only and my team doesn't speak English"
-I team nei paesi non anglofoni, soprattutto in America Latina, Asia ed Europa, hanno difficoltà con le interfacce solo in inglese. Le barriere linguistiche riducono l'adozione e aumentano gli errori di configurazione.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Dashboard i18n — 30 lingue** — Tutti gli oltre 500 tasti tradotti tra cui arabo, bulgaro, danese, tedesco, spagnolo, finlandese, francese, ebraico, hindi, ungherese, indonesiano, italiano, giapponese, coreano, malese, olandese, norvegese, polacco, portoghese (PT/BR), rumeno, russo, slovacco, svedese, tailandese, ucraino, vietnamita, cinese, filippino, inglese
-- **Supporto RTL**: supporto da destra a sinistra per arabo ed ebraico
-- **README multilingue**: 30 traduzioni complete di documentazione
-- **Selettore lingua**: icona del globo nell'intestazione per la commutazione in tempo reale
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. "Ho bisogno di qualcosa di più della semplice chat: ho bisogno di incorporamenti, immagini, audio"
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-L'intelligenza artificiale non è solo il completamento della chat. Gli sviluppatori devono generare immagini, trascrivere audio, creare incorporamenti per RAG, riclassificare i documenti e moderare i contenuti. Ogni API ha un endpoint e un formato diversi.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Incorporamenti** — `/v1/embeddings` con 6 fornitori e oltre 9 modelli
-- **Generazione di immagini** — `/v1/images/generations` con 10 provider e oltre 20 modelli (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **Da testo a video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) e SD WebUI
-- **Trasformazione testo in musica** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
-- **Trascrizione audio** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Sintesi vocale** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + fornitori esistenti
-- **Moderazioni** — `/v1/moderations` — Controlli di sicurezza dei contenuti
-- **Riclassificazione** — `/v1/rerank`: riclassificazione della pertinenza del documento
-- **API di risposta**: supporto `/v1/responses` completo per Codex
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. "Non ho modo di testare e confrontare la qualità tra i modelli"
+🧪 14. "I have no way to test and compare quality across models"
-Gli sviluppatori vogliono sapere quale modello è il migliore per il loro caso d'uso (codice, traduzione, ragionamento), ma il confronto manuale è lento. Non esistono strumenti di valutazione integrati.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Valutazioni LLM**: test Golden Set con 10 casi precaricati che coprono saluti, matematica, geografia, generazione di codice, conformità JSON, traduzione, ribasso, rifiuto di sicurezza
-- **4 strategie di corrispondenza** — `exact`, `contains`, `regex`, `custom` (funzione JS)
-- **Translator Playground Test Bench**: test in batch con input multipli e output previsti, confronto tra provider
-- **Chat Tester**: andata e ritorno completo con rendering della risposta visiva
-- **Live Monitor**: flusso in tempo reale di tutte le richieste che passano attraverso il proxy
+- **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. "Ho bisogno di scalare senza perdere prestazioni"
+📈 15. "I need to scale without losing performance"
-Man mano che il volume delle richieste cresce, senza la memorizzazione nella cache le stesse domande generano costi duplicati. Senza idempotenza, le richieste duplicate sprecano elaborazione. I limiti tariffari per fornitore devono essere rispettati.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Cache semantica**: la cache a due livelli (firma + semantica) riduce costi e latenza
-- **Idempotenza richiesta**: finestra di deduplicazione di 5 secondi per richieste identiche
-- **Rilevamento del limite di velocità**: RPM per provider, gap minimo e monitoraggio simultaneo massimo
-- **Limiti di velocità modificabili**: impostazioni predefinite configurabili in Impostazioni → Resilienza con persistenza
-- **Cache di convalida della chiave API**: cache a 3 livelli per prestazioni di produzione
-- **Dashboard integrità con telemetria**: latenza p50/p95/p99, statistiche cache, tempo di attività
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. "Voglio controllare il comportamento del modello a livello globale"
+🤖 16. "I want to control model behavior globally"
-Sviluppatori che desiderano tutte le risposte in una lingua specifica, con un tono specifico o che desiderano limitare i token di ragionamento. Configurarlo in ogni strumento/richiesta non è pratico.
+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.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- **Inserimento prompt di sistema**: prompt globale applicato a tutte le richieste
-- **Thinking Budget Validation**: controllo dell'allocazione dei token tramite ragionamento per richiesta (passthrough, automatico, personalizzato, adattivo)
-- **6 Strategie di routing**: strategie globali che determinano la modalità di distribuzione delle richieste
-- **Wildcard Router**: i modelli `provider/*` instradano dinamicamente a qualsiasi provider
-- **Abilita/Disabilita combo**: attiva/disattiva le combo direttamente dalla dashboard
-- **Attiva/disattiva provider**: attiva/disattiva tutte le connessioni per un provider con un clic
-- **Fornitori bloccati**: esclude fornitori specifici dall'elenco `/v1/models`
+- **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
-🧰 17. "Ho bisogno degli strumenti MCP come funzionalità di prodotto di prima classe"
+🧰 17. "I need MCP tools as first-class product capabilities"
-Molti gateway AI espongono MCP solo come dettaglio di implementazione nascosto. I team hanno bisogno di un livello operativo visibile e gestibile.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- MCP viene visualizzato nella navigazione del dashboard e nella scheda del protocollo dell'endpoint
-- Pagina di gestione MCP dedicata con processo, strumenti, ambiti e audit
-- Avvio rapido integrato per `omniroute --mcp` e onboarding del client
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "Ho bisogno dell'orchestrazione A2A con percorsi di attività di sincronizzazione + streaming"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-I flussi di lavoro degli agenti necessitano sia di risposte dirette che di esecuzione in streaming di lunga durata con controllo del ciclo di vita.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- Endpoint A2A JSON-RPC (`POST /a2a`) con `message/send` e `message/stream`
-- Streaming SSE con propagazione dello stato terminale
-- API del ciclo di vita delle attività per `tasks/get` e `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. "Ho bisogno dello stato reale del processo MCP, non di uno stato indovinato"
+🛰️ 19. "I need real MCP process health, not guessed status"
-I team operativi devono sapere se MCP è effettivamente attivo, non solo se un'API è raggiungibile.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- File heartbeat di runtime con PID, timestamp, trasporto, conteggio strumenti e modalità ambito
-- API di stato MCP che combina battito cardiaco + attività recente
-- Schede di stato dell'interfaccia utente per l'aggiornamento di processo/tempo di attività/battito cardiaco
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "Ho bisogno dell'esecuzione verificabile dello strumento MCP"
+📋 20. "I need auditable MCP tool execution"
-Quando gli strumenti modificano la configurazione o attivano azioni operative, i team necessitano di tracciabilità forense.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- Registrazione di controllo supportata da SQLite per le chiamate allo strumento MCP
-- Filtri per strumento, successo/fallimento, chiave API e impaginazione
-- Tabella di controllo della dashboard + endpoint statistici per l'automazione
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "Ho bisogno di autorizzazioni MCP con ambito per integrazione"
+🔐 21. "I need scoped MCP permissions per integration"
-Client diversi dovrebbero avere accesso con privilegi minimi alle categorie di strumenti.
+Different clients should have least-privilege access to tool categories.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- 9 ambiti MCP granulari per l'accesso controllato agli strumenti
-- Applicazione dell'ambito e visibilità nell'interfaccia utente di gestione MCP
-- Postura predefinita sicura per gli strumenti operativi
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. "Ho bisogno di controlli operativi senza ridistribuirmi"
+⚙️ 22. "I need operational controls without redeploying"
-I team necessitano di rapidi cambiamenti di runtime durante incidenti o eventi di costo.
+Teams need quick runtime changes during incidents or cost events.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- Cambia l'attivazione combinata direttamente dalla dashboard MCP
-- Applicare profili di resilienza da pacchetti di policy predefiniti
-- Ripristinare lo stato dell'interruttore dallo stesso pannello operativo
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. "Ho bisogno di visibilità e cancellazione del ciclo di vita delle attività A2A in tempo reale"
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Senza visibilità del ciclo di vita, gli incidenti relativi alle attività diventano difficili da valutare.
+Without lifecycle visibility, task incidents become hard to triage.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- Elenco/filtro delle attività per stato/competenza con impaginazione
-- Esamina i metadati, gli eventi e gli artefatti delle attività
-- Endpoint di annullamento dell'attività e azione dell'interfaccia utente con conferma
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. "Ho bisogno di metriche di flusso attive per il carico A2A"
+🌊 24. "I need active stream metrics for A2A load"
-I flussi di lavoro in streaming richiedono informazioni operative sulla concorrenza e sulle connessioni live.
+Streaming workflows require operational insight into concurrency and live connections.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- Contatori di flussi attivi integrati nello stato A2A
-- Timestamp dell'ultima attività e conteggi per stato
-- Schede dashboard A2A per il monitoraggio delle operazioni in tempo reale
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "Ho bisogno del rilevamento degli agenti standard per i clienti"
+🪪 25. "I need standard agent discovery for clients"
-I client e gli agenti di orchestrazione esterni necessitano di metadati leggibili dal computer per l'onboarding.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- Carta Agente esposta a `/.well-known/agent.json`
-- Capacità e competenze mostrate nell'interfaccia utente di gestione
-- L'API di stato A2A include metadati di rilevamento per l'automazione
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "Ho bisogno della rilevabilità del protocollo nella UX del prodotto"
+🧭 26. "I need protocol discoverability in the product UX"
-Se gli utenti non riescono a scoprire le superfici del protocollo, l'adozione e la qualità del supporto diminuiscono.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- Voci della barra laterale per MCP e A2A
-- Scheda Protocolli della pagina Endpoint con avvio rapido e stato
-- Collegamenti dalla panoramica alle dashboard di gestione dedicate
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "Ho bisogno della convalida del protocollo end-to-end con clienti reali"
+🧪 27. "I need end-to-end protocol validation with real clients"
-I test simulati non sono sufficienti per verificare la compatibilità del protocollo prima del rilascio.
+Mock tests are not enough to validate protocol compatibility before release.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- Suite E2E che avvia l'app e utilizza il trasporto client SDK MCP reale
-- Test client A2A per i flussi di rilevamento, invio, streaming, acquisizione e annullamento
-- Effettuare un controllo incrociato delle asserzioni con l'audit MCP e le API delle attività A2A
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. "Ho bisogno di osservabilità unificata su tutte le interfacce"
+📡 28. "I need unified observability across all interfaces"
-Suddividere l'osservabilità per protocollo crea punti ciechi e un MTTR più lungo.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- Dashboard/registri/analisi unificati in un unico prodotto
-- Salute + audit + richiesta di telemetria su livelli OpenAI, MCP e A2A
-- API operative per stato e automazione
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "Ho bisogno di un runtime per proxy + strumenti + orchestrazione agente"
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-L'esecuzione di numerosi servizi separati aumenta i costi operativi e le modalità di guasto.
+Running many separate services increases operational cost and failure modes.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- Proxy compatibile con OpenAI, server MCP e server A2A in uno stack
-- Autenticazione condivisa, resilienza, archivio dati e osservabilità
-- Modello politico coerente su tutte le superfici di interazione
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. "Ho bisogno di spedire flussi di lavoro di agenti senza la proliferazione del codice adesivo"
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-I team perdono velocità quando uniscono più servizi e script ad hoc.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Come OmniRoute risolve il problema:**
+**How OmniRoute solves it:**
-- Strategia endpoint unificata per clienti e agenti
-- Interfacce utente di gestione del protocollo integrate e percorsi di convalida del fumo
-- Fondamenti pronti per la produzione (sicurezza, registrazione, resilienza, backup)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Playbook di esempio (casi d'uso integrati)
+### Example Playbooks (Integrated Use Cases)
-**Playbook A: massimizza l'abbonamento a pagamento + backup economico**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -684,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Playbook B: stack di codifica a costo zero**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -696,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Playbook C: catena di fallback sempre attiva 24 ore su 24, 7 giorni su 7**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -709,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Playbook D: operazioni dell'agente con MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Avvio Rapido
+## 🆓 Start Free — Zero Configuration Cost
-**1. Installa globalmente:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Avvio Rapido
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 La Dashboard si apre su `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Comando | Descrizione |
-| ----------------------- | ------------------------------------------- |
-| `omniroute` | Avviare il server (porta predefinita 20128) |
-| `omniroute --port 3000` | Usare una porta personalizzata |
-| `omniroute --no-open` | Non aprire il browser automaticamente |
-| `omniroute --help` | Mostrare l'aiuto |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Connetti un provider GRATUITO:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Dashboard → Provider → Connetti **Claude Code** o **Antigravity** → Login OAuth → Fatto!
+Optional split-port mode:
-**3. Usa nel tuo strumento CLI:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Impostazioni:
- Endpoint: http://localhost:20128/v1
- API Key: [copia dalla dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**Tutto qui!** Inizia a programmare con modelli IA GRATUITI.
+### 2) Connect providers and create your API key
-**Alternativa — eseguire dal codice sorgente:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-OmniRoute è disponibile come immagine Docker pubblica su [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Avvio rapido:**
+**Quick run:**
```bash
docker run -d \
@@ -778,10 +855,10 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Con file di ambiente:**
+**With environment file:**
```bash
-# Copia e modifica il .env prima
+# Copy and edit .env first
cp .env.example .env
docker run -d \
@@ -793,295 +870,627 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Con Docker Compose:**
+**Using Docker Compose:**
```bash
-# Profilo base (senza strumenti CLI)
+# Base profile (no CLI tools)
docker compose --profile base up -d
-# Profilo CLI (Claude Code, Codex, OpenClaw integrati)
+# CLI profile (Claude Code, Codex, OpenClaw built-in)
docker compose --profile cli up -d
```
-| Immagine | Tag | Dimensione | Descrizione |
-| ------------------------ | -------- | ---------- | ----------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | Ultima versione stabile |
-| `diegosouzapw/omniroute` | `1.0.6` | ~250MB | Versione attuale |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+### Avvio Rapido
+
```bash
-npm run electron:dev # Development mode
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Panoramica Prezzi
+## 💰 Pricing at a Glance
-| Tier | Provider | Costo | Reset Quota | Ideale Per |
-| ------------------ | ----------------- | ---------------------------- | --------------------- | ------------------------------- |
-| **💳 ABBONAMENTO** | Claude Code (Pro) | $20/mese | 5h + settimanale | Già abbonato |
-| | Codex (Plus/Pro) | $20-200/mese | 5h + settimanale | Utenti OpenAI |
-| | Gemini CLI | **GRATUITO** | 180K/mese + 1K/giorno | Tutti! |
-| | GitHub Copilot | $10-19/mese | Mensile | Utenti GitHub |
-| **🔑 API KEY** | NVIDIA NIM | **GRATUITO** (1000 crediti) | Una tantum | Test gratuiti |
-| | DeepSeek | A consumo | Nessuno | Miglior rapporto qualità-prezzo |
-| | Groq | Livello gratis + a pagamento | Limitato | Inferenza ultra-veloce |
-| | xAI (Grok) | A consumo | Nessuno | Modelli Grok |
-| | Mistral | Livello gratis + a pagamento | Limitato | IA Europea |
-| | OpenRouter | A consumo | Nessuno | 100+ modelli |
-| **💰 ECONOMICO** | GLM-4.7 | $0.6/1M | Giornaliero 10h | Backup economico |
-| | MiniMax M2.1 | $0.2/1M | Rotativo 5h | Opzione più economica |
-| | Kimi K2 | $9/mese fisso | 10M token/mese | Costo prevedibile |
-| **🆓 GRATUITO** | iFlow | $0 | Illimitato | 8 modelli gratuiti |
-| | Qwen | $0 | Illimitato | 3 modelli gratuiti |
-| | Kiro | $0 | Illimitato | Claude gratuito |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Consiglio Pro:** Inizia con Gemini CLI (180K gratis/mese) + iFlow (illimitato gratis) = $0 di costo!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Funzionalità Principali
+---
-### 🧠 Routing & Intelligenza
+## 🆓 Free Models — What You Actually Get
-| Funzionalità | Cosa Fa |
-| ---------------------------------------- | ----------------------------------------------------------------------------- |
-| 🎯 **Fallback intelligente 4 livelli** | Auto-routing: Abbonamento → API Key → Economico → Gratuito |
-| 📊 **Tracciamento quote in tempo reale** | Conteggio token live + countdown reset per provider |
-| 🔄 **Traduzione di formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro trasparente |
-| 👥 **Supporto multi-account** | Account multipli per provider con selezione intelligente |
-| 🔄 **Rinnovo automatico dei token** | I token OAuth si rinnovano automaticamente con retry |
-| 🎨 **Combo personalizzati** | 6 strategie: fill-first, round-robin, p2c, random, least-used, cost-optimized |
-| 🧩 **Modelli personalizzati** | Aggiungi qualsiasi ID modello a qualsiasi provider |
-| 🌐 **Router wildcard** | Instrada pattern `provider/*` verso qualsiasi provider dinamicamente |
-| 🧠 **Budget di ragionamento** | Modalità passthrough, auto, custom e adaptive per modelli di ragionamento |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **Iniezione System Prompt** | System prompt globale applicato a tutte le richieste |
-| 📄 **API Responses** | Supporto completo per OpenAI Responses API (`/v1/responses`) per Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 API Multi-modali
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Funzionalità | Cosa Fa |
-| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Generazione immagini** | `/v1/images/generations` — 4 provider, 9+ modelli |
-| 📐 **Embeddings** | `/v1/embeddings` — 6 provider, 9+ modelli |
-| 🎤 **Trascrizione audio** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Testo a voce** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Moderazioni** | `/v1/moderations` — Controlli di sicurezza |
-| 🔀 **Reranking** | `/v1/rerank` — Riclassificazione rilevanza documenti |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Resilienza & Sicurezza
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| Funzionalità | Cosa Fa |
-| ------------------------------- | -------------------------------------------------------------------------------------- |
-| 🔌 **Circuit Breaker** | Apertura/chiusura auto per provider con soglie configurabili |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🛡️ **Anti-Thundering Herd** | Mutex + semaforo rate-limit per provider con API key |
-| 🧠 **Cache semantica** | Cache a due livelli (firma + semantica) riduce costi e latenza |
-| ⚡ **Idempotenza richieste** | Finestra dedup 5s per richieste duplicate |
-| 🔒 **Spoofing TLS Fingerprint** | Bypass rilevamento bot tramite wreq-js |
-| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
-| 🌐 **Filtro IP** | Allowlist/blocklist per controllo accesso API |
-| 📊 **Rate limit modificabili** | RPM, gap minimo e concorrenza massima configurabili |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 Osservabilità & Analytics
+### 🟡 QWEN MODELS (Device Code Auth)
-| Funzionalità | Cosa Fa |
-| -------------------------------- | ------------------------------------------------------------ |
-| 📝 **Log richieste** | Modalità debug con log completi richiesta/risposta |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **Log SQLite** | Log proxy persistenti che sopravvivono ai riavvii |
-| 📊 **Dashboard analytics** | Recharts: card statistiche, grafico uso, tabella provider |
-| 📈 **Tracciamento progresso** | Eventi SSE di progresso opt-in per lo streaming |
-| 🧪 **Valutazioni LLM** | Test con golden set e 4 strategie di corrispondenza |
-| 🔍 **Telemetria richieste** | Aggregazione latenza p50/p95/p99 + tracciamento X-Request-Id |
-| 📋 **Log + Quote** | Pagine dedicate per navigazione log e tracciamento quote |
-| 🏥 **Dashboard salute** | Uptime, stati circuit breaker, lockout, statistiche cache |
-| 💰 **Tracciamento costi** | Gestione budget + configurazione prezzi per modello |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ Deploy & Sincronizzazione
+### 🟣 GEMINI CLI (Google OAuth)
-| Funzionalità | Cosa Fa |
-| -------------------------------- | -------------------------------------------------------------------------------- |
-| 💾 **Cloud Sync** | Sincronizza impostazioni tra dispositivi via Cloudflare Workers |
-| 🌐 **Deploy ovunque** | Localhost, VPS, Docker, Cloudflare Workers |
-| 🔑 **Gestione API Key** | Genera, ruota e limita API key per provider |
-| 🧙 **Assistente configurazione** | Setup guidato in 4 passaggi per nuovi utenti |
-| 🔧 **Dashboard CLI Tools** | Configurazione con un clic per Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **Backup DB** | Backup e ripristino automatici di tutte le impostazioni |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Dettagli funzionalità
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Fallback intelligente 4 livelli
+Start MCP transport in stdio mode:
-Crea combo con fallback automatico:
-
-```
-Combo: "my-coding-stack"
- 1. cc/claude-opus-4-6 (il tuo abbonamento)
- 2. nvidia/llama-3.3-70b (API NVIDIA gratuita)
- 3. glm/glm-4.7 (backup economico, $0.6/1M)
- 4. if/kimi-k2-thinking (fallback gratuito)
-
-→ Cambia automaticamente quando la quota si esaurisce o si verificano errori
+```bash
+omniroute --mcp
```
-### 📊 Tracciamento quote in tempo reale
+Recommended validation flow:
-- Consumo token per provider
-- Countdown reset (5 ore, giornaliero, settimanale)
-- Stima dei costi per livelli a pagamento
-- Report spese mensili
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Traduzione di formato
+Useful APIs for automation:
-Traduzione trasparente tra formati:
-
-- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
-- Il tuo CLI invia in formato OpenAI → OmniRoute traduce → Il provider riceve il formato nativo
-- Funziona con qualsiasi strumento che supporti endpoint OpenAI personalizzati
-
-### 👥 Supporto multi-account
-
-- Aggiungi account multipli per provider
-- Round-robin automatico o routing per priorità
-- Fallback all'account successivo quando la quota viene raggiunta
-
-### 🔄 Rinnovo automatico dei token
-
-- I token OAuth si rinnovano automaticamente prima della scadenza
-- Nessuna necessità di ri-autenticazione manuale
-- Esperienza trasparente su tutti i provider
-
-### 🎨 Combo personalizzati
-
-- Crea combinazioni di modelli illimitate
-- 6 strategie: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
-- Condividi combo tra dispositivi con Cloud Sync
-
-### 🏥 Dashboard salute
-
-- Stato del sistema (uptime, versione, utilizzo memoria)
-- Stati circuit breaker per provider (Closed/Open/Half-Open)
-- Stato rate limit e lockout attivi
-- Statistiche cache firme
-- Telemetria latenza (p50/p95/p99) + cache prompt
-- Reset salute con un clic
-
-### 🔧 Playground del traduttore
-
-- Debug, test e visualizzazione delle traduzioni di formato API
-- Invia richieste e vedi come OmniRoute traduce tra formati dei provider
-- Inestimabile per risolvere problemi di integrazione
-
-### 💾 Cloud Sync
-
-- Sincronizza provider, combo e impostazioni tra dispositivi
-- Sincronizzazione in background automatica
-- Archiviazione criptata sicura
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Valutazioni (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute include un framework di valutazione integrato per testare la qualità delle risposte LLM contro un golden set. Accesso via **Analytics → Evals** nella dashboard.
+Discover the agent:
-### Set integrato
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-Il "OmniRoute Golden Set" precaricato contiene 10 casi di test:
+Send a task:
-- Saluti, matematica, geografia, generazione codice
-- Conformità formato JSON, traduzione, markdown
-- Rifiuto sicurezza (contenuto nocivo), conteggio, logica booleana
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Strategie di valutazione
+Manage lifecycle:
-| Strategia | Descrizione | Esempio |
-| ---------- | ---------------------------------------------------------- | -------------------------------- |
-| `exact` | L'output deve corrispondere esattamente | `"4"` |
-| `contains` | L'output deve contenere la sottostringa (case-insensitive) | `"Paris"` |
-| `regex` | L'output deve corrispondere al pattern regex | `"1.*2.*3"` |
-| `custom` | Funzione JS personalizzata restituisce true/false | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Guida alla Configurazione
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Provider per abbonamento
+🧪 End-to-end protocol validation
+
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
### Claude Code (Pro/Max)
```bash
-Dashboard → Provider → Connetti Claude Code
-→ Login OAuth → Rinnovo automatico token
-→ Tracciamento quota 5h + settimanale
+Dashboard → Providers → Connect Claude Code
+→ OAuth login → Auto token refresh
+→ 5-hour + weekly quota tracking
-Modelli:
+Models:
cc/claude-opus-4-6
cc/claude-sonnet-4-5-20250929
cc/claude-haiku-4-5-20251001
```
-**Consiglio Pro:** Usa Opus per compiti complessi, Sonnet per velocità. OmniRoute traccia la quota per modello!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
```bash
-Dashboard → Provider → Connetti Codex
-→ Login OAuth (porta 1455)
-→ Reset 5h + settimanale
+Dashboard → Providers → Connect Codex
+→ OAuth login (port 1455)
+→ 5-hour + weekly reset
-Modelli:
+Models:
cx/gpt-5.2-codex
cx/gpt-5.1-codex-max
```
-### Gemini CLI (GRATUITO 180K/mese!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
-Dashboard → Provider → Connetti Gemini CLI
+Dashboard → Providers → Connect Gemini CLI
→ Google OAuth
-→ 180K completions/mese + 1K/giorno
+→ 180K completions/month + 1K/day
-Modelli:
+Models:
gc/gemini-3-flash-preview
gc/gemini-2.5-pro
```
-**Miglior valore:** Livello gratuito enorme! Usa prima dei livelli a pagamento.
+**Best Value:** Huge free tier! Use this before paid tiers.
### GitHub Copilot
```bash
-Dashboard → Provider → Connetti GitHub
+Dashboard → Providers → Connect GitHub
→ OAuth via GitHub
-→ Reset mensile (1° del mese)
+→ Monthly reset (1st of month)
-Modelli:
+Models:
gh/gpt-5
gh/claude-4.5-sonnet
gh/gemini-3-pro
@@ -1090,95 +1499,95 @@ Modelli:
-🔑 Provider per API Key
+🔑 API Key Providers
-### NVIDIA NIM (GRATUITO 1000 crediti!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Registrati: [build.nvidia.com](https://build.nvidia.com)
-2. Ottieni una API key gratuita (1000 crediti di inferenza inclusi)
-3. Dashboard → Aggiungi Provider → NVIDIA NIM:
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
- API Key: `nvapi-your-key`
-**Modelli:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` e 50+ altri
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Consiglio Pro:** API compatibile OpenAI — funziona perfettamente con la traduzione di formato di OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Registrati: [platform.deepseek.com](https://platform.deepseek.com)
-2. Ottieni una API key
-3. Dashboard → Aggiungi Provider → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Modelli:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (Livello gratuito disponibile!)
+### Groq (Free Tier Available!)
-1. Registrati: [console.groq.com](https://console.groq.com)
-2. Ottieni una API key (livello gratuito incluso)
-3. Dashboard → Aggiungi Provider → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Modelli:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Consiglio Pro:** Inferenza ultra-veloce — ideale per programmazione in tempo reale!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (100+ modelli)
+### OpenRouter (100+ Models)
-1. Registrati: [openrouter.ai](https://openrouter.ai)
-2. Ottieni una API key
-3. Dashboard → Aggiungi Provider → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Modelli:** Accesso a 100+ modelli da tutti i principali provider tramite una singola API key.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Provider economici (Backup)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (Reset giornaliero, $0.6/1M)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Registrati: [Zhipu AI](https://open.bigmodel.cn/)
-2. Ottieni la API key dal Coding Plan
-3. Dashboard → Aggiungi API Key:
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
- Provider: `glm`
- API Key: `your-key`
-**Usa:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Consiglio Pro:** Il Coding Plan offre 3× quota a 1/7 del costo! Reset giornaliero alle 10:00.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (Reset 5h, $0.20/1M)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Registrati: [MiniMax](https://www.minimax.io/)
-2. Ottieni una API key
-3. Dashboard → Aggiungi API Key
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Usa:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Consiglio Pro:** L'opzione più economica per contesto lungo (1M token)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 ($9/mese fisso)
+### Kimi K2 ($9/month flat)
-1. Abbonati: [Moonshot AI](https://platform.moonshot.ai/)
-2. Ottieni una API key
-3. Dashboard → Aggiungi API Key
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Usa:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Consiglio Pro:** $9/mese fisso per 10M token = $0.90/1M di costo effettivo!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 Provider GRATUITI (Backup d'emergenza)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 modelli GRATUITI)
+### iFlow (5 FREE models via OAuth)
```bash
-Dashboard → Connetti iFlow
-→ Login OAuth iFlow
-→ Utilizzo illimitato
+Dashboard → Connect iFlow
+→ iFlow OAuth login
+→ Unlimited usage
-Modelli:
+Models:
if/kimi-k2-thinking
if/qwen3-coder-plus
if/glm-4.7
@@ -1186,26 +1595,26 @@ Modelli:
if/deepseek-r1
```
-### Qwen (3 modelli GRATUITI)
+### Qwen (4 FREE models via Device Code)
```bash
-Dashboard → Connetti Qwen
-→ Autorizzazione con codice dispositivo
-→ Utilizzo illimitato
+Dashboard → Connect Qwen
+→ Device code authorization
+→ Unlimited usage
-Modelli:
+Models:
qw/qwen3-coder-plus
qw/qwen3-coder-flash
```
-### Kiro (Claude GRATUITO)
+### Kiro (Claude FREE)
```bash
-Dashboard → Connetti Kiro
-→ AWS Builder ID o Google/GitHub
-→ Utilizzo illimitato
+Dashboard → Connect Kiro
+→ AWS Builder ID or Google/GitHub
+→ Unlimited usage
-Modelli:
+Models:
kr/claude-sonnet-4.5
kr/claude-haiku-4.5
```
@@ -1213,51 +1622,51 @@ Modelli:
-🎨 Creare combo
+🎨 Create Combos
-### Esempio 1: Massimizzare abbonamento → Backup economico
+### Example 1: Maximize Subscription → Cheap Backup
```
-Dashboard → Combo → Crea nuovo
+Dashboard → Combos → Create New
-Nome: premium-coding
-Modelli:
- 1. cc/claude-opus-4-6 (Abbonamento principale)
- 2. glm/glm-4.7 (Backup economico, $0.6/1M)
- 3. minimax/MiniMax-M2.1 (Fallback più economico, $0.20/1M)
+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)
-Usa nel CLI: premium-coding
+Use in CLI: premium-coding
```
-### Esempio 2: Solo gratuiti (Costo zero)
+### Example 2: Free-Only (Zero Cost)
```
-Nome: free-combo
-Modelli:
- 1. gc/gemini-3-flash-preview (180K gratis/mese)
- 2. if/kimi-k2-thinking (illimitato)
- 3. qw/qwen3-coder-plus (illimitato)
+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)
-Costo: $0 per sempre!
+Cost: $0 forever!
```
-🔧 Integrazione CLI
+🔧 CLI Integration
### Cursor IDE
```
-Impostazioni → Modelli → Avanzato:
+Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
- OpenAI API Key: [dalla dashboard OmniRoute]
+ OpenAI API Key: [from OmniRoute dashboard]
Model: cc/claude-opus-4-6
```
### Claude Code
-Usa la pagina **CLI Tools** nella dashboard per la configurazione con un clic, o modifica `~/.claude/settings.json` manualmente.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1270,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Opzione 1 — Dashboard (consigliato):**
+**Option 1 — Dashboard (recommended):**
```
-Dashboard → CLI Tools → OpenClaw → Seleziona Modello → Applica
+Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Opzione 2 — Manuale:** Modifica `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1292,155 +1701,420 @@ Dashboard → CLI Tools → OpenClaw → Seleziona Modello → Applica
}
```
-> **Nota:** OpenClaw funziona solo con OmniRoute locale. Usa `127.0.0.1` invece di `localhost` per evitare problemi di risoluzione IPv6.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
### Cline / Continue / RooCode
```
-Impostazioni → Configurazione API:
+Settings → API Configuration:
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
- API Key: [dalla dashboard OmniRoute]
+ API Key: [from OmniRoute dashboard]
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Risoluzione Problemi
+## Risoluzione dei Problemi
-Clicca per espandere la guida alla risoluzione problemi
+Click to expand troubleshooting guide
**"Language model did not provide messages"**
-- Quota del provider esaurita → Controlla il tracker quote nella dashboard
-- Soluzione: Usa un combo con fallback o passa a un livello più economico
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
**Rate limiting**
-- Quota abbonamento esaurita → Fallback a GLM/MiniMax
-- Aggiungi combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**Token OAuth scaduto**
+**OAuth token expired**
-- Rinnovato automaticamente da OmniRoute
-- Se il problema persiste: Dashboard → Provider → Riconnetti
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Costi elevati**
+**High costs**
-- Controlla le statistiche di utilizzo in Dashboard → Costi
-- Cambia il modello principale a GLM/MiniMax
-- Usa il livello gratuito (Gemini CLI, iFlow) per compiti non critici
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**La dashboard si apre sulla porta sbagliata**
+**Dashboard/API ports are wrong**
-- Imposta `PORT=20128` e `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Errori cloud sync**
+**Cloud sync errors**
-- Verifica che `BASE_URL` punti alla tua istanza in esecuzione
-- Verifica che `CLOUD_URL` punti all'endpoint cloud previsto
-- Mantieni i valori `NEXT_PUBLIC_*` allineati con i valori del server
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Il primo login non funziona**
+**First login not working**
-- Controlla `INITIAL_PASSWORD` nel `.env`
-- Se non impostata, la password predefinita è `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Nessun log delle richieste**
+**No request logs**
-- Imposta `ENABLE_REQUEST_LOGS=true` nel `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Il test di connessione mostra "Invalid" per provider compatibili OpenAI**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Molti provider non espongono l'endpoint `/models`
-- OmniRoute v1.0.6+ include validazione fallback tramite chat completions
-- Assicurati che la URL base includa il suffisso `/v1`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
+
+### 🔐 OAuth on a Remote Server
+
+
+
+
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
+
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
+
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
+
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solution: Configure your own OAuth credentials
+
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
+
+#### Passo a passo
+
+**1. Acesse o Google Cloud Console**
+
+Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Crie um novo OAuth 2.0 Client ID**
+
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
+
+**3. Adicione as Authorized Redirect URIs**
+
+No campo **"Authorized redirect URIs"**, adicione:
+
+```
+https://seu-servidor.com/callback
+```
+
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
+
+**4. Salve e copie as credenciais**
+
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
+
+**5. Configure as variáveis de ambiente**
+
+No seu `.env` (ou nas variáveis de ambiente do Docker):
+
+```bash
+# Para Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+
+# Para Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+```
+
+**6. Reinicie o OmniRoute**
+
+```bash
+# Se usando npm:
+npm run dev
+
+# Se usando Docker:
+docker restart omniroute
+```
+
+**7. Tente conectar novamente**
+
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
+
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
+
+---
+
+#### Workaround temporário (sem configurar credenciais próprias)
+
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
+
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
+4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
+5. Clique em **"Connect"**
+
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **Runtime**: Node.js 20+
-- **Linguaggio**: TypeScript 5.9 — **100% TypeScript** in `src/` e `open-sse/` (v1.0.6)
+## 🛠️ Tech Stack
+
+
+Click to expand tech stack details
+
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
-- **Database**: LowDB (JSON) + SQLite (stato dominio + log proxy)
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
- **Streaming**: Server-Sent Events (SSE)
-- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
-- **Testing**: Node.js test runner (368+ test unitari)
-- **CI/CD**: GitHub Actions (pubblicazione automatica npm + Docker Hub al rilascio)
-- **Sito Web**: [omniroute.online](https://omniroute.online)
-- **Pacchetto**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
-- **Resilienza**: Circuit breaker, backoff esponenziale, anti-thundering herd, TLS spoofing
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
+
+
---
-## 📖 Documentazione
+## Documentazione
-| Documento | Descrizione |
-| ----------------------------------------------- | -------------------------------------------------- |
-| [Guida Utente](docs/USER_GUIDE.md) | Provider, combo, integrazione CLI, deploy |
-| [Riferimento API](docs/API_REFERENCE.md) | Tutti gli endpoint con esempi |
-| [Risoluzione Problemi](docs/TROUBLESHOOTING.md) | Problemi comuni e soluzioni |
-| [Architettura](docs/ARCHITECTURE.md) | Architettura del sistema e dettagli interni |
-| [Come Contribuire](CONTRIBUTING.md) | Setup di sviluppo e linee guida |
-| [Spec OpenAPI](docs/openapi.yaml) | Specifica OpenAPI 3.0 |
-| [Politica di Sicurezza](SECURITY.md) | Segnalazione vulnerabilità e pratiche di sicurezza |
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 🗺️
+## 🗺️ Roadmap
-## 👥 Contributori
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Come Contribuire
+### How to Contribute
-1. Fai il fork del repository
-2. Crea il tuo branch di funzionalità (`git checkout -b feature/amazing-feature`)
-3. Fai il commit delle modifiche (`git commit -m 'Add amazing feature'`)
-4. Fai il push al branch (`git push origin feature/amazing-feature`)
-5. Apri una Pull Request
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Consulta [CONTRIBUTING.md](CONTRIBUTING.md) per le linee guida dettagliate.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Rilasciare una nuova versione
+### Releasing a New Version
```bash
-# Crea un rilascio — la pubblicazione npm avviene automaticamente
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+# Create a release — npm publish happens automatically
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Cronologia Stelle
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Ringraziamenti
+## 🙏 Acknowledgments
-Un ringraziamento speciale a **[9router](https://github.com/decolua/9router)** di **[decolua](https://github.com/decolua)** — il progetto originale che ha ispirato questo fork. OmniRoute si costruisce su quell'incredibile base con funzionalità aggiuntive, API multi-modali e una riscrittura completa in TypeScript.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Un ringraziamento speciale a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — l'implementazione originale in Go che ha ispirato questo porting in JavaScript.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Licenza
+## Licenza
-Licenza MIT — vedi [LICENSE](LICENSE) per i dettagli.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Fatto con ❤️ per gli sviluppatori che programmano 24/7
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/it/docs/FEATURES.md b/docs/i18n/it/docs/FEATURES.md
new file mode 100644
index 0000000000..ad12da09c2
--- /dev/null
+++ b/docs/i18n/it/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Italiano)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/ja/README.md b/docs/i18n/ja/README.md
index 14e562a8e7..492aecaae9 100644
--- a/docs/i18n/ja/README.md
+++ b/docs/i18n/ja/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — 無料の AI ゲートウェイ
+# 🚀 OmniRoute — The Free AI Gateway (日本語)
-### コーディングを決してやめないでください。自動フォールバックを備えた **無料および低コストの AI モデル**へのスマート ルーティング。
-
-_ユニバーサル API プロキシ — 1 つのエンドポイント、36 以上のプロバイダー、ダウンタイムなし。_
-
-**チャット補完 • 埋め込み • 画像生成 • オーディオ • 再ランキング • 100% TypeScript **
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 お気に入りのコーディング エージェント向けの無料 AI プロバイダー
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_AI を活用した IDE または CLI ツールを、無制限のコーディングのための無料 API ゲートウェイである OmniRoute 経由で接続します。_
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _AI を活用した IDE または CLI ツールを、無制限のコーディン
|
-📡 すべてのエージェントは http://localhost:20128/v1 または http://cloud.omniroute.online/v1 経由で接続します — 1 つの構成、無制限のモデルとクォータ
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 ウェブサイト](https://omniroute.online) • [🚀 クイックスタート](#-クイックスタート) • [💡 主な機能](#-主な機能) • [📖 ドキュメント](#-ドキュメント) • [💰 料金](#-価格の概要) • [💬 WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **対応言語:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 なぜオムニルートなのか?
-
-**お金の無駄遣いや限界に達するのはやめましょう:**
-
--
サブスクリプション割り当ては毎月未使用のまま期限切れになります
--
レート制限によりコーディングの途中で停止する
--
高価な API (プロバイダーごとに月額 20 ~ 50 ドル)
--
プロバイダー間の手動切り替え
-
-**OmniRoute はこれを解決します:**
-
-- ✅ **サブスクリプションを最大化** - クォータを追跡し、リセットする前にすべてのビットを使用します
-- ✅ **自動フォールバック** - サブスクリプション → API キー → 安価 → 無料、ダウンタイムなし
-- ✅ **マルチアカウント** - プロバイダーごとのアカウント間のラウンドロビン
-- ✅ **ユニバーサル** - Claude Code、Codex、Gemini CLI、Cursor、Cline、OpenClaw、あらゆる CLI ツールで動作します
-
----
-
-## 📧 サポート
-
-> 💬 **コミュニティに参加してください!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — ヘルプを取得し、ヒントを共有し、最新情報を入手してください。
-
-- **ウェブサイト**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **問題**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **オリジナル プロジェクト**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 仕組み
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,452 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 OmniRoute が解決するもの — 30 の実際の問題点とユースケース
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **AI ツールを使用するすべての開発者は、これらの問題に日々直面しています。** OmniRoute は、コスト超過から地域ブロック、壊れた OAuth フローからプロトコル操作、企業の可観測性まで、それらすべてを解決するために構築されました。
+> **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 protocol operations and enterprise observability.
-💸 1. 「高価なサブスクリプションの料金を支払っているのに、制限によって中断されます」
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-開発者は、Claude Pro、Codex Pro、または GitHub Copilot に月額 20 ~ 200 ドルを支払います。有料であっても、割り当てには上限があり、5 時間の使用量、週ごとの制限、または分ごとのレート制限があります。コーディング セッションの途中でプロバイダーが応答を停止し、開発者はフローと生産性を失います。
+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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **スマート 4 層フォールバック** — サブスクリプション クォータが不足すると、手動介入なしで自動的に API キー→格安→無料にリダイレクトされます。
-- **リアルタイム クォータ トラッキング** — リセット カウントダウン (5 時間、毎日、毎週) でトークンの消費量をリアルタイムで表示します。
-- **マルチアカウントのサポート** — 自動ラウンドロビンによるプロバイダーごとの複数のアカウント — 1 つのアカウントがなくなると、次のアカウントに切り替わります
-- **カスタム コンボ** — 6 つのバランシング戦略 (フィルファースト、ラウンドロビン、P2C、ランダム、最小使用、コスト最適化) を備えたカスタマイズ可能なフォールバック チェーン
-- **Codex Business クォータ** — ビジネス/チームのワークスペース クォータをダッシュボードで直接監視
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. 「複数のプロバイダーを使用する必要がありますが、それぞれに異なる API があります」
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI は 1 つの形式を使用し、Claude (Anthropic) は別の形式を使用し、Gemini はさらに別の形式を使用します。開発者が異なるプロバイダーのモデルをテストしたり、プロバイダー間でフォールバックしたりする場合は、SDK を再構成し、エンドポイントを変更し、互換性のない形式に対処する必要があります。カスタム プロバイダー (FriendLI、NIM) には、非標準モデルのエンドポイントがあります。
+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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **統合エンドポイント** - 単一の `http://localhost:20128/v1` が 36 を超えるすべてのプロバイダーのプロキシとして機能します
-- **フォーマット変換** — 自動かつ透過的: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-- **レスポンスのサニタイズ** — OpenAI SDK v1.83 以降を破壊する非標準フィールド (`x_groq`、`usage_breakdown`、`service_tier`) を除去します。
-- **ロールの正規化** — 非 OpenAI プロバイダーに対して `developer` → `system` を変換します。 GLM/ERNIE 用 `system` → `user`
-- **Think Tag Extraction** — DeepSeek R1 などのモデルから `` ブロックを標準化された `reasoning_content` に抽出します。
-- **Gemini の構造化出力** — `json_schema` → `responseMimeType`/`responseSchema` 自動変換
-- **`stream` のデフォルトは `false`** — OpenAI 仕様に準拠し、Python/Rust/Go SDK での予期しない SSE を回避します
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. 「AI プロバイダーが私の地域/国をブロックしています」
+🌐 3. "My AI provider blocks my region/country"
-OpenAI/Codex などのプロバイダーは、特定の地理的地域からのアクセスをブロックします。 OAuth および API 接続中に、ユーザーは `unsupported_country_region_territory` のようなエラーを受け取ります。これは、発展途上国の開発者にとって特にイライラさせられます。
+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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **3 レベルのプロキシ構成** — 3 つのレベルで構成可能なプロキシ: グローバル (すべてのトラフィック)、プロバイダーごと (1 つのプロバイダーのみ)、および接続/キーごと
-- **色分けされたプロキシ バッジ** — 視覚的なインジケーター: 🟢 グローバル プロキシ、🟡 プロバイダー プロキシ、🔵 接続プロキシ、常に IP を表示
-- **プロキシを介した OAuth トークン交換** — OAuth フローもプロキシを通過し、`unsupported_country_region_territory` を解決します
-- **プロキシ経由の接続テスト** — 接続テストは構成されたプロキシを使用します (直接バイパスはありません)。
-- **SOCKS5 サポート** — アウトバウンド ルーティングに対する SOCKS5 プロキシの完全なサポート
-- **TLS フィンガープリント スプーフィング** — `wreq-js` を介したブラウザーのような TLS フィンガープリントによりボット検出をバイパスします
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. 「AIを使ってコーディングしたいけどお金がない」
+🆓 4. "I want to use AI for coding but I have no money"
-誰もが AI サブスクリプションに月額 20 ~ 200 ドルを支払えるわけではありません。学生、新興国の開発者、愛好家、フリーランサーは、高品質のモデルに無料でアクセスできる必要があります。
+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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **無料利用枠プロバイダーの組み込み** — 100% 無料プロバイダーのネイティブ サポート: iFlow (8 つの無制限のモデル)、Qwen (3 つの無制限のモデル)、Kiro (無料の Claude)、Gemini CLI (180K/月無料)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **無料のみのコンボ** — チェーン `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 月額 0 ドル、ダウンタイムなし
-- **NVIDIA NIM 無料クレジット** — 1000 の無料クレジットが統合されています
-- **コスト最適化戦略** — 利用可能な最も安価なプロバイダーを自動的に選択するルーティング戦略
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. 「AI ゲートウェイを不正アクセスから保護する必要があります」
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-AI ゲートウェイをネットワーク (LAN、VPS、Docker) に公開すると、アドレスを持っている人は誰でも開発者のトークン/クォータを消費できます。保護がなければ、API は誤用、即時挿入、悪用に対して脆弱になります。
+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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **API キー管理** — 専用の `/dashboard/api-manager` ページを使用したプロバイダーごとの生成、ローテーション、およびスコープ設定
-- **モデルレベルの権限** — すべて許可/制限の切り替えにより、API キーを特定のモデル (`openai/*`、ワイルドカード パターン) に制限します
-- **API エンドポイント保護** - `/v1/models` のキーを要求し、リストから特定のプロバイダーをブロックします
-- **認証ガード + CSRF 保護** — すべてのダッシュボード ルートは `withAuth` ミドルウェア + CSRF トークンで保護されています
-- **レート リミッター** — 構成可能なウィンドウによる IP ごとのレート制限
-- **IP フィルタリング** — アクセス制御の許可リスト/ブロックリスト
-- **プロンプト インジェクション ガード** — 悪意のあるプロンプト パターンに対するサニタイズ
-- **AES-256-GCM 暗号化** — 認証情報は保存時に暗号化されます
+- **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. 「プロバイダーがダウンしてコーディング フローが失われました」
+🛑 6. "My provider went down and I lost my coding flow"
-AI プロバイダーが不安定になったり、5xx エラーを返したり、一時的なレート制限に達したりする可能性があります。開発者が単一のプロバイダーに依存している場合、それらは中断されます。サーキット ブレーカーがないと、再試行を繰り返すとアプリケーションがクラッシュする可能性があります。
+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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **プロバイダーごとのサーキット ブレーカー** — 設定可能なしきい値とクールダウンによる自動開閉 (クローズ/オープン/ハーフオープン)
-- **指数バックオフ** — 漸進的な再試行遅延
-- **Anti-Thundering Herd** — 同時再試行の嵐に対するミューテックス + セマフォ保護
-- **コンボ フォールバック チェーン** - プライマリ プロバイダーに障害が発生した場合、介入なしで自動的にチェーンを通過します。
-- **コンボ サーキット ブレーカー** — コンボ チェーン内の障害が発生したプロバイダーを自動的に無効にします
-- **ヘルス ダッシュボード** — 稼働時間モニタリング、サーキット ブレーカーの状態、ロックアウト、キャッシュ統計、p50/p95/p99 レイテンシ
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. 「各 AI ツールの設定は面倒で繰り返しが多い」
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-開発者は、Cursor、Claude Code、Codex CLI、OpenClaw、Gemini CLI、Kilo Code を使用します。各ツールには異なる構成 (API エンドポイント、キー、モデル) が必要です。プロバイダーや機種変更時に再設定するのは時間の無駄です。
+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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **CLI ツール ダッシュボード** — Claude Code、Codex CLI、OpenClaw、Kilo Code、Antigravity、Cline をワンクリックでセットアップできる専用ページ
-- **GitHub Copilot Config Generator** — モデルを一括選択して VS Code の `chatLanguageModels.json` を生成します
-- **オンボーディング ウィザード** - 初めてユーザー向けのガイド付き 4 ステップ セットアップ
-- **1 つのエンドポイント、すべてのモデル** — `http://localhost:20128/v1` を 1 回構成すると、36 を超えるプロバイダーにアクセスできます
+- **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 67+ providers
-🔑 8. 「複数のプロバイダーからの OAuth トークンを管理するのは地獄です」
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code、Codex、Gemini CLI、Copilot — すべては有効期限切れのトークンを持つ OAuth 2.0 を使用します。開発者は定期的に再認証し、`client_secret is missing`、`redirect_uri_mismatch`、およびリモート サーバーの障害に対処する必要があります。 LAN/VPS 上の OAuth は特に問題があります。
+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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **自動トークン更新** — OAuth トークンは有効期限が切れる前にバックグラウンドで更新されます。
-- **OAuth 2.0 (PKCE) ビルトイン** — Claude Code、Codex、Gemini CLI、Copilot、Kiro、Qwen、iFlow の自動フロー
-- **マルチアカウント OAuth** — JWT/ID トークン抽出によるプロバイダーごとの複数のアカウント
-- **OAuth LAN/リモート修正** — `redirect_uri` のプライベート IP 検出 + リモート サーバーの手動 URL モード
-- **Nginx の背後にある OAuth** — リバース プロキシの互換性のために `window.location.origin` を使用します
-- **リモート OAuth ガイド** — VPS/Docker での Google Cloud 認証情報のステップバイステップ ガイド
+- **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. 「どこにいくら使っているのか分かりません」
+📊 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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **コスト分析ダッシュボード** — トークンごとのコスト追跡とプロバイダーごとの予算管理
-- **階層ごとの予算制限** — 自動フォールバックをトリガーする階層ごとの支出上限
-- **モデルごとの価格構成** — モデルごとに構成可能な価格
-- **API キーごとの使用統計** — キーごとのリクエスト数と最後に使用されたタイムスタンプ
-- **分析ダッシュボード** — 統計カード、モデル使用状況グラフ、成功率と遅延を含むプロバイダー表
+- **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. 「AI 呼び出しのエラーや問題を診断できません」
+🐛 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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **統合ログ ダッシュボード** — 4 つのタブ: リクエスト ログ、プロキシ ログ、監査ログ、コンソール
-- **コンソール ログ ビューア** — 色分けされたレベル、自動スクロール、検索、フィルターを備えたリアルタイムのターミナル スタイルのビューア
-- **SQLite プロキシ ログ** — サーバーの再起動後も存続する永続的なログ
-- **Translator Playground** — 4 つのデバッグ モード: プレイグラウンド (形式変換)、チャット テスター (往復)、テストベンチ (バッチ)、ライブ モニター (リアルタイム)
-- **リクエスト テレメトリ** — p50/p95/p99 レイテンシ + X-Request-Id トレース
-- **ローテーションを使用したファイルベースのログ** — コンソール インターセプターは、サイズベースのローテーションを使用してすべてを JSON ログにキャプチャします。
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. 「ゲートウェイの導入と保守は複雑です」
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-さまざまな環境 (ローカル、VPS、Docker、クラウド) 間で AI プロキシをインストール、構成、維持するには、多大な労力がかかります。ハードコーディングされたパス、ディレクトリ上の `EACCES`、ポートの競合、クロスプラットフォーム ビルドなどの問題により、摩擦が増大します。
+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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **npm グローバル インストール** — `npm install -g omniroute && omniroute` — 完了
-- **Docker マルチプラットフォーム** — AMD64 + ARM64 ネイティブ (Apple Silicon、AWS Graviton、Raspberry Pi)
-- **Docker Compose プロファイル** — `base` (CLI ツールなし) および `cli` (Claude Code、Codex、OpenClaw あり)
-- **Electron デスクトップ アプリ** — システム トレイ、自動起動、オフライン モードを備えた Windows/macOS/Linux 用ネイティブ アプリ
-- **分割ポート モード** - 高度なシナリオ (リバース プロキシ、コンテナ ネットワーキング) 向けに個別のポート上の API とダッシュボード
-- **Cloud Sync** — Cloudflare Workers を介したデバイス間での設定の同期
-- **DB バックアップ** — すべての設定の自動バックアップ、復元、エクスポート、インポート
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. 「インターフェースは英語のみで、私のチームは英語を話せません」
+🌍 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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **ダッシュボード i18n — 30 言語** — アラビア語、ブルガリア語、デンマーク語、ドイツ語、スペイン語、フィンランド語、フランス語、ヘブライ語、ヒンディー語、ハンガリー語、インドネシア語、イタリア語、日本語、韓国語、マレー語、オランダ語、ノルウェー語、ポーランド語、ポルトガル語 (PT/BR)、ルーマニア語、ロシア語、スロバキア語、スウェーデン語、タイ語、ウクライナ語、ベトナム語、中国語、フィリピン語、英語
-- **RTL サポート** — アラビア語とヘブライ語の右から左へのサポート
-- **多言語 README** — 30 件の完全なドキュメント翻訳
-- **言語セレクター** — リアルタイム切り替えのためのヘッダーの地球儀アイコン
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. 「チャット以上のものが必要です — 埋め込み、画像、音声が必要です」
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-AIは単なるチャット補完ではありません。開発者は、画像の生成、音声の文字起こし、RAG の埋め込みの作成、ドキュメントの再ランク付け、およびコンテンツの管理を行う必要があります。各 API には異なるエンドポイントと形式があります。
+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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **エンベディング** — 6 つのプロバイダーと 9 つ以上のモデルを備えた `/v1/embeddings`
-- **画像生成** — 10 プロバイダーと 20 以上のモデルを備えた `/v1/images/generations` (OpenAI、xAI、Togetter、Fireworks、Nebius、Hyperbolic、NanoBanana、Antigravity、SD WebUI、ComfyUI)
-- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff、SVD) および SD WebUI
-- **テキストから音楽へ** — `/v1/music/generations` — ComfyUI (安定したオーディオ オープン、MusicGen)
-- **音声転写** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM、HuggingFace、Qwen3
-- **テキスト読み上げ** — `/v1/audio/speech` — イレブンラボ、Nvidia NIM、HuggingFace、Coqui、Tortoise、Qwen3、+ 既存のプロバイダー
-- **モデレーション** — `/v1/moderations` — コンテンツの安全性チェック
-- **再ランキング** — `/v1/rerank` — ドキュメントの関連性の再ランキング
-- **応答 API** — Codex の `/v1/responses` の完全サポート
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. 「モデル間で品質をテストして比較する方法がありません」
+🧪 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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **LLM 評価** — 挨拶、数学、地理、コード生成、JSON 準拠、翻訳、マークダウン、安全性の拒否をカバーする 10 個の事前ロードされたケースによるゴールデン セット テスト
-- **4 つのマッチ戦略** — `exact`、`contains`、`regex`、`custom` (JS 関数)
-- **Translator Playground Test Bench** — 複数の入力と予想される出力を使用したバッチ テスト、クロスプロバイダー比較
-- **チャット テスター** — 視覚的な応答レンダリングによる完全な往復
-- **ライブ モニター** — プロキシを通過するすべてのリクエストのリアルタイム ストリーム
+- **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. 「パフォーマンスを落とさずにスケールする必要がある」
+📈 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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **セマンティック キャッシュ** — 2 層キャッシュ (署名 + セマンティック) によりコストと遅延が削減されます。
-- **リクエストの冪等性** — 同一のリクエストに対する重複排除ウィンドウは 5 秒です
-- **レート制限検出** — プロバイダーごとの RPM、最小ギャップ、最大同時トラッキング
-- **編集可能なレート制限** — [設定] → [永続性を伴う回復力] で構成可能なデフォルト
-- **API キー検証キャッシュ** — 運用パフォーマンスのための 3 層キャッシュ
-- **テレメトリ付きヘルス ダッシュボード** — p50/p95/p99 レイテンシ、キャッシュ統計、稼働時間
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. 「モデルの動作をグローバルに制御したい」
+🤖 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.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- **システム プロンプト インジェクション** — すべてのリクエストに適用されるグローバル プロンプト
-- **思考予算検証** — リクエストごとの推論トークン割り当て制御 (パススルー、自動、カスタム、適応)
-- **6 ルーティング戦略** — リクエストの分散方法を決定するグローバル戦略
-- **ワイルドカード ルーター** - `provider/*` パターンは任意のプロバイダーに動的にルーティングします
-- **コンボ有効/無効切り替え** — ダッシュボードから直接コンボを切り替えます
-- **プロバイダー切り替え** — ワンクリックでプロバイダーのすべての接続を有効/無効にします。
-- **ブロックされたプロバイダー** — `/v1/models` リストから特定のプロバイダーを除外します
+- **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
-🧰 17. 「一流の製品機能として MCP ツールが必要です」
+🧰 17. "I need MCP tools as first-class product capabilities"
-多くの AI ゲートウェイは、MCP を非表示の実装詳細としてのみ公開します。チームには、目に見えて管理しやすいオペレーション レイヤーが必要です。
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- MCP はダッシュボードのナビゲーションとエンドポイント プロトコル タブに表示されます
-- プロセス、ツール、スコープ、監査を備えた専用の MCP 管理ページ
-- `omniroute --mcp` およびクライアントのオンボーディング用の組み込みクイックスタート
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. 「同期 + ストリーム タスク パスを備えた A2A オーケストレーションが必要です」
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-エージェント ワークフローには、直接応答と、ライフサイクル制御による長時間実行のストリーミング実行の両方が必要です。
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- A2A JSON-RPC エンドポイント (`POST /a2a`) (`message/send` および `message/stream`)
-- 端末状態の伝播を伴う SSE ストリーミング
-- `tasks/get` および `tasks/cancel` のタスク ライフサイクル API
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. 「推測されたステータスではなく、実際の MCP プロセスの健全性が必要です」
+🛰️ 19. "I need real MCP process health, not guessed status"
-運用チームは、API が到達可能かどうかだけでなく、MCP が実際に生きているかどうかを知る必要があります。
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- PID、タイムスタンプ、トランスポート、ツール数、およびスコープモードを含むランタイムハートビートファイル
-- ハートビートと最近のアクティビティを組み合わせた MCP ステータス API
-- プロセス/稼働時間/ハートビートの鮮度を示す UI ステータス カード
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. 「監査可能な MCP ツールの実行が必要です」
+📋 20. "I need auditable MCP tool execution"
-ツールが構成を変更したり、運用アクションをトリガーしたりする場合、チームはフォレンジックなトレーサビリティを必要とします。
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- MCP ツール呼び出しの SQLite ベースの監査ログ
-- ツール、成功/失敗、API キー、ページネーションによるフィルター
-- ダッシュボード監査テーブル + 自動化のための統計エンドポイント
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. 「統合ごとにスコープ指定された MCP 権限が必要です」
+🔐 21. "I need scoped MCP permissions per integration"
-異なるクライアントには、ツール カテゴリへの最小限の特権アクセスが必要です。
+Different clients should have least-privilege access to tool categories.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- 制御されたツールアクセスのための 9 つの詳細な MCP スコープ
-- MCP 管理 UI でのスコープの適用と可視性
-- 運用ツールの安全なデフォルト姿勢
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. 「再デプロイせずに運用制御が必要です」
+⚙️ 22. "I need operational controls without redeploying"
-チームは、インシデントやコスト イベントが発生した際に、実行時の変更を迅速に行う必要があります。
+Teams need quick runtime changes during incidents or cost events.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- MCP ダッシュボードからコンボのアクティブ化を直接切り替えます
-- 事前定義されたポリシーパックから復元プロファイルを適用
-- 同じ操作パネルからサーキットブレーカーの状態をリセット
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. 「ライブ A2A タスクのライフサイクルの可視化とキャンセルが必要です」
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-ライフサイクルの可視性がなければ、タスク インシデントの優先順位付けが困難になります。
+Without lifecycle visibility, task incidents become hard to triage.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- ページネーションを使用した状態/スキルによるタスクのリスト/フィルタリング
-- タスクのメタデータ、イベント、アーティファクトのドリルダウン
-- タスクキャンセルエンドポイントと確認付きの UI アクション
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. 「A2A ロード用のアクティブ ストリーム メトリクスが必要です」
+🌊 24. "I need active stream metrics for A2A load"
-ストリーミング ワークフローには、同時実行性とライブ接続に関する運用上の洞察が必要です。
+Streaming workflows require operational insight into concurrency and live connections.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- アクティブ ストリーム カウンターが A2A ステータスに統合されました
-- 最後のタスクのタイムスタンプと状態ごとのカウント
-- リアルタイム運用監視用の A2A ダッシュボード カード
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. 「クライアントの標準エージェント検出が必要です」
+🪪 25. "I need standard agent discovery for clients"
-外部クライアントとオーケストレーターには、オンボーディング用の機械可読メタデータが必要です。
+External clients and orchestrators need machine-readable metadata for onboarding.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- エージェント カードが `/.well-known/agent.json` で公開される
-- 管理UIに表示される能力とスキル
-- A2A ステータス API には自動化のための検出メタデータが含まれています
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. 「製品 UX にプロトコルの検出機能が必要です」
+🧭 26. "I need protocol discoverability in the product UX"
-ユーザーがプロトコルの表面を発見できない場合、導入とサポートの品質が低下します。
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- MCP および A2A のサイドバー エントリ
-- クイックスタートとステータスを含むエンドポイント ページの [プロトコル] タブ
-- 概要から専用の管理ダッシュボードへのリンク
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. 「実際のクライアントを使用したエンドツーエンドのプロトコル検証が必要です」
+🧪 27. "I need end-to-end protocol validation with real clients"
-模擬テストは、リリース前にプロトコルの互換性を検証するには十分ではありません。
+Mock tests are not enough to validate protocol compatibility before release.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- アプリを起動し、実際の MCP SDK クライアント トランスポートを使用する E2E スイート
-- A2A クライアントは、フローの検出、送信、ストリーミング、取得、キャンセルをテストします。
-- MCP 監査および A2A タスク API に対するアサーションのクロスチェック
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. 「すべてのインターフェースにわたって統合された可観測性が必要です」
+📡 28. "I need unified observability across all interfaces"
-プロトコルごとに可観測性を分割すると、盲点が生じ、MTTR が長くなります。
+Splitting observability by protocol creates blind spots and longer MTTR.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- ダッシュボード/ログ/分析を 1 つの製品に統合
-- OpenAI、MCP、A2A レイヤーにわたるヘルス + 監査 + リクエスト テレメトリ
-- ステータスと自動化のための運用 API
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. 「プロキシ + ツール + エージェント オーケストレーション用のランタイムが 1 つ必要です」
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-多くの個別のサービスを実行すると、運用コストが増加し、障害モードが増加します。
+Running many separate services increases operational cost and failure modes.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- OpenAI互換プロキシ、MCPサーバー、A2Aサーバーを1つのスタックに搭載
-- 共有認証、復元力、データストア、可観測性
-- すべての対話面にわたる一貫したポリシー モデル
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. 「グルーコードのスプロールなしでエージェント ワークフローを出荷する必要がある」
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-複数のアドホック サービスとスクリプトをつなぎ合わせると、チームの速度が低下します。
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**OmniRoute がそれを解決する方法:**
+**How OmniRoute solves it:**
-- クライアントとエージェント向けの統合エンドポイント戦略
-- 組み込みのプロトコル管理 UI とスモーク検証パス
-- 本番環境に対応した基盤 (セキュリティ、ロギング、復元力、バックアップ)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### プレイブックの例 (統合されたユースケース)
+### Example Playbooks (Integrated Use Cases)
-**戦略 A: 有料サブスクリプション + 安価なバックアップを最大限に活用する**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -684,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**プレイブック B: ゼロコストのコーディング スタック**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -696,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**プレイブック C: 24 時間年中無休の常時オンのフォールバック チェーン**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -709,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**プレイブック D: MCP + A2A を使用したエージェントの運用**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ クイックスタート
+## 🆓 Start Free — Zero Configuration Cost
-**1.グローバルにインストール:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## クイックスタート
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 ダッシュボードは `http://localhost:20128` に開きます
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| コマンド | 説明 |
-| ----------------------- | ----------------------------------------------- |
-| `omniroute` | サーバーを起動します (デフォルトのポート 20128) |
-| `omniroute --port 3000` | カスタムポートを使用する |
-| `omniroute --no-open` | ブラウザを自動的に開かない |
-| `omniroute --help` | ヘルプを表示 |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2.無料のプロバイダーに接続します:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-ダッシュボード → プロバイダー → **Claude Code** または **Antigravity** に接続 → OAuth ログイン → 完了!
+Optional split-port mode:
-**3. CLI ツールで使用します:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**それだけです!** 無料の AI モデルを使用してコーディングを始めましょう。
+### 2) Connect providers and create your API key
-**代替 — ソースから実行:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
-## 🐳 ドッカー
+## 🐳 Docker
-OmniRoute は、[Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute) のパブリック Docker イメージとして利用できます。
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**クイック実行:**
+**Quick run:**
```bash
docker run -d \
@@ -778,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**環境ファイルあり:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -793,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Docker Compose の使用:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -803,259 +880,552 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| 画像 | タグ | サイズ | 説明 |
-| ------------------------ | -------- | ------- | -------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | 最新の安定版リリース |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | 現在のバージョン |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
+## 🖥️ Desktop App — Offline & Always-On
-## 🖥️
+> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
-> 🆕 **新機能!** OmniRouteが**ネイティブデスクトップアプリケーション**としてWindows、macOS、Linuxで利用可能になりました。
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
-- 🖥️ **ネイティブウィンドウ** — システムトレイ統合付きの専用ウィンドウ
-- 🔄 **自動起動** — システムログイン時にOmniRouteを起動
-- 🔔 **ネイティブ通知** — クォータ枯渇やプロバイダー問題のアラート
-- ⚡ **ワンクリックインストール** — NSIS (Windows)、DMG (macOS)、AppImage (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 # 開発モード
-npm run electron:build # 現在のプラットフォーム
+# Development mode
+npm run electron:dev
+
+# Build for your platform
+npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
-📖 完全なドキュメント:[`electron/README.md`](electron/README.md)
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
+📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 価格の概要
+## 💰 Pricing at a Glance
-| 階層 | プロバイダー | コスト | クォータのリセット | 最適な用途 |
-| ------------------------- | -------------------------- | -------------------------- | ------------------- | ------------------ |
-| **💳 サブスクリプション** | クロード・コード (プロ) | $20/月 | 5 時間 + 毎週 | すでに購読済み |
-| | コーデックス (プラス/プロ) | $20-200/月 | 5 時間 + 毎週 | OpenAI ユーザー |
-| | ジェミニ CLI | **無料** | 180K/月 + 1K/日 | みんな! |
-| | GitHub コパイロット | $10-19/月 | 月刊 | GitHub ユーザー |
-| **🔑 API キー** | NVIDIA NIM | **無料** (1000 クレジット) | ワンタイム | 無料枠のテスト |
-| | ディープシーク | 従量課金制 | なし | 最高の価格/品質 |
-| | グロク | 無料利用枠 + 有料 | レート制限 | 超高速推論 |
-| | xAI (グロック) | 従量課金制 | なし | Grok モデル |
-| | ミストラル | 無料利用枠 + 有料 | レート制限 | ヨーロッパのAI |
-| | オープンルーター | 従量課金制 | なし | 100 以上のモデル |
-| **💰安い** | GLM-4.7 | $0.6/100万 | 毎日午前 10 時 | 予算のバックアップ |
-| | ミニマックス M2.1 | $0.2/100万 | 5時間ローリング | 最も安いオプション |
-| | キミ K2 | 月額 9 ドルのフラット | 1,000 万トークン/月 | 予測可能なコスト |
-| **🆓 無料** | iFlow | $0 | 無制限 | 8 モデルは無料 |
-| | クウェン | $0 | 無制限 | 3 モデルは無料 |
-| | キロ | $0 | 無制限 | クロード・フリー |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 プロのヒント:** Gemini CLI (180,000 無料/月) + iFlow (無制限の無料) コンボ = コスト 0 ドルから始めましょう!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 主な機能
+---
-### 🧠 コアルーティングとインテリジェンス
+## 🆓 Free Models — What You Actually Get
-| 特集 | 何をするのか |
-| ------------------------------------------- | ----------------------------------------------------------------------------------- |
-| 🎯 **スマート 4 層フォールバック** | 自動ルート: サブスクリプション → API キー → 格安 → 無料 |
-| 📊 **リアルタイムのクォータ追跡** | プロバイダーごとのライブ トークン数 + リセット カウントダウン |
-| 🔄 **フォーマット変換** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro シームレス + 応答サニタイズ |
-| 👥 **マルチアカウントのサポート** | インテリジェントな選択によるプロバイダーごとの複数のアカウント |
-| 🔄 **自動トークン更新** | OAuth トークンは再試行によって自動的に更新されます。 |
-| 🎨 **カスタムコンボ** | 6 つの戦略: フィルファースト、ラウンドロビン、p2c、ランダム、最小使用、コスト最適化 |
-| 🧩 **カスタムモデル** | 任意のモデル ID を任意のプロバイダーに追加する |
-| 🌐 **ワイルドカードルーター** | `provider/*` パターンを任意のプロバイダーに動的にルーティングする |
-| 🧠 **予算を考える** | 推論モデルのパススルー、自動、カスタム、および適応モード |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **システム プロンプト インジェクション** | すべてのリクエストに適用されるグローバル システム プロンプト |
-| 📄 **レスポンス API** | Codex の OpenAI Response API (`/v1/responses`) の完全なサポート |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 マルチモーダル API
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| 特集 | 何をするのか |
-| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **画像生成** | `/v1/images/generations` — 4 つのプロバイダー、9 つ以上のモデル |
-| 📐 **埋め込み** | `/v1/embeddings` — 6 つのプロバイダー、9 つ以上のモデル |
-| 🎤 **音声文字起こし** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **テキスト読み上げ** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **モデレーション** | `/v1/moderations` — コンテンツの安全性チェック |
-| 🔀 **再ランキング** | `/v1/rerank` — ドキュメントの関連性の再ランキング |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ 復元力とセキュリティ
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| 特集 | 何をするのか |
-| -------------------------------- | ---------------------------------------------------------------------------- |
-| 🔌 **サーキットブレーカー** | 設定可能なしきい値によるプロバイダーごとの自動開閉 |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🛡️ **対雷鳴の群れ** | API キープロバイダーのミューテックス + セマフォのレート制限 |
-| 🧠 **セマンティック キャッシュ** | 2 層キャッシュ (シグネチャ + セマンティック) によりコストと遅延が削減 |
-| ⚡ **冪等性のリクエスト** | 重複リクエストに対する 5 秒の重複除去ウィンドウ |
-| 🔒 **TLS 指紋スプーフィング** | wreq-js 経由で TLS ベースのボット検出をバイパスする |
-| 🌐 **IP フィルタリング** | API アクセス制御の許可リスト/ブロックリスト |
-| 📊 **編集可能なレート制限** | システム レベルで構成可能な RPM、最小ギャップ、最大同時実行 |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **API エンドポイント保護** | `/models` エンドポイントの認証ゲート + プロバイダー ブロック |
-| 🔒 **プロキシの可視性** | 色分けされたバッジ: 🟢 グローバル、🟡 プロバイダー、🔵 IP 表示による接続ごと |
-| 🌐 **3 レベルのプロキシ構成** | グローバル、プロバイダーごと、または接続ごとのレベルでプロキシを構成する |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 可観測性と分析
+### 🟡 QWEN MODELS (Device Code Auth)
-| 特集 | 何をするのか |
-| -------------------------------- | ------------------------------------------------------------------------------------------------------------ |
-| 📝 **リクエストログ** | 完全なリクエスト/レスポンス ログを含むデバッグ モード |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **SQLite プロキシ ログ** | 永続的なプロキシ ログはサーバーの再起動後も存続します。 |
-| 📊 **分析ダッシュボード** | Recharts を活用: 統計カード、モデル使用状況チャート、プロバイダー テーブル |
-| 📈 **進捗状況の追跡** | ストリーミング用の SSE 進行状況イベントをオプトインする |
-| 🧪 **LLM 評価** | 4 つの試合戦略によるゴールデン セット テスト |
-| 🔍 **テレメトリのリクエスト** | p50/p95/p99 レイテンシ集計 + X-Request-Id トレース |
-| 📋 **ログ ダッシュボード** | 統合された 4 つのタブ ページ: リクエスト ログ、プロキシ ログ、監査ログ、コンソール |
-| 🖥️ **コンソール ログ ビューア** | レベルフィルター、検索、自動スクロール機能を備えたリアルタイムターミナルスタイルのビューア |
-| 📑 **ファイルベースのロギング** | コンソール インターセプターは、ローテーションを使用してすべての出力を JSON ログ ファイルにキャプチャします。 |
-| 🏥 **健康ダッシュボード** | システム稼働時間、サーキット ブレーカーの状態、ロックアウト、キャッシュ統計 |
-| 💰 **コスト追跡** | 予算管理 + モデルごとの価格設定 |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ 導入と同期
+### 🟣 GEMINI CLI (Google OAuth)
-| 特集 | 何をするのか |
-| ----------------------------------- | ----------------------------------------------------------------------------------- |
-| 💾 **クラウド同期** | Cloudflare Workers 経由でデバイス間で構成を同期する |
-| 🌐 **どこにでも展開** | Localhost、VPS、Docker、Cloudflare ワーカー |
-| 🔑 **API キー管理** | プロバイダーごとに API キーを生成、ローテーション、スコープ設定する |
-| 🧙 **オンボーディング ウィザード** | 初めてのユーザーのための 4 ステップのガイド付きセットアップ |
-| 🔧 **CLI ツール ダッシュボード** | Claude、Codex、Cline、OpenClaw、Kilo、Antigravity をワンクリックで設定 |
-| 🔄 **DB バックアップ** | すべての設定の自動バックアップ、復元、エクスポートとインポート |
-| 🌐 **国際化** | next-intl を備えた完全な i18n — 英語 + ポルトガル語 (ブラジル) のサポート |
-| 🌍 **言語セレクター** | リアルタイム言語切り替え用のヘッダーの地球儀アイコン (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **カスタム データ ディレクトリ** | デフォルトの `~/.omniroute` ストレージ パスをオーバーライドする `DATA_DIR` 環境変数 |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 機能の詳細
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 スマート 4 層フォールバック
+Start MCP transport in stdio mode:
-自動フォールバックを使用してコンボを作成します。
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 リアルタイムのクォータ追跡
+Recommended validation flow:
-- プロバイダーごとのトークン消費量
-- リセットカウントダウン(5時間、毎日、毎週)
-- 有料レベルのコストの見積もり
-- 毎月の支出レポート
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 フォーマット変換
+Useful APIs for automation:
-フォーマット間でのシームレスな翻訳:
-
-- **OpenAI** ↔ **クロード** ↔ **ジェミニ** ↔ **OpenAI の応答**
-- CLI ツールが OpenAI 形式を送信 → OmniRoute が変換 → プロバイダーがネイティブ形式を受信
-- カスタム OpenAI エンドポイントをサポートするあらゆるツールと連携
-- **レスポンスのサニタイズ** — 厳密な OpenAI SDK 互換性のために非標準フィールドを削除します
-- **ロールの正規化** — 非 OpenAI の場合は `developer` → `system`。 `system` → `user` (GLM/ERNIE モデルの場合)
-- **思考タグの抽出** — `` ブロック → 思考モデル用の `reasoning_content`
-- **構造化された出力** — `json_schema` → Gemini の `responseMimeType`/`responseSchema`
-
-### 👥 マルチアカウントのサポート
-
-- プロバイダーごとに複数のアカウントを追加
-- 自動ラウンドロビンまたは優先順位ベースのルーティング
-- クォータに達した場合、次のアカウントにフォールバックします
-
-### 🔄 自動トークン更新
-
-- OAuth トークンは有効期限が切れる前に自動的に更新されます
-- 手動による再認証は必要ありません
-- すべてのプロバイダーにわたるシームレスなエクスペリエンス
-
-### 🎨 カスタムコンボ
-
-- 無制限のモデルの組み合わせを作成
-- 6 つの戦略: フィルファースト、ラウンドロビン、2 つの選択肢の累乗、ランダム、最小使用、コスト最適化
-- Cloud Sync を使用してデバイス間でコンボを共有
-
-### 🏥 健康ダッシュボード
-
-- システムステータス (稼働時間、バージョン、メモリ使用量)
-- プロバイダーごとのサーキットブレーカーの状態 (クローズ/オープン/ハーフオープン)
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-- レート制限ステータスとアクティブなロックアウト
-- 署名キャッシュ統計
-- レイテンシ テレメトリ (p50/p95/p99) + プロンプト キャッシュ
-- ワンクリックで健康状態をリセット
-
-### 🔧 翻訳者の遊び場
-
-OmniRoute には、API 翻訳のデバッグ、テスト、監視のための **4 つのモード**を備えた強力な組み込みのトランスレータ プレイグラウンドが含まれています。
-
-| モード | 説明 |
-| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻遊び場** | 直接形式変換 — API リクエスト本文を貼り付けると、OmniRoute がプロバイダー形式 (OpenAI ↔ Claude ↔ Gemini ↔ Responses API) 間でそれをどのように変換するかを即座に確認できます。テンプレートの例と形式の自動検出が含まれています。 |
-| **💬 チャット テスター** | 実際のチャット リクエストを OmniRoute 経由で送信すると、入力、翻訳されたリクエスト、プロバイダーの応答、そして返される翻訳された応答という完全なラウンドトリップを確認できます。コンボ ルーティングを検証するのに非常に役立ちます。 |
-| **🧪 テストベンチ** | バッチ テスト モード - 異なる入力と予想される出力を持つ複数のテスト ケースを定義し、それらをすべて一度に実行し、プロバイダーやモデル間で結果を比較します。 |
-| **📱 ライブモニター** | リアルタイムのリクエスト監視 — 受信リクエストが OmniRoute を通過するのを監視し、ライブで行われているフォーマット変換を確認し、問題を即座に特定します。 |
-
-**アクセス:** ダッシュボード → トランスレーター (サイドバー)
-
-### 💾 クラウド同期
-
-- デバイス間でプロバイダー、コンボ、設定を同期します
-- 自動バックグラウンド同期
-- 安全な暗号化ストレージ
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 評価 (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute には、ゴールデン セットに対して LLM 応答品質をテストするための評価フレームワークが組み込まれています。ダッシュボードの **Analytics → Evals** からアクセスします。
+Discover the agent:
-### 内蔵ゴールデンセット
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-プリロードされた「OmniRoute Golden Set」には、以下をカバーする 10 のテスト ケースが含まれています。
+Send a task:
-- 挨拶、数学、地理、コード生成
-- JSON形式への準拠、翻訳、マークダウン
-- 安全拒否(有害なコンテンツ)、カウント、ブール論理
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### 評価戦略
+Manage lifecycle:
-| 戦略 | 説明 | 例 |
-| ---------- | ------------------------------------------------------------------------------------------- | ----------- |
-| `exact` | 出力は正確に一致する必要があります | `"4"` |
-| `contains` | 出力には部分文字列が含まれている必要があります (大文字と小文字は区別されません)。 `"Paris"` |
-| `regex` | 出力は正規表現パターンと一致する必要があります | `"1.*2.*3"` |
-| `custom` | カスタム JS 関数は true/false を返します。 `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 セットアップガイド
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 サブスクリプションプロバイダー
+🧪 End-to-end protocol validation
-### クロード コード (Pro/Max)
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
+
+### Claude Code (Pro/Max)
```bash
Dashboard → Providers → Connect Claude Code
@@ -1068,9 +1438,9 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**プロのヒント:** 複雑なタスクには Opus を使用し、速度を求める場合は Sonnet を使用します。 OmniRoute はモデルごとの割り当てを追跡します。
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
-### OpenAI コーデックス (プラス/プロ)
+### OpenAI Codex (Plus/Pro)
```bash
Dashboard → Providers → Connect Codex
@@ -1082,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (月額 180,000 回無料!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1094,9 +1481,9 @@ Models:
gc/gemini-2.5-pro
```
-**ベストバリュー:** 膨大な無料枠!有料レベルの前にこれを使用してください。
+**Best Value:** Huge free tier! Use this before paid tiers.
-### GitHub コパイロット
+### GitHub Copilot
```bash
Dashboard → Providers → Connect GitHub
@@ -1112,87 +1499,88 @@ Models:
-🔑 API キープロバイダー
+🔑 API Key Providers
-### NVIDIA NIM (無料 1000 クレジット!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. サインアップ: [build.nvidia.com](https://build.nvidia.com)
-2. 無料の API キーを取得します (1000 推論クレジットが含まれます)
-3. ダッシュボード → プロバイダーの追加 → NVIDIA NIM:
- - API キー: `nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**モデル:** `nvidia/llama-3.3-70b-instruct`、`nvidia/mistral-7b-instruct`、および 50 以上
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**プロのヒント:** OpenAI 互換 API — OmniRoute のフォーマット変換とシームレスに連携します。
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
-### ディープシーク
+### DeepSeek
-1. サインアップ: [platform.deepseek.com](https://platform.deepseek.com)
-2. APIキーを取得する
-3. ダッシュボード → プロバイダーの追加 → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**モデル:** `deepseek/deepseek-chat`、`deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (無料利用枠あり!)
+### Groq (Free Tier Available!)
-1. サインアップ: [console.groq.com](https://console.groq.com)
-2. API キーを取得します (無料利用枠を含む)
-3. ダッシュボード → プロバイダーの追加 → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**モデル:** `groq/llama-3.3-70b`、`groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**プロのヒント:** 超高速推論 — リアルタイム コーディングに最適です。
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (100 以上のモデル)
+### OpenRouter (100+ Models)
-1. サインアップ: [openrouter.ai](https://openrouter.ai)
-2. APIキーを取得する
-3. ダッシュボード → プロバイダーの追加 → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**モデル:** 単一の API キーを通じて、すべての主要プロバイダーの 100 以上のモデルにアクセスします。
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 格安プロバイダー (バックアップ)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (毎日リセット、0.6 ドル/100 万ドル)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. サインアップ: [Zhipu AI](https://open.bigmodel.cn/) 2.コーディングプランからAPIキーを取得
-2. ダッシュボード → API キーの追加:
- - プロバイダー: `glm`
- - API キー: `your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**使用方法:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**プロのヒント:** コーディング プランでは、1/7 のコストで 3 倍の割り当てを提供します。毎日午前 10 時にリセットされます。
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (5 時間リセット、$0.20/1M)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. サインアップ: [MiniMax](https://www.minimax.io/)
-2. APIキーを取得する
-3. ダッシュボード → APIキーの追加
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**使用方法:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**プロのヒント:** 長いコンテキスト (100 万トークン) の最も安価なオプション!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### キミ K2 (月額一律 $9)
+### Kimi K2 ($9/month flat)
-1. 購読: [Moonshot AI](https://platform.moonshot.ai/)
-2. APIキーを取得する
-3. ダッシュボード → APIキーの追加
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**使用方法:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**プロのヒント:** 1,000 万トークンの固定 $9/月 = 0.90 ドル/100 万の実効コスト!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 無料プロバイダー (緊急バックアップ)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 つの無料モデル)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1207,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 つの無料モデル)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1219,7 +1607,7 @@ Models:
qw/qwen3-coder-flash
```
-### キロ (クロード・フリー)
+### Kiro (Claude FREE)
```bash
Dashboard → Connect Kiro
@@ -1234,9 +1622,9 @@ Models:
-🎨 コンボを作成
+🎨 Create Combos
-### 例 1: サブスクリプションを最大化 → 安価なバックアップ
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1250,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### 例 2: 無料のみ (コストゼロ)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1265,9 +1653,9 @@ Cost: $0 forever!
-🔧 CLI 統合
+🔧 CLI Integration
-### カーソル IDE
+### Cursor IDE
```
Settings → Models → Advanced:
@@ -1276,11 +1664,11 @@ Settings → Models → Advanced:
Model: cc/claude-opus-4-6
```
-### クロードコード
+### Claude Code
-ダッシュボードの **CLI ツール** ページを使用してワンクリック構成するか、`~/.claude/settings.json` を手動で編集します。
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
-### コーデックス CLI
+### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
@@ -1289,15 +1677,15 @@ export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
```
-### オープンクロー
+### OpenClaw
-**オプション 1 — ダッシュボード (推奨):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**オプション 2 — 手動:** `~/.openclaw/openclaw.json` を編集:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1313,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **注:** OpenClaw はローカル OmniRoute でのみ機能します。 IPv6 解決の問題を回避するには、`localhost` ではなく `127.0.0.1` を使用してください。
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### クライン / 継続 / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1325,110 +1713,245 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 トラブルシューティング
+## トラブルシューティング
-クリックしてトラブルシューティング ガイドを展開
+Click to expand troubleshooting guide
-**「言語モデルがメッセージを提供しませんでした」**
+**"Language model did not provide messages"**
-- プロバイダー クォータが枯渇した → ダッシュボード クォータ トラッカーを確認してください
-- 解決策: コンボフォールバックを使用するか、より安価なレベルに切り替える
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**レート制限**
+**Rate limiting**
-- サブスクリプション クォータ アウト → GLM/MiniMax へのフォールバック
-- コンボを追加: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**OAuth トークンの有効期限が切れました**
+**OAuth token expired**
-- OmniRouteによる自動更新
-- 問題が解決しない場合: ダッシュボード → プロバイダー → 再接続
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**高コスト**
+**High costs**
-- [ダッシュボード] → [コスト] で使用状況の統計を確認します。
-- プライマリ モデルを GLM/MiniMax に切り替えます
-- 重要ではないタスクには無料枠 (Gemini CLI、iFlow) を使用する
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**ダッシュボードが間違ったポートで開きます**
+**Dashboard/API ports are wrong**
-- `PORT=20128` および `NEXT_PUBLIC_BASE_URL=http://localhost:20128` を設定します
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**クラウド同期エラー**
+**Cloud sync errors**
-- `BASE_URL` が実行中のインスタンスを指していることを確認します
-- `CLOUD_URL` が予想されるクラウド エンドポイントを指していることを確認します
-- `NEXT_PUBLIC_*` 値をサーバー側の値と一致させます。
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**最初のログインが機能しない**
+**First login not working**
-- `.env` の `INITIAL_PASSWORD` を確認してください
-- 設定されていない場合、フォールバック パスワードは `123456` です
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**リクエストログなし**
+**No request logs**
-- `.env` に `ENABLE_REQUEST_LOGS=true` を設定します
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**OpenAI 互換プロバイダーの接続テストで「無効」と表示される**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- 多くのプロバイダーは `/models` エンドポイントを公開していません
-- OmniRoute v1.0.6+ には、チャット完了によるフォールバック検証が含まれています
-- ベース URL に `/v1` サフィックスが含まれていることを確認してください
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 サーバーリモートの OAuth (リモート OAuth セットアップ)
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ VPS/Docker/サーバーリモートの OmniRoute に関する重要事項**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-**反重力** と **Gemini CLI** を使用して **Google OAuth 2.0** を認証します。 O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs pré-cadastradas Google Cloud Console でアプリケーションを実行できません。
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-認証情報として OAuth は、`localhost`\*\* の OmniRoute データベース管理機能を備えていません。 OmniRoute サーバー リモートへのアクセス (例: `https://omniroute.meuservidor.com`)、Google による認証:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### 解決策: OAuth の固有資格情報を構成する
+#### Solution: Configure your own OAuth credentials
-**OAuth 2.0 クライアント ID** では、Google Cloud Console の URI がサーバーを参照するための正確な基準が設定されています。
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
-#### パッソ ア パッソ
+#### Step-by-step
-**1. Google Cloud コンソールへのアクセス**
+**1. Open Google Cloud Console**
-アブラ: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
-**2.新しい OAuth 2.0 クライアント ID**
+**2. Create a new OAuth 2.0 Client ID**
-- Clique em **「+ 認証情報の作成」** → **「OAuth クライアント ID」**
-- 応用情報: **「Web アプリケーション」**
-- 名前: escolha qualquer 名前 (例: `OmniRoute Remote`)
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
-**3.承認されたリダイレクト URI としての Adicione**
+**3. Add Authorized Redirect URIs**
-**「承認されたリダイレクト URI」** はありません、アディシオン:
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
+
+#### Passo a passo
+
+**1. Acesse o Google Cloud Console**
+
+Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Crie um novo OAuth 2.0 Client ID**
+
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
+
+**3. Adicione as Authorized Redirect URIs**
+
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
```
-> `seu-servidor.com` を IP サーバーとして置き換えてください (必要なポータルを含む、例: `http://45.33.32.156:20128/callback`)。
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4.コピーを認証情報として保存**
+**4. Salve e copie as credenciais**
-Google のほとんどの情報、**クライアント ID**、または **クライアント シークレット** を使用してください。
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5.環境変数として設定**
+**5. Configure as variáveis de ambiente**
-`.env` は使用できません (Docker の環境変数を変更します):
+No seu `.env` (ou nas variáveis de ambiente do Docker):
```bash
# Para Antigravity:
@@ -1441,7 +1964,7 @@ GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
```
-**6.レイニシー・オ・オムニルート**
+**6. Reinicie o OmniRoute**
```bash
# Se usando npm:
@@ -1451,148 +1974,147 @@ npm run dev
docker restart omniroute
```
-**7.テンテ コネクター ノヴァメンテ**
+**7. Tente conectar novamente**
-ダッシュボード → プロバイダー → Antigravity (Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
-`https://seu-servidor.com/callback` の認証機能を Google でリダイレクトして修正します。
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### 一時的な回避策 (資格情報を適切に設定する)
+#### Workaround temporário (sem configurar credenciais próprias)
-**URL のマニュアル**:
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. OmniRoute は Google の自動 URL を提供します
-2. `localhost` による Google の自動リダイレクト (サーバー リモートの要求)
-3. **URL をコピーしてください** ブラウザを使用してブラウザを開きます (カレーグのページを表示します)
-4. コール エッサ URL は、OmniRoute の接続モーダルなしです。
-5. クリーク**「接続」**
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
+4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
+5. Clique em **"Connect"**
-> 自動回避策の機能は URL から独立してリダイレクトされます。
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **ランタイム**: Node.js 18–22 LTS (⚠️ Node.js 24+ は **サポートされていません** — `better-sqlite3` ネイティブ バイナリは互換性がありません)
-- **言語**: TypeScript 5.9 — `src/` および `open-sse/` で **100% TypeScript** (v1.0.6)
-- **フレームワーク**: Next.js 16 + React 19 + Tailwind CSS 4
-- **データベース**: LowDB (JSON) + SQLite (ドメイン状態 + プロキシ ログ)
-- **ストリーミング**: サーバー送信イベント (SSE)
-- **認証**: OAuth 2.0 (PKCE) + JWT + API キー
-- **テスト**: Node.js テスト ランナー (368 以上の単体テスト)
-- **CI/CD**: GitHub アクション (自動 npm パブリッシュ + リリース時の Docker Hub)
-- **ウェブサイト**: [omniroute.online](https://omniroute.online)
-- **パッケージ**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **復元力**: サーキット ブレーカー、エクスポネンシャル バックオフ、サンダーリング ハード対策、TLS スプーフィング
-
----
-
-## 📖 ドキュメント
-
-| ドキュメント | 説明 |
-| -------------------------------------------- | -------------------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | プロバイダー、コンボ、CLI 統合、展開 |
-| [API Reference](docs/API_REFERENCE.md) | すべてのエンドポイントと例 |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | よくある問題と解決策 |
-| [Architecture](docs/ARCHITECTURE.md) | システム アーキテクチャと内部構造 |
-| [Contributing](CONTRIBUTING.md) | 開発セットアップとガイドライン |
-| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 仕様 |
-| [Security Policy](SECURITY.md) | 脆弱性の報告とセキュリティの実践 |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | 完全ガイド: VM + nginx + Cloudflare セットアップ |
-| [Features Gallery](docs/FEATURES.md) | スクリーンショットを含むビジュアル ダッシュボード ツアー |
-
-### 📸 ダッシュボードのプレビュー
+## 🛠️ Tech Stack
-クリックしてダッシュボードのスクリーンショットを表示
+Click to expand tech stack details
-| ページ | スクリーンショット |
-| ------------------ | ------------------------------------------------- |
-| **プロバイダー** |  |
-| **コンボ** |  |
-| **分析** |  |
-| **健康** |  |
-| **翻訳者** |  |
-| **設定** |  |
-| **CLI ツール** |  |
-| **使用ログ** |  |
-| **エンドポイント** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## ドキュメント
-OmniRoute には、複数の開発フェーズにわたって **210 以上の機能が計画されています**。主要な領域は次のとおりです。
-
-| カテゴリー | 計画されている機能 | ハイライト |
-| ------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------- |
-| 🧠 **ルーティングとインテリジェンス** | 25+ | 最低レイテンシのルーティング、タグベースのルーティング、クォータ プリフライト、P2C アカウントの選択 |
-| 🔒 **セキュリティとコンプライアンス** | 20歳以上 | SSRF の強化、資格情報のクローキング、エンドポイントごとのレート制限、管理キーのスコーピング |
-| 📊 **可観測性** | 15 歳以上 | OpenTelemetry 統合、リアルタイム クォータ監視、モデルごとのコスト追跡 |
-| 🔄 **プロバイダーの統合** | 20歳以上 | 動的モデル レジストリ、プロバイダーのクールダウン、マルチアカウント Codex、Copilot クォータ解析 |
-| ⚡ **パフォーマンス** | 15 歳以上 | デュアル キャッシュ レイヤー、プロンプト キャッシュ、応答キャッシュ、ストリーミング キープアライブ、バッチ API |
-| 🌐 **生態系** | 10+ | WebSocket API、構成ホットリロード、分散構成ストア、商用モード |
-
-### 🔜近日公開予定
-
-- 🔗 **OpenCode Integration** — OpenCode AI コーディング IDE のネイティブ プロバイダー サポート
-- 🔗 **TRAE 統合** — TRAE AI 開発フレームワークの完全サポート
-- 📦 **バッチ API** — 一括リクエストの非同期バッチ処理
-- 🎯 **タグベースのルーティング** — カスタムタグとメタデータに基づいてリクエストをルーティングします
-- 💰 **最低コスト戦略** — 利用可能な最も安価なプロバイダーを自動的に選択します
-
-> 📝 [link](docs/new-features/) で全機能の仕様が利用可能 (217 の詳細仕様)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 貢献者
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### 貢献方法
+### How to Contribute
-1. リポジトリをフォークする
-2. 機能ブランチを作成します (`git checkout -b feature/amazing-feature`)
-3. 変更をコミットします (`git commit -m 'Add amazing feature'`)
-4. ブランチにプッシュします (`git push origin feature/amazing-feature`)
-5. プルリクエストを開く
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-詳細なガイドラインについては、[CONTRIBUTING.md](CONTRIBUTING.md) を参照してください。
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### 新しいバージョンのリリース
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 スターの歴史
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 謝辞
+## 🙏 Acknowledgments
-このフォークのきっかけとなった元のプロジェクトである **[decolua](https://github.com/decolua)** による **[9router](https://github.com/decolua/9router)** に感謝します。 OmniRoute は、追加機能、マルチモーダル API、完全な TypeScript の書き換えを備えた素晴らしい基盤の上に構築されています。
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-この JavaScript 移植のきっかけとなったオリジナルの Go 実装である **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** に感謝します。
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 ライセンス
+## ライセンス
-MIT ライセンス - 詳細については、[LICENSE](LICENSE) を参照してください。
+MIT License - see [LICENSE](LICENSE) for details.
---
----
+
+
diff --git a/docs/i18n/ja/docs/FEATURES.md b/docs/i18n/ja/docs/FEATURES.md
new file mode 100644
index 0000000000..9dd4c01ecf
--- /dev/null
+++ b/docs/i18n/ja/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (日本語)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/ko/README.md b/docs/i18n/ko/README.md
index d39128dec6..b8622abcbf 100644
--- a/docs/i18n/ko/README.md
+++ b/docs/i18n/ko/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — 무료 AI 게이트웨이
+# 🚀 OmniRoute — The Free AI Gateway (한국어)
-### 코딩을 멈추지 마세요. 자동 폴백을 통해 **무료 및 저가형 AI 모델**로 스마트 라우팅합니다.
-
-_범용 API 프록시 — 하나의 엔드포인트, 36개 이상의 공급자, 가동 중지 시간 없음._
-
-**채팅 완료 • 임베딩 • 이미지 생성 • 오디오 • 순위 재지정 • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 좋아하는 코딩 에이전트를 위한 무료 AI 제공업체
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_무제한 코딩을 위한 무료 API 게이트웨이인 OmniRoute를 통해 AI 기반 IDE 또는 CLI 도구를 연결하세요._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _무제한 코딩을 위한 무료 API 게이트웨이인 OmniRoute를 통해 AI
|
-📡 모든 에이전트는 http://localhost:20128/v1 또는 http://cloud.omniroute.online/v1을 통해 연결됩니다. — 하나의 구성, 무제한 모델 및 할당량
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 왜 OmniRoute인가요?
-
-**돈을 낭비하지 말고 한도에 도달하지 마세요.**
-
--
구독 할당량은 매달 사용하지 않은 채 만료됩니다.
--
속도 제한으로 인해 코딩이 중단됩니다.
--
고가의 API(공급자당 월 $20-50)
--
공급자 간 수동 전환
-
-**OmniRoute는 이 문제를 해결합니다.**
-
-- ✅ **구독 극대화** - 할당량을 추적하고 재설정하기 전에 모든 비트를 사용하세요.
-- ✅ **자동 대체** - 구독 → API 키 → 저렴한 → 무료, 다운타임 없음
-- ✅ **다중 계정** - 공급자별 계정 간 라운드 로빈
-- ✅ **유니버설** - Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, 모든 CLI 도구와 함께 작동
-
----
-
-## 📧 지원
-
-> 💬 **커뮤니티에 가입하세요!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — 도움을 받고, 팁을 공유하고, 최신 소식을 받아보세요.
-
-- **웹사이트**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **문제**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **원래 프로젝트**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 작동 방식
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,451 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 OmniRoute가 해결하는 것 — 30가지 실제 문제점 및 사용 사례
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **AI 도구를 사용하는 모든 개발자는 매일 이러한 문제에 직면합니다.** OmniRoute는 비용 초과부터 지역적 차단, 손상된 OAuth 흐름부터 프로토콜 운영 및 기업 관찰 가능성까지 모든 문제를 해결하기 위해 구축되었습니다.
+> **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 protocol operations and enterprise observability.
-💸 1. "비싼 구독료를 지불했지만 여전히 한도 때문에 방해를 받습니다."
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-개발자는 Claude Pro, Codex Pro 또는 GitHub Copilot에 대해 월 20~200달러를 지불합니다. 비용을 지불하더라도 할당량에는 5시간 사용량, 주간 한도 또는 분당 비율 한도 등 상한선이 있습니다. 코딩 세션이 진행되는 동안 공급자는 응답을 중단하고 개발자는 흐름과 생산성을 잃게 됩니다.
+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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **스마트 4계층 폴백** — 구독 할당량이 소진되면 수동 개입 없이 자동으로 API 키 → 저렴함 → 무료로 리디렉션됩니다.
-- **실시간 할당량 추적** — 재설정 카운트다운(5시간, 매일, 매주)을 통해 실시간으로 토큰 소비를 표시합니다.
-- **다중 계정 지원** — 자동 라운드 로빈 기능을 갖춘 공급자당 여러 계정 — 하나가 소진되면 다음 계정으로 전환
-- **사용자 정의 콤보** — 6가지 균형 전략(채우기 우선, 라운드 로빈, P2C, 무작위, 최소 사용, 비용 최적화)을 갖춘 사용자 정의 가능한 폴백 체인
-- **Codex 비즈니스 할당량** — 대시보드에서 직접 비즈니스/팀 작업 공간 할당량 모니터링
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. "여러 공급자를 사용해야 하는데 각각 API가 다릅니다"
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI는 하나의 형식을 사용하고 Claude(Anthropic)는 또 다른 형식을 사용하고 Gemini는 또 다른 형식을 사용합니다. 개발자가 다른 제공업체의 모델을 테스트하거나 이들 사이에서 대체하려는 경우 SDK를 재구성하고, 엔드포인트를 변경하고, 호환되지 않는 형식을 처리해야 합니다. 사용자 지정 공급자(FriendLI, NIM)에는 비표준 모델 끝점이 있습니다.
+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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **통합 엔드포인트** — 단일 `http://localhost:20128/v1`가 36개 이상의 모든 공급자에 대한 프록시 역할을 합니다.
-- **형식 번역** — 자동 및 투명함: OpenAI ← Claude ← Gemini ← Responses API
-- **응답 삭제** — OpenAI SDK v1.83+를 손상시키는 비표준 필드(`x_groq`, `usage_breakdown`, `service_tier`)를 제거합니다.
-- **역할 정규화** — OpenAI가 아닌 제공업체에 대해 `developer` → `system`로 변환합니다. GLM/ERNIE의 경우 `system` → `user`
-- **Think Tag Extraction** — DeepSeek R1과 같은 모델에서 `` 블록을 표준화된 `reasoning_content`로 추출합니다.
-- **Gemini용 구조화된 출력** — `json_schema` → `responseMimeType`/`responseSchema` 자동 변환
-- **`stream`의 기본값은 `false`** — OpenAI 사양에 맞춰 Python/Rust/Go SDK에서 예기치 않은 SSE를 방지합니다.
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. "내 AI 공급자가 내 지역/국가를 차단합니다."
+🌐 3. "My AI provider blocks my region/country"
-OpenAI/Codex와 같은 공급자는 특정 지역의 액세스를 차단합니다. OAuth 및 API 연결 중에 사용자에게 `unsupported_country_region_territory`와 같은 오류가 발생합니다. 이는 특히 개발도상국의 개발자에게 실망스러운 일입니다.
+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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **3레벨 프록시 구성** — 3가지 레벨로 구성 가능한 프록시: 글로벌(모든 트래픽), 공급자별(하나의 공급자만), 연결/키별
-- **색상으로 구분된 프록시 배지** — 시각적 표시기: 🟢 글로벌 프록시, 🟡 공급자 프록시, 🔵 연결 프록시, 항상 IP 표시
-- **프록시를 통한 OAuth 토큰 교환** — OAuth 흐름도 프록시를 통과하여 `unsupported_country_region_territory`를 해결합니다.
-- **프록시를 통한 연결 테스트** - 연결 테스트에서는 구성된 프록시를 사용합니다(더 이상 직접 우회 없음).
-- **SOCKS5 지원** — 아웃바운드 라우팅을 위한 전체 SOCKS5 프록시 지원
-- **TLS 지문 스푸핑** — `wreq-js`를 통한 브라우저와 유사한 TLS 지문으로 봇 감지 우회
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. "AI로 코딩하고 싶은데 돈이 없어요"
+🆓 4. "I want to use AI for coding but I have no money"
-모든 사람이 AI 구독 비용으로 월 20~200달러를 지불할 수 있는 것은 아닙니다. 학생, 신흥 국가의 개발자, 취미생활자, 프리랜서는 무료로 고품질 모델에 액세스해야 합니다.
+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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **무료 계층 제공자 내장** — 100% 무료 제공자에 대한 기본 지원: iFlow(8개 무제한 모델), Qwen(3개 무제한 모델), Kiro(Claude 무료), Gemini CLI(180K/월 무료)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **무료 전용 콤보** — 체인 `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/월, 가동 중지 시간 없음
-- **NVIDIA NIM 무료 크레딧** — 1000개의 무료 크레딧 통합
-- **비용 최적화 전략** — 가장 저렴한 공급자를 자동으로 선택하는 라우팅 전략
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. "AI 게이트웨이를 무단 액세스로부터 보호해야 합니다"
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-AI 게이트웨이를 네트워크(LAN, VPS, Docker)에 노출하면 주소가 있는 사람은 누구나 개발자의 토큰/할당량을 사용할 수 있습니다. 보호하지 않으면 API는 오용, 즉각적인 주입, 남용에 취약해집니다.
+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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **API 키 관리** — 전용 `/dashboard/api-manager` 페이지를 사용하여 공급자별 생성, 순환 및 범위 지정
-- **모델 수준 권한** — 모두 허용/제한 토글을 사용하여 API 키를 특정 모델(`openai/*`, 와일드카드 패턴)로 제한합니다.
-- **API 엔드포인트 보호** — `/v1/models`에 대한 키가 필요하며 목록에서 특정 공급자를 차단합니다.
-- **Auth Guard + CSRF 보호** — `withAuth` 미들웨어 + CSRF 토큰으로 보호되는 모든 대시보드 경로
-- **속도 제한기** — 구성 가능한 창으로 IP당 속도 제한
-- **IP 필터링** — 액세스 제어를 위한 허용 목록/차단 목록
-- **프롬프트 주입 가드** — 악성 프롬프트 패턴 제거
-- **AES-256-GCM 암호화** — 저장된 자격 증명은 암호화됩니다.
+- **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. "공급업체가 다운되어 코딩 흐름이 손실되었습니다."
+🛑 6. "My provider went down and I lost my coding flow"
-AI 제공자는 불안정해지거나, 5xx 오류를 반환하거나, 임시 속도 제한에 도달할 수 있습니다. 개발자가 단일 공급자에 의존하는 경우 중단됩니다. 회로 차단기가 없으면 반복적으로 재시도하면 애플리케이션이 중단될 수 있습니다.
+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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **공급업체별 회로 차단기** — 구성 가능한 임계값 및 쿨다운을 통한 자동 열기/닫기(닫힘/열림/반열림)
-- **지수 백오프** — 점진적인 재시도 지연
-- **Anti-Thundering Herd** — 동시 재시도 폭풍에 대한 뮤텍스 + 세마포어 보호
-- **콤보 폴백 체인** — 기본 공급자가 실패하면 개입 없이 자동으로 체인을 통과합니다.
-- **콤보 회로 차단기** — 콤보 체인 내에서 실패한 공급자를 자동으로 비활성화합니다.
-- **상태 대시보드** — 가동 시간 모니터링, 회로 차단기 상태, 잠금, 캐시 통계, p50/p95/p99 대기 시간
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. "각 AI 도구를 구성하는 것은 지루하고 반복적입니다."
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-개발자는 Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code 등을 사용합니다. 각 도구에는 서로 다른 구성(API 엔드포인트, 키, 모델)이 필요합니다. 공급자나 모델을 전환할 때 재구성하는 것은 시간 낭비입니다.
+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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **CLI 도구 대시보드** — Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline을 원클릭으로 설정할 수 있는 전용 페이지
-- **GitHub Copilot Config Generator** — 대량 모델 선택을 통해 VS Code용 `chatLanguageModels.json`를 생성합니다.
-- **온보딩 마법사** — 처음 사용자를 위한 4단계 설정 안내
-- **하나의 엔드포인트, 모든 모델** — `http://localhost:20128/v1`를 한 번 구성하면 36개 이상의 공급자에 액세스할 수 있습니다.
+- **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 67+ providers
-🔑 8. "여러 공급자의 OAuth 토큰 관리는 지옥입니다"
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot — 모두 만료되는 토큰과 함께 OAuth 2.0을 사용합니다. 개발자는 지속적으로 재인증을 수행하고 `client_secret is missing`, `redirect_uri_mismatch` 및 원격 서버의 오류를 처리해야 합니다. LAN/VPS의 OAuth는 특히 문제가 됩니다.
+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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **자동 토큰 새로 고침** — OAuth 토큰이 만료되기 전에 백그라운드에서 새로 고쳐집니다.
-- **OAuth 2.0(PKCE) 내장** — Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow에 대한 자동 흐름
-- **다중 계정 OAuth** — JWT/ID 토큰 추출을 통해 공급자당 여러 계정
-- **OAuth LAN/원격 수정** — `redirect_uri`에 대한 개인 IP 감지 + 원격 서버에 대한 수동 URL 모드
-- **Nginx 뒤의 OAuth** — 역방향 프록시 호환성을 위해 `window.location.origin`를 사용합니다.
-- **원격 OAuth 가이드** — VPS/Docker의 Google Cloud 자격 증명에 대한 단계별 가이드
+- **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. "얼마나 쓰고 있는지, 어디에 쓰는지 모르겠어요"
+📊 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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **비용 분석 대시보드** — 토큰별 비용 추적 및 공급자별 예산 관리
-- **계층당 예산 한도** — 자동 폴백을 트리거하는 계층당 지출 한도
-- **모델별 가격 구성** — 모델당 가격 구성 가능
-- **API 키당 사용 통계** — 키당 요청 수 및 마지막으로 사용된 타임스탬프
-- **분석 대시보드** — 통계 카드, 모델 사용 차트, 성공률 및 대기 시간이 포함된 공급자 테이블
+- **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. "AI 호출 오류 및 문제 진단이 안 돼요"
+🐛 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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **통합 로그 대시보드** — 탭 4개: 요청 로그, 프록시 로그, 감사 로그, 콘솔
-- **콘솔 로그 뷰어** — 색상으로 구분된 레벨, 자동 스크롤, 검색, 필터 기능을 갖춘 실시간 터미널 스타일 뷰어
-- **SQLite 프록시 로그** — 서버를 다시 시작해도 지속되는 영구 로그
-- **번역기 플레이그라운드** — 4가지 디버깅 모드: 플레이그라운드(형식 번역), 채팅 테스터(왕복), 테스트 벤치(일괄), 라이브 모니터(실시간)
-- **원격 측정 요청** — p50/p95/p99 대기 시간 + X-요청-ID 추적
-- **회전을 통한 파일 기반 로깅** — 콘솔 인터셉터는 크기 기반 회전을 통해 모든 것을 JSON 로그에 캡처합니다.
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. "게이트웨이 배포 및 유지 관리가 복잡합니다."
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-다양한 환경(로컬, VPS, Docker, 클라우드)에서 AI 프록시를 설치, 구성 및 유지 관리하는 것은 노동 집약적입니다. 하드코딩된 경로, 디렉터리의 `EACCES`, 포트 충돌, 크로스 플랫폼 빌드와 같은 문제로 인해 마찰이 가중됩니다.
+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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **npm 전역 설치** — `npm install -g omniroute && omniroute` — 완료
-- **Docker 다중 플랫폼** — AMD64 + ARM64 기본(Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Docker Compose 프로필** — `base`(CLI 도구 없음) 및 `cli`(Claude Code, Codex, OpenClaw 포함)
-- **Electron 데스크탑 앱** — 시스템 트레이, 자동 시작, 오프라인 모드를 갖춘 Windows/macOS/Linux용 기본 앱
-- **분할 포트 모드** — 고급 시나리오(역방향 프록시, 컨테이너 네트워킹)를 위한 별도의 포트에 있는 API 및 대시보드
-- **클라우드 동기화** — Cloudflare Workers를 통해 장치 간 구성 동기화
-- **DB 백업** — 모든 설정의 자동 백업, 복원, 내보내기 및 가져오기
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. "인터페이스는 영어로만 제공되며 우리 팀은 영어를 구사하지 않습니다."
+🌍 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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **대시보드 i18n — 30개 언어** — 한국어, 아랍어, 불가리아어, 덴마크어, 독일어, 스페인어, 핀란드어, 프랑스어, 히브리어, 힌디어, 헝가리어, 인도네시아어, 이탈리아어, 일본어, 말레이어, 네덜란드어, 노르웨이어, 폴란드어, 포르투갈어(PT/BR), 루마니아어, 러시아어, 슬로바키아어, 스웨덴어, 태국어, 우크라이나어, 베트남어, 중국어, 필리핀어, 영어를 포함한 500개 이상의 키 번역됨
-- **RTL 지원** — 아랍어 및 히브리어에 대해 오른쪽에서 왼쪽으로 지원
-- **다국어 README** — 30개의 완전한 문서 번역
-- **언어 선택기** — 실시간 전환을 위한 헤더의 지구본 아이콘
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. "채팅 이상의 것이 필요합니다. 임베딩, 이미지, 오디오가 필요합니다."
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-AI는 단순한 채팅 완성이 아닙니다. 개발자는 이미지를 생성하고, 오디오를 기록하고, RAG용 임베딩을 만들고, 문서 순위를 다시 지정하고, 콘텐츠를 조정해야 합니다. 각 API에는 서로 다른 엔드포인트와 형식이 있습니다.
+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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **임베딩** — 6개 공급자와 9개 이상의 모델이 포함된 `/v1/embeddings`
-- **이미지 생성** — 10개 공급자와 20개 이상의 모델(OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)을 갖춘 `/v1/images/generations`
-- **텍스트-비디오** — `/v1/videos/generations` — ComfyUI(AnimateDiff, SVD) 및 SD WebUI
-- **텍스트-음악** — `/v1/music/generations` — ComfyUI(안정적인 오디오 개방형, MusicGen)
-- **오디오 녹음** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **텍스트 음성 변환** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + 기존 제공업체
-- **조정** — `/v1/moderations` — 콘텐츠 안전 확인
-- **재순위** — `/v1/rerank` — 문서 관련성 재지정
-- **응답 API** — Codex에 대한 전체 `/v1/responses` 지원
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. "모델별 품질을 테스트하고 비교할 방법이 없어요"
+🧪 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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **LLM 평가** — 인사말, 수학, 지리, 코드 생성, JSON 준수, 번역, 마크다운, 안전 거부를 다루는 사전 로드된 10가지 사례를 사용한 골든 세트 테스트
-- **4가지 일치 전략** — `exact`, `contains`, `regex`, `custom`(JS 함수)
-- **번역기 플레이그라운드 테스트 벤치** — 여러 입력 및 예상 출력을 사용한 일괄 테스트, 공급업체 간 비교
-- **채팅 테스터** — 시각적 응답 렌더링을 포함한 전체 왕복
-- **라이브 모니터** — 프록시를 통해 흐르는 모든 요청의 실시간 스트림
+- **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. "성능 저하 없이 확장해야 합니다"
+📈 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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **의미 체계 캐시** — 2계층 캐시(서명 + 의미 체계)로 비용과 대기 시간 감소
-- **멱등성 요청** — 동일한 요청에 대한 중복 제거 기간은 5초입니다.
-- **속도 제한 감지** — 제공업체별 RPM, 최소 간격 및 최대 동시 추적
-- **편집 가능한 속도 제한** — 설정 → 지속성을 통한 복원력에서 구성 가능한 기본값
-- **API 키 검증 캐시** — 프로덕션 성능을 위한 3계층 캐시
-- **원격 측정 기능을 갖춘 상태 대시보드** — p50/p95/p99 대기 시간, 캐시 통계, 가동 시간
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. "모델 동작을 전체적으로 제어하고 싶습니다"
+🤖 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.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- **시스템 프롬프트 삽입** — 모든 요청에 전역 프롬프트 적용
-- **생각 예산 검증** — 요청별 토큰 할당 제어 추론(패스스루, 자동, 사용자 정의, 적응형)
-- **6가지 라우팅 전략** — 요청 배포 방법을 결정하는 글로벌 전략
-- **와일드카드 라우터** — `provider/*` 패턴은 모든 공급자에게 동적으로 라우팅됩니다.
-- **콤보 활성화/비활성화 토글** — 대시보드에서 직접 콤보를 토글합니다.
-- **공급자 토글** — 한 번의 클릭으로 공급자에 대한 모든 연결을 활성화/비활성화합니다.
-- **차단된 제공자** — `/v1/models` 목록에서 특정 제공자를 제외합니다.
+- **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
-🧰 17. "일류 제품 기능으로 MCP 도구가 필요합니다"
+🧰 17. "I need MCP tools as first-class product capabilities"
-많은 AI 게이트웨이는 MCP를 숨겨진 구현 세부 사항으로만 노출합니다. 팀에는 가시적이고 관리 가능한 운영 레이어가 필요합니다.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- 대시보드 탐색 및 엔드포인트 프로토콜 탭에 MCP가 나타납니다.
-- 프로세스, 도구, 범위 및 감사가 포함된 전용 MCP 관리 페이지
-- `omniroute --mcp` 및 클라이언트 온보딩을 위한 빠른 시작 내장
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "동기화 + 스트림 작업 경로를 갖춘 A2A 오케스트레이션이 필요합니다"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-에이전트 워크플로에는 수명 주기 제어를 통해 직접 응답과 장기 실행 스트리밍 실행이 모두 필요합니다.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- `message/send` 및 `message/stream`가 포함된 A2A JSON-RPC 엔드포인트(`POST /a2a`)
-- 터미널 상태 전파를 통한 SSE 스트리밍
-- `tasks/get` 및 `tasks/cancel`용 작업 수명 주기 API
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. "추측된 상태가 아닌 실제 MCP 프로세스 상태가 필요합니다"
+🛰️ 19. "I need real MCP process health, not guessed status"
-운영팀은 API에 접근할 수 있는지 여부뿐만 아니라 MCP가 실제로 활성화되어 있는지 알아야 합니다.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- PID, 타임스탬프, 전송, 도구 개수 및 범위 모드가 포함된 런타임 하트비트 파일
-- 하트비트 + 최근 활동을 결합한 MCP 상태 API
-- 프로세스/가동 시간/하트비트 최신성을 위한 UI 상태 카드
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "감사 가능한 MCP 도구 실행이 필요합니다"
+📋 20. "I need auditable MCP tool execution"
-도구가 구성을 변경하거나 운영 작업을 트리거하는 경우 팀에는 법의학적 추적성이 필요합니다.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- MCP 도구 호출에 대한 SQLite 지원 감사 로깅
-- 도구, 성공/실패, API 키, 페이지 매김 기준으로 필터링
-- 자동화를 위한 대시보드 감사 테이블 + 통계 엔드포인트
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "통합당 범위가 지정된 MCP 권한이 필요합니다."
+🔐 21. "I need scoped MCP permissions per integration"
-다양한 클라이언트에는 도구 범주에 대한 최소 권한 액세스 권한이 있어야 합니다.
+Different clients should have least-privilege access to tool categories.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- 제어된 도구 액세스를 위한 9개의 세분화된 MCP 범위
-- MCP 관리 UI의 범위 적용 및 가시성
-- 운영 툴링을 위한 안전한 기본 자세
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. "재배치 없이 작전 통제가 필요해요"
+⚙️ 22. "I need operational controls without redeploying"
-팀은 사고 또는 비용 이벤트 중에 빠른 런타임 변경이 필요합니다.
+Teams need quick runtime changes during incidents or cost events.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- MCP 대시보드에서 직접 콤보 활성화 전환
-- 사전 정의된 정책 팩의 복원력 프로필 적용
-- 동일한 운영 패널에서 회로 차단기 상태 재설정
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. "실시간 A2A 작업 수명주기 가시성 및 취소가 필요합니다"
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-수명주기 가시성이 없으면 작업 사고를 분류하기가 어려워집니다.
+Without lifecycle visibility, task incidents become hard to triage.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- 페이지 매김을 통한 상태/기술별 작업 목록/필터링
-- 작업 메타데이터, 이벤트 및 아티팩트에 대한 드릴다운
-- 작업 취소 끝점 및 확인이 포함된 UI 작업
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. "A2A 로드를 위한 활성 스트림 메트릭이 필요합니다"
+🌊 24. "I need active stream metrics for A2A load"
-스트리밍 워크플로에는 동시성 및 라이브 연결에 대한 운영 통찰력이 필요합니다.
+Streaming workflows require operational insight into concurrency and live connections.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- A2A 상태에 통합된 활성 스트림 카운터
-- 마지막 작업 타임스탬프 및 상태별 개수
-- 실시간 운영 모니터링을 위한 A2A 대시보드 카드
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "클라이언트를 위한 표준 에이전트 검색이 필요합니다"
+🪪 25. "I need standard agent discovery for clients"
-외부 클라이언트 및 오케스트레이터에는 온보딩을 위해 컴퓨터에서 읽을 수 있는 메타데이터가 필요합니다.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- `/.well-known/agent.json`에 노출된 에이전트 카드
-- 관리 UI에 표시되는 능력과 기술
-- A2A 상태 API에는 자동화를 위한 검색 메타데이터가 포함되어 있습니다.
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "제품 UX에서 프로토콜 검색 기능이 필요합니다"
+🧭 26. "I need protocol discoverability in the product UX"
-사용자가 프로토콜 표면을 발견할 수 없는 경우 채택 및 지원 품질이 저하됩니다.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- MCP 및 A2A용 사이드바 항목
-- 빠른 시작 및 상태가 포함된 엔드포인트 페이지 프로토콜 탭
-- 개요에서 전용 관리 대시보드로의 링크
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "실제 클라이언트와의 엔드투엔드 프로토콜 검증이 필요합니다"
+🧪 27. "I need end-to-end protocol validation with real clients"
-모의 테스트는 출시 전에 프로토콜 호환성을 검증하기에 충분하지 않습니다.
+Mock tests are not enough to validate protocol compatibility before release.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- 앱을 부팅하고 실제 MCP SDK 클라이언트 전송을 사용하는 E2E 제품군
-- 흐름 검색, 전송, 스트리밍, 가져오기 및 취소에 대한 A2A 클라이언트 테스트
-- MCP 감사 및 A2A 작업 API에 대한 교차 확인 주장
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. "모든 인터페이스에 걸쳐 통합된 관찰 가능성이 필요합니다"
+📡 28. "I need unified observability across all interfaces"
-프로토콜별로 관찰 가능성을 분할하면 사각지대가 발생하고 MTTR이 길어집니다.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- 대시보드/로그/분석을 하나의 제품으로 통합
-- OpenAI, MCP 및 A2A 계층 전반에 걸쳐 상태 + 감사 + 원격 측정 요청
-- 상태 및 자동화를 위한 운영 API
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "프록시 + 도구 + 에이전트 오케스트레이션을 위해 하나의 런타임이 필요합니다."
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-여러 개별 서비스를 실행하면 운영 비용과 오류 모드가 증가합니다.
+Running many separate services increases operational cost and failure modes.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- OpenAI 호환 프록시, MCP 서버, A2A 서버가 하나의 스택에 있음
-- 공유 인증, 복원력, 데이터 저장소 및 관찰 가능성
-- 모든 상호 작용 표면에 걸쳐 일관된 정책 모델
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. "글루 코드 확장 없이 에이전트 워크플로를 제공해야 합니다."
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-여러 임시 서비스와 스크립트를 결합할 때 팀의 속도가 느려집니다.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**OmniRoute가 이를 해결하는 방법:**
+**How OmniRoute solves it:**
-- 클라이언트와 에이전트를 위한 통합 엔드포인트 전략
-- 내장된 프로토콜 관리 UI 및 연기 검증 경로
-- 프로덕션 준비 기반(보안, 로깅, 탄력성, 백업)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### 플레이북 예시(통합 사용 사례)
+### Example Playbooks (Integrated Use Cases)
-**플레이북 A: 유료 구독 극대화 + 저렴한 백업**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -683,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**플레이북 B: 비용이 전혀 들지 않는 코딩 스택**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -695,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**플레이북 C: 연중무휴 상시 가동 폴백 체인**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -708,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**플레이북 D: MCP + A2A를 사용한 에이전트 작업**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ 빠른 시작
+## 🆓 Start Free — Zero Configuration Cost
-**1. 전역적으로 설치:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## 빠른 시작
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 대시보드는 `http://localhost:20128`에서 열립니다.
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| 명령 | 설명 |
-| ----------------------- | ----------------------------- |
-| `omniroute` | 서버 시작(기본 포트 20128) |
-| `omniroute --port 3000` | 사용자 정의 포트 사용 |
-| `omniroute --no-open` | 브라우저를 자동으로 열지 않음 |
-| `omniroute --help` | 도움말 표시 |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. 무료 공급자 연결:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-대시보드 → 공급자 → **Claude Code** 또는 **Antigravity** 연결 → OAuth 로그인 → 완료!
+Optional split-port mode:
-**3. CLI 도구에서 사용:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**그렇습니다!** 무료 AI 모델로 코딩을 시작해 보세요.
+### 2) Connect providers and create your API key
-**대안 — 소스에서 실행:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
-## 🐳 도커
+## 🐳 Docker
-OmniRoute는 [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute)에서 공개 Docker 이미지로 제공됩니다.
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**빠른 실행:**
+**Quick run:**
```bash
docker run -d \
@@ -777,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**환경 파일 포함:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -792,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Docker Compose 사용:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -802,257 +880,552 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| 이미지 | 태그 | 사이즈 | 설명 |
-| ------------------------ | -------- | ------ | ---------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | 최신 안정 릴리스 |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | 현재 버전 |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
+## 🖥️ Desktop App — Offline & Always-On
-## 🖥️
+> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
-> 🆕 **새 기능!** OmniRoute가 Windows, macOS, Linux용 **네이티브 데스크톱 앱**으로 출시되었습니다.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
-- 🖥️ **네이티브 윈도우** — 시스템 트레이 통합 전용 창
-- 🔄 **자동 시작** — 시스템 로그인 시 OmniRoute 실행
-- 🔔 **네이티브 알림** — 할당량 소진 또는 공급자 문제 알림
-- ⚡ **원클릭 설치** — NSIS (Windows), DMG (macOS), AppImage (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 # 개발 모드
-npm run electron:build # 현재 플랫폼
+# Development mode
+npm run electron:dev
+
+# Build for your platform
+npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
-📖 전체 문서: [`electron/README.md`](electron/README.md)
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
+📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 가격 한눈에 보기
+## 💰 Pricing at a Glance
-| 계층 | 공급자 | 비용 | 할당량 재설정 | 최고의 대상 |
-| ------------- | ------------------- | --------------------- | --------------- | ----------------- |
-| **💳 구독** | 클로드 코드 (Pro) | $20/월 | 5시간 + 매주 | 이미 구독 중 |
-| | 코덱스(플러스/프로) | $20-200/월 | 5시간 + 매주 | OpenAI 사용자 |
-| | 제미니 CLI | **무료** | 180K/월 + 1K/일 | 모든 사람! |
-| | GitHub 부조종사 | $10-19/월 | 월간 | GitHub 사용자 |
-| **🔑 API 키** | 엔비디아 NIM | **무료** (1000크레딧) | 일회성 | 무료 등급 테스트 |
-| | 딥시크 | 종량제 | 없음 | 최고의 가격/품질 |
-| | 그로크 | 무료 등급 + 유료 | 요금 제한 | 초고속 추론 |
-| | xAI(그록) | 종량제 | 없음 | 그록 모델 |
-| | 미스트랄 | 무료 등급 + 유료 | 요금 제한 | 유럽의 AI |
-| | 오픈라우터 | 종량제 | 없음 | 100개 이상의 모델 |
-| **💰 저렴한** | GLM-4.7 | $0.6/1M | 매일 오전 10시 | 예산 백업 |
-| | 미니맥스 M2.1 | $0.2/1M | 5시간 롤링 | 가장 저렴한 옵션 |
-| | 키미 K2 | $9/월 정액 | 1000만 토큰/월 | 예측 가능한 비용 |
-| **🆓 무료** | 아이플로우 | $0 | 무제한 | 8개 모델 무료 |
-| | 퀀 | $0 | 무제한 | 3개 모델 무료 |
-| | 키로 | $0 | 무제한 | 클로드 프리 |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 전문가 팁:** Gemini CLI(월 180K 무료) + iFlow(무제한 무료) 콤보 = 비용 $0로 시작하세요!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 주요 기능
+---
-### 🧠 코어 라우팅 및 인텔리전스
+## 🆓 Free Models — What You Actually Get
-| 기능 | 그것이 하는 일 |
-| ----------------------------- | ----------------------------------------------------------------------------- |
-| 🎯 **스마트 4계층 폴백** | 자동 경로: 구독 → API 키 → 저렴한 → 무료 |
-| 📊 **실시간 할당량 추적** | 라이브 토큰 수 + 공급자별 카운트다운 재설정 |
-| 🔄 **형식 번역** | OpenAI ⇔ Claude ⇔ Gemini ⇔ Cursor ⇔ Kiro 심리스 + 반응위생 |
-| 👥 **다중 계정 지원** | 지능적인 선택을 통해 공급자당 여러 계정 |
-| 🔄 **자동 토큰 새로고침** | 재시도 시 OAuth 토큰이 자동으로 새로 고쳐집니다. |
-| 🎨 **맞춤형 콤보** | 6가지 전략: 채우기 우선, 라운드 로빈, p2c, 무작위, 최소 사용, 비용 최적화 |
-| 🧩 **맞춤형 모델** | 모든 공급자에 모델 ID 추가 |
-| 🌐 **와일드카드 라우터** | `provider/*` 패턴을 모든 공급자에게 동적으로 라우팅 |
-| 🧠 **예산 고려** | 추론 모델을 위한 패스스루, 자동, 사용자 정의 및 적응형 모드 |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **시스템 프롬프트 삽입** | 모든 요청에 전역 시스템 프롬프트 적용 |
-| 📄 **응답 API** | Codex에 대한 전체 OpenAI 응답 API(`/v1/responses`) 지원 |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 다중 모드 API
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| 기능 | 그것이 하는 일 |
-| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **이미지 생성** | `/v1/images/generations` — 4개 공급자, 9개 이상의 모델 |
-| 📐 **임베딩** | `/v1/embeddings` — 6개 공급자, 9개 이상의 모델 |
-| 🎤 **오디오 전사** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **텍스트 음성 변환** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **조정** | `/v1/moderations` — 콘텐츠 안전 확인 |
-| 🔀 **재순위** | `/v1/rerank` — 문서 관련성 재순위 |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ 복원력 및 보안
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| 기능 | 그것이 하는 일 |
-| ------------------------------- | ---------------------------------------------------------------------------- |
-| 🔌 **회로 차단기** | 구성 가능한 임계값을 사용하여 공급자별 자동 열기/닫기 |
-| 🛡️ **천둥 방지 무리** | API 키 공급자에 대한 뮤텍스 + 세마포 속도 제한 |
-| 🧠 **의미론적 캐시** | 2계층 캐시(서명 + 의미 체계)로 비용 및 대기 시간 감소 |
-| ⚡ **멱등성 요청** | 중복 요청에 대한 5초 중복 제거 기간 |
-| 🔒 **TLS 지문 스푸핑** | wreq-js를 통해 TLS 기반 봇 감지 우회 |
-| 🌐 **IP 필터링** | API 액세스 제어를 위한 허용 목록/차단 목록 |
-| 📊 **편집 가능한 속도 제한** | 시스템 수준에서 구성 가능한 RPM, 최소 간격 및 최대 동시 |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **API 엔드포인트 보호** | `/models` 엔드포인트에 대한 인증 게이팅 + 공급자 차단 |
-| 🔒 **프록시 가시성** | 색상으로 구분된 배지: 🟢 글로벌, 🟡 공급자, 🔵 IP 디스플레이를 통한 연결별 |
-| 🌐 **3단계 프록시 구성** | 글로벌, 공급자별 또는 연결별 수준에서 프록시 구성 |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 관찰 가능성 및 분석
+### 🟡 QWEN MODELS (Device Code Auth)
-| 기능 | 그것이 하는 일 |
-| -------------------------------- | -------------------------------------------------------------------- |
-| 📝 **로깅 요청** | 전체 요청/응답 로그가 포함된 디버그 모드 |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **SQLite 프록시 로그** | 영구 프록시 로그는 서버를 다시 시작해도 유지됩니다. |
-| 📊 **분석 대시보드** | Recharts 기반: 통계 카드, 모델 사용 차트, 공급자 테이블 |
-| 📈 **진행 상황 추적** | 스트리밍을 위한 옵트인 SSE 진행 이벤트 |
-| 🧪 **LLM 평가** | 4가지 매치 전략을 사용한 골든 세트 테스트 |
-| 🔍 **원격 측정 요청** | p50/p95/p99 대기 시간 집계 + X-요청-ID 추적 |
-| 📋 **로그 대시보드** | 통합된 4개 탭 페이지: 요청 로그, 프록시 로그, 감사 로그, 콘솔 |
-| 🖥️ **콘솔 로그 뷰어** | 레벨 필터, 검색, 자동 스크롤 기능을 갖춘 실시간 터미널 스타일 뷰어 |
-| 📑 **파일 기반 로깅** | 콘솔 인터셉터는 회전을 통해 모든 출력을 JSON 로그 파일로 캡처합니다. |
-| 🏥 **건강 대시보드** | 시스템 가동 시간, 회로 차단기 상태, 잠금, 캐시 통계 |
-| 💰 **비용 추적** | 예산 관리 + 모델별 가격 구성 |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ 배포 및 동기화
+### 🟣 GEMINI CLI (Google OAuth)
-| 기능 | 그것이 하는 일 |
-| ---------------------------------- | ----------------------------------------------------------------- |
-| 💾 **클라우드 동기화** | Cloudflare Workers를 통해 장치 간 구성 동기화 |
-| 🌐 **어디서나 배포** | 로컬호스트, VPS, Docker, Cloudflare 작업자 |
-| 🔑 **API 키 관리** | 공급자별 API 키 생성, 회전 및 범위 지정 |
-| 🧙 **온보딩 마법사** | 처음 사용자를 위한 4단계 안내 설정 |
-| 🔧 **CLI 도구 대시보드** | 원클릭 구성 Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **DB 백업** | 모든 설정에 대한 자동 백업, 복원, 내보내기 및 가져오기 |
-| 🌐 **국제화** | next-intl이 포함된 전체 i18n — 영어 + 포르투갈어(브라질) 지원 |
-| 🌍 **언어 선택기** | 실시간 언어 전환을 위한 헤더의 지구본 아이콘(🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **사용자 정의 데이터 디렉터리** | `DATA_DIR` env var는 기본 `~/.omniroute` 저장 경로를 재정의합니다 |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 기능 세부정보
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 스마트 4계층 폴백
+Start MCP transport in stdio mode:
-자동 대체 기능을 사용하여 콤보 만들기:
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 실시간 할당량 추적
+Recommended validation flow:
-- 제공자별 토큰 소비
-- 카운트다운 재설정(5시간, 매일, 매주)
-- 유료 계층에 대한 비용 추정
-- 월별 지출 보고서
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 형식 번역
+Useful APIs for automation:
-형식 간 원활한 번역:
-
-- **OpenAI** ← **Claude** ← **Gemini** ← **OpenAI 응답**
-- CLI 도구가 OpenAI 형식 전송 → OmniRoute 변환 → 공급자가 기본 형식 수신
-- 맞춤형 OpenAI 엔드포인트를 지원하는 모든 도구와 함께 작동
-- **응답 삭제** — 엄격한 OpenAI SDK 호환성을 위해 비표준 필드를 제거합니다.
-- **역할 정규화** — OpenAI가 아닌 경우 `developer` → `system`; `system` → GLM/ERNIE 모델의 경우 `user`
-- **사고 태그 추출** — 사고 모델의 경우 `` 블록 → `reasoning_content`
-- **구조화된 출력** — `json_schema` → Gemini의 `responseMimeType`/`responseSchema`
-
-### 👥 다중 계정 지원
-
-- 공급자당 여러 계정 추가
-- 자동 라운드 로빈 또는 우선순위 기반 라우팅
-- 한 계정이 할당량에 도달하면 다음 계정으로 대체
-
-### 🔄 자동 토큰 새로고침
-
-- OAuth 토큰은 만료되기 전에 자동으로 새로 고쳐집니다.
-- 수동 재인증이 필요하지 않습니다.
-- 모든 제공업체에 걸친 원활한 경험
-
-### 🎨 맞춤 콤보
-
-- 무제한 모델 조합 생성
-- 6가지 전략: 채우기 우선, 라운드 로빈, 두 가지 선택의 힘, 무작위, 최소 사용, 비용 최적화
-- Cloud Sync를 통해 여러 기기에서 콤보를 공유하세요
-
-### 🏥 건강 대시보드
-
-- 시스템 상태(가동 시간, 버전, 메모리 사용량)
-- 공급자별 회로 차단기 상태(Closed/Open/Half-Open)
-- 속도 제한 상태 및 활성 잠금
-- 서명 캐시 통계
-- 대기 시간 원격 측정(p50/p95/p99) + 프롬프트 캐시
-- 한 번의 클릭으로 건강 상태 재설정
-
-### 🔧 번역기 놀이터
-
-OmniRoute에는 API 번역 디버깅, 테스트 및 모니터링을 위한 **4가지 모드**를 갖춘 강력한 내장 번역기 플레이그라운드가 포함되어 있습니다.
-
-| 모드 | 설명 |
-| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻 놀이터** | 직접 형식 변환 — API 요청 본문을 붙여넣고 OmniRoute가 공급자 형식(OpenAI ← Claude ← Gemini ← Responses API) 간에 이를 어떻게 변환하는지 즉시 확인하세요. 예제 템플릿과 형식 자동 감지가 포함되어 있습니다. |
-| **💬 채팅 테스터** | OmniRoute를 통해 실제 채팅 요청을 보내고 전체 왕복(입력, 번역된 요청, 공급자 응답, 번역된 응답)을 확인하세요. 콤보 라우팅을 검증하는 데 매우 중요합니다. |
-| **🧪 테스트 벤치** | 배치 테스트 모드 — 서로 다른 입력과 예상 출력으로 여러 테스트 케이스를 정의하고, 이를 모두 한 번에 실행하고, 공급자와 모델 간에 결과를 비교합니다. |
-| **📱 라이브 모니터** | 실시간 요청 모니터링 — OmniRoute를 통해 들어오는 요청을 감시하고, 실시간으로 발생하는 형식 변환을 확인하고, 문제를 즉시 식별합니다. |
-
-**액세스:** 대시보드 → 번역기(사이드바)
-
-### 💾 클라우드 동기화
-
-- 여러 장치에서 공급자, 콤보 및 설정을 동기화합니다.
-- 자동 백그라운드 동기화
-- 안전한 암호화 저장
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 평가(Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute에는 골든 세트에 대해 LLM 응답 품질을 테스트하기 위한 내장 평가 프레임워크가 포함되어 있습니다. 대시보드의 **분석 → 평가**를 통해 액세스하세요.
+Discover the agent:
-### 내장 골든 세트
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-사전 로드된 "OmniRoute Golden Set"에는 다음을 다루는 10개의 테스트 사례가 포함되어 있습니다.
+Send a task:
-- 인사말, 수학, 지리, 코드 생성
-- JSON 형식 준수, 번역, 마크다운
-- 안전 거부(유해 콘텐츠), 카운팅, 부울 논리
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### 평가 전략
+Manage lifecycle:
-| 전략 | 설명 | 예 |
-| ---------- | -------------------------------------------------------------- | -------------------------------- |
-| `exact` | 출력은 정확히 일치해야 합니다 | `"4"` |
-| `contains` | 출력에는 하위 문자열(대소문자 구분 안 함)이 포함되어야 합니다. | `"Paris"` |
-| `regex` | 출력은 정규식 패턴과 일치해야 합니다 | `"1.*2.*3"` |
-| `custom` | 사용자 정의 JS 함수가 true/false를 반환합니다. | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 설정 가이드
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 구독 제공업체
+🧪 End-to-end protocol validation
-### 클로드 코드(Pro/Max)
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
+
+### Claude Code (Pro/Max)
```bash
Dashboard → Providers → Connect Claude Code
@@ -1065,9 +1438,9 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**프로 팁:** 복잡한 작업에는 Opus를 사용하고, 속도를 높이려면 Sonnet을 사용하세요. OmniRoute는 모델당 할당량을 추적합니다!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
-### OpenAI 코덱스(Plus/Pro)
+### OpenAI Codex (Plus/Pro)
```bash
Dashboard → Providers → Connect Codex
@@ -1079,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI(월 180,000 무료!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1091,9 +1481,9 @@ Models:
gc/gemini-2.5-pro
```
-**최고의 가치:** 엄청난 무료 등급! 유료 등급 이전에 사용하세요.
+**Best Value:** Huge free tier! Use this before paid tiers.
-### GitHub 코파일럿
+### GitHub Copilot
```bash
Dashboard → Providers → Connect GitHub
@@ -1109,88 +1499,88 @@ Models:
-🔑 API 키 제공자
+🔑 API Key Providers
-### NVIDIA NIM(무료 1000 크레딧!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. 가입: [build.nvidia.com](https://build.nvidia.com)
-2. 무료 API 키 받기(1000 추론 크레딧 포함)
-3. 대시보드 → 공급자 추가 → NVIDIA NIM:
- - API 키: `nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**모델:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` 외 50개 이상
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**프로 팁:** OpenAI 호환 API — OmniRoute의 형식 변환과 원활하게 작동합니다!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
-### 딥시크
+### DeepSeek
-1. 가입: [platform.deepseek.com](https://platform.deepseek.com)
-2. API 키 받기
-3. 대시보드 → 공급자 추가 → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**모델:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq(무료 등급 사용 가능!)
+### Groq (Free Tier Available!)
-1. 가입: [console.groq.com](https://console.groq.com)
-2. API 키 받기(무료 등급 포함)
-3. 대시보드 → 공급자 추가 → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**모델:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**프로 팁:** 초고속 추론 — 실시간 코딩에 가장 적합합니다!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter(100개 이상의 모델)
+### OpenRouter (100+ Models)
-1. 가입: [openrouter.ai](https://openrouter.ai)
-2. API 키 받기
-3. 대시보드 → 공급자 추가 → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**모델:** 단일 API 키를 통해 모든 주요 제공업체의 100개 이상의 모델에 액세스할 수 있습니다.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 저렴한 공급자(백업)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (일일 재설정, $0.6/1M)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. 가입: [Zhipu AI](https://open.bigmodel.cn/)
-2. Coding Plan에서 API Key 받기
-3. 대시보드 → API 키 추가:
- - 제공자: `glm`
- - API 키: `your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**사용:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**프로 팁:** 코딩 계획은 1/7 비용으로 3배 할당량을 제공합니다! 매일 오전 10시에 초기화됩니다.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1(5시간 재설정, $0.20/1M)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. 가입: [MiniMax](https://www.minimax.io/)
-2. API 키 받기
-3. 대시보드 → API Key 추가
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**사용:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**프로 팁:** 긴 컨텍스트(100만 토큰)를 위한 가장 저렴한 옵션입니다!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2($9/월 정액)
+### Kimi K2 ($9/month flat)
-1. 구독: [Moonshot AI](https://platform.moonshot.ai/)
-2. API 키 받기
-3. 대시보드 → API Key 추가
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**사용:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**프로 팁:** 1,000만 토큰에 대해 고정 $9/월 = $0.90/1M 유효 비용!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 무료 제공업체(긴급 백업)
+🆓 FREE Providers (Emergency Backup)
-### iFlow(8개 무료 모델)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1205,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen(3개 무료 모델)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1217,7 +1607,7 @@ Models:
qw/qwen3-coder-flash
```
-### 키로(클로드 프리)
+### Kiro (Claude FREE)
```bash
Dashboard → Connect Kiro
@@ -1232,9 +1622,9 @@ Models:
-🎨 콤보 만들기
+🎨 Create Combos
-### 예시 1: 구독 최대화 → 저렴한 백업
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1248,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### 예시 2: 무료 전용(비용 없음)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1263,9 +1653,9 @@ Cost: $0 forever!
-🔧 CLI 통합
+🔧 CLI Integration
-### 커서 IDE
+### Cursor IDE
```
Settings → Models → Advanced:
@@ -1274,11 +1664,11 @@ Settings → Models → Advanced:
Model: cc/claude-opus-4-6
```
-### 클로드 코드
+### Claude Code
-원클릭 구성을 위해 대시보드의 **CLI 도구** 페이지를 사용하거나 `~/.claude/settings.json`을 수동으로 편집하세요.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
-### 코덱스 CLI
+### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
@@ -1287,15 +1677,15 @@ export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
```
-### 오픈클로
+### OpenClaw
-**옵션 1 - 대시보드(권장):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**옵션 2 — 수동:** `~/.openclaw/openclaw.json` 편집:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1311,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **참고:** OpenClaw는 로컬 OmniRoute에서만 작동합니다. IPv6 확인 문제를 방지하려면 `localhost` 대신 `127.0.0.1`을 사용하세요.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### 클라인 / 계속 / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1323,110 +1713,245 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 문제 해결
+## 문제 해결
-문제 해결 가이드를 확장하려면 클릭하세요
+Click to expand troubleshooting guide
-**"언어 모델이 메시지를 제공하지 않았습니다"**
+**"Language model did not provide messages"**
-- 공급자 할당량 소진 → 대시보드 할당량 추적기 확인
-- 해결 방법: 콤보 폴백을 사용하거나 더 저렴한 계층으로 전환하세요.
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**비율 제한**
+**Rate limiting**
-- 구독 할당량 초과 → GLM/MiniMax로 대체
-- 콤보 추가: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**OAuth 토큰이 만료되었습니다**
+**OAuth token expired**
-- OmniRoute에 의해 자동 새로고침
-- 문제가 지속되는 경우: Dashboard → Provider → Reconnect
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**높은 비용**
+**High costs**
-- 대시보드 → 비용에서 사용 통계를 확인하세요.
-- 기본 모델을 GLM/MiniMax로 전환
-- 중요하지 않은 작업에는 무료 계층(Gemini CLI, iFlow)을 사용합니다.
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**대시보드가 잘못된 포트에서 열립니다**
+**Dashboard/API ports are wrong**
-- `PORT=20128` 및 `NEXT_PUBLIC_BASE_URL=http://localhost:20128` 설정
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**클라우드 동기화 오류**
+**Cloud sync errors**
-- `BASE_URL`이 실행 중인 인스턴스를 가리키는지 확인합니다.
-- `CLOUD_URL`이 예상 클라우드 엔드포인트를 가리키는지 확인하세요.
-- `NEXT_PUBLIC_*` 값을 서버측 값과 일치하도록 유지합니다.
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**첫 번째 로그인이 작동하지 않습니다**
+**First login not working**
-- `.env`에서 `INITIAL_PASSWORD`을 확인하세요.
-- 설정되지 않은 경우 대체 비밀번호는 `123456`입니다.
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**요청 로그 없음**
+**No request logs**
-- `.env`에 `ENABLE_REQUEST_LOGS=true`을 설정합니다.
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**OpenAI 호환 공급자에 대한 연결 테스트에서 "잘못됨"이 표시됩니다**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- 많은 공급자가 `/models` 엔드포인트를 노출하지 않습니다.
-- OmniRoute v1.0.6+에는 채팅 완료를 통한 대체 검증이 포함되어 있습니다.
-- 기본 URL에 `/v1` 접미사가 포함되어 있는지 확인하세요.
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 OAuth
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ VPS/Docker/remotor의 OmniRoute를 사용하는 경우 중요**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-Os는 **반중력** 및 **Gemini CLI**를 인증하기 위해 **Google OAuth 2.0**을 입증했습니다. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs pre-cadastradas no Google Cloud Console do aplicativo.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-OAuth는 OmniRoute에 대한 신용 정보를 포함하지 않으므로 **`localhost`**에 대한 액세스 권한을 갖습니다. Quando você acessa o OmniRoute em um servidor remoto (예: `https://omniroute.meuservidor.com`), o Google rejeita autenticação com:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### 해결책: 개인 정보 보호 OAuth 구성
+#### Solution: Configure your own OAuth credentials
+
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
-#### 파쏘 아 파소
+#### Passo a passo
-**1. Google Cloud Console에 액세스**
+**1. Acesse o Google Cloud Console**
-아브라: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
-**2. Crie um novo OAuth 2.0 클라이언트 ID**
+**2. Crie um novo OAuth 2.0 Client ID**
-- em 클릭 **"+ 자격 증명 만들기"** → **"OAuth 클라이언트 ID"**
-- 적용 분야: **"웹 애플리케이션"**
-- 이름: escolha qualquer nome (예: `OmniRoute Remote`)
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. 승인된 리디렉션 URI로서의 Adicione**
+**3. Adicione as Authorized Redirect URIs**
-아니요 **"승인된 리디렉션 URI"**, 추가:
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
```
-> `seu-servidor.com` pelo domínio 또는 IP do seu servidor로 대체합니다(필요한 포트 포함, 예: `http://45.33.32.156:20128/callback`).
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. 사본을 자격 증명으로 저장**
+**4. Salve e copie as credenciais**
-Após criar, o Google morerá o **클라이언트 ID** e o **클라이언트 비밀번호**.
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. 다양한 주변 환경으로 구성**
+**5. Configure as variáveis de ambiente**
-`.env`(Docker의 주변 환경에 따라 다름)이 없습니다.
+No seu `.env` (ou nas variáveis de ambiente do Docker):
```bash
# Para Antigravity:
@@ -1439,7 +1964,7 @@ GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
```
-**6. Reinicie 또는 OmniRoute**
+**6. Reinicie o OmniRoute**
```bash
# Se usando npm:
@@ -1451,151 +1976,145 @@ docker restart omniroute
**7. Tente conectar novamente**
-대시보드 → 공급자 → Antigravity(또는 Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
-Agora는 `https://seu-servidor.com/callback` 및 자동 기능에 대한 Google 리디렉션을 수정합니다.
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### 임시 해결 방법(sem configurar credenciais próprias)
+#### Workaround temporário (sem configurar credenciais próprias)
Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. OmniRoute는 Google 자동 생성 URL을 확인합니다.
-2. Após você autorizar, o Google tentará redirectionar para `localhost` (que falha no servidor remoto)
-3. **URL 복사 완료** da barra de endereço do seu browser (mesmo que a página não carregue)
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
-5. Clique em **"연결"**
+5. Clique em **"Connect"**
-> 이 해결 방법은 URL을 통해 자동으로 코드를 확인하거나 독립적으로 리디렉션할 수 있도록 하는 것입니다.
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **런타임**: Node.js 18–22 LTS(⚠️ Node.js 24+는 **지원되지 않습니다** — `better-sqlite3` 네이티브 바이너리는 호환되지 않습니다)
-- **언어**: TypeScript 5.9 — `src/` 및 `open-sse/`에서 **100% TypeScript**(v1.0.6)
-- **프레임워크**: Next.js 16 + React 19 + Tailwind CSS 4
-- **데이터베이스**: LowDB(JSON) + SQLite(도메인 상태 + 프록시 로그)
-- **스트리밍**: 서버에서 보낸 이벤트(SSE)
-- **인증**: OAuth 2.0(PKCE) + JWT + API 키
-- **테스트**: Node.js 테스트 실행기(368개 이상의 단위 테스트)
-- **CI/CD**: GitHub Actions(자동 npm 게시 + 출시 시 Docker Hub)
-- **웹사이트**: [omniroute.online](https://omniroute.online)
-- **패키지**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **도커**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **복원력**: 회로 차단기, 지수 백오프, 천둥 방지 무리, TLS 스푸핑
-
----
-
-## 📖 문서
-
-| 문서 | 설명 |
-| -------------------------------------------- | ------------------------------------------ |
-| [User Guide](docs/USER_GUIDE.md) | 공급자, 콤보, CLI 통합, 배포 |
-| [API Reference](docs/API_REFERENCE.md) | 예제가 포함된 모든 엔드포인트 |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | 일반적인 문제 및 해결 방법 |
-| [Architecture](docs/ARCHITECTURE.md) | 시스템 아키텍처 및 내부 |
-| [Contributing](CONTRIBUTING.md) | 개발 설정 및 지침 |
-| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 사양 |
-| [Security Policy](SECURITY.md) | 취약점 보고 및 보안 관행 |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | 전체 가이드: VM + nginx + Cloudflare 설정 |
-| [Features Gallery](docs/FEATURES.md) | 스크린샷을 포함한 시각적 대시보드 둘러보기 |
-
-### 📸 대시보드 미리보기
+## 🛠️ Tech Stack
-대시보드 스크린샷을 보려면 클릭하세요.
+Click to expand tech stack details
-| 페이지 | 스크린샷 |
-| -------------- | ------------------------------------------------- |
-| **공급자** |  |
-| **콤보** |  |
-| **분석** |  |
-| **건강** |  |
-| **번역가** |  |
-| **설정** |  |
-| **CLI 도구** |  |
-| **사용 로그** |  |
-| **엔드포인트** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## 문서
-OmniRoute에는 여러 개발 단계에 걸쳐 **210개 이상의 기능이 계획되어 있습니다**. 주요 영역은 다음과 같습니다.
-
-| 카테고리 | 계획된 기능 | 하이라이트 |
-| ---------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------ |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🧠 **라우팅 및 인텔리전스** | 25세 이상 | 최저 대기 시간 라우팅, 태그 기반 라우팅, 실행 전 할당량, P2C 계정 선택 |
-| 🔒 **보안 및 규정 준수** | 20세 이상 | SSRF 강화, 자격 증명 클로킹, 엔드포인트당 속도 제한, 관리 키 범위 지정 |
-| 📊 **관측성** | 15세 이상 | OpenTelemetry 통합, 실시간 할당량 모니터링, 모델별 비용 추적 |
-| 🔄 **공급자 통합** | 20세 이상 | 동적 모델 레지스트리, 공급자 쿨다운, 다중 계정 Codex, Copilot 할당량 구문 분석 |
-| ⚡ **성능** | 15세 이상 | 듀얼 캐시 레이어, 프롬프트 캐시, 응답 캐시, 스트리밍 Keepalive, 배치 API |
-| 🌐 **생태계** | 10세 이상 | WebSocket API, 구성 핫 리로드, 분산 구성 저장소, 상용 모드 |
-
-### 🔜 출시 예정
-
-- 🔗 **OpenCode 통합** — OpenCode AI 코딩 IDE에 대한 기본 공급자 지원
-- 🔗 **TRAE 통합** — TRAE AI 개발 프레임워크를 완벽하게 지원
-- 📦 **Batch API** — 대량 요청에 대한 비동기식 일괄 처리
-- 🎯 **태그 기반 라우팅** — 사용자 정의 태그 및 메타데이터를 기반으로 요청 라우팅
-- 💰 **최저 비용 전략** — 가장 저렴한 제공업체를 자동으로 선택합니다.
-
-> 📝 [link](docs/new-features/)에서 사용 가능한 전체 기능 사양(217개 세부 사양)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 기여자
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### 기여 방법
+### How to Contribute
-1. 저장소 포크
-2. 기능 분기 생성(`git checkout -b feature/amazing-feature`)
-3. 변경 사항을 커밋합니다(`git commit -m 'Add amazing feature'`).
-4. 브랜치(`git push origin feature/amazing-feature`)로 푸시
-5. 풀 리퀘스트 열기
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-자세한 지침은 [CONTRIBUTING.md](CONTRIBUTING.md)을 참조하세요.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### 새 버전 출시
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 스타 히스토리
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 감사의 말씀
+## 🙏 Acknowledgments
-이 포크에 영감을 준 원본 프로젝트인 **[decolua](https://github.com/decolua)**의 **[9router](https://github.com/decolua/9router)**에게 특별히 감사드립니다. OmniRoute는 추가 기능, 다중 모드 API 및 전체 TypeScript 재작성을 통해 놀라운 기반을 구축합니다.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-이 JavaScript 포트에 영감을 준 최초의 Go 구현인 **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)**에게 특별히 감사드립니다.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 라이센스
+## 라이선스
-MIT 라이선스 - 자세한 내용은 [LICENSE](LICENSE)을 참조하세요.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
연중무휴을 코딩하는 개발자를 위해 ❤️으로 구축됨
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/ko/docs/FEATURES.md b/docs/i18n/ko/docs/FEATURES.md
new file mode 100644
index 0000000000..f94da700bb
--- /dev/null
+++ b/docs/i18n/ko/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (한국어)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/ms/README.md b/docs/i18n/ms/README.md
index b2c0fcee52..54e079f452 100644
--- a/docs/i18n/ms/README.md
+++ b/docs/i18n/ms/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — Gerbang AI Percuma
+# 🚀 OmniRoute — The Free AI Gateway (Bahasa Melayu)
-### Jangan sekali-kali berhenti mengekod. Penghalaan pintar ke **model AI PERCUMA & kos rendah** dengan sandaran automatik.
-
-_Proksi API universal anda — satu titik akhir, 36+ pembekal, masa henti sifar._
-
-**Penyelesaian Sembang • Pembenaman • Penjanaan Imej • Audio • Kedudukan Semula • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Pembekal AI percuma untuk ejen pengekodan kegemaran anda
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Sambungkan mana-mana alat IDE atau CLI berkuasa AI melalui OmniRoute — get laluan API percuma untuk pengekodan tanpa had._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _Sambungkan mana-mana alat IDE atau CLI berkuasa AI melalui OmniRoute — get la
|
-📡 Semua ejen menyambung melalui http://localhost:20128/v1 atau http://cloud.omniroute.online/v1 atau model http://cloud.omniroute.online/v1 —i_24_TOKEN dan satu —i_konfigurasi kuota
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Mengapa OmniRoute?
-
-**Berhenti membazir wang dan mencapai had:**
-
--
Kuota langganan tamat tempoh tidak digunakan setiap bulan
--
Had kadar menghalang anda pertengahan pengekodan
--
API Mahal ($20-50/bulan bagi setiap pembekal)
--
Pertukaran manual antara pembekal
-
-**OmniRoute menyelesaikan ini:**
-
-- ✅ **Maksimumkan langganan** - Jejaki kuota, gunakan setiap bit sebelum ditetapkan semula
-- ✅ **Auto sandaran** - Langganan → Kunci API → Murah → Percuma, masa henti sifar
-- ✅ **Berbilang akaun** - Round-robin antara akaun bagi setiap pembekal
-- ✅ **Universal** - Berfungsi dengan Kod Claude, Codex, Gemini CLI, Kursor, Cline, OpenClaw, sebarang alat CLI
-
----
-
-## 📧 Sokongan
-
-> 💬 **Sertai komuniti kami!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Dapatkan bantuan, kongsi petua dan kekal kemas kini.
-
-- **Laman web**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **Isu**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Projek Asal**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Cara Ia Berfungsi
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,451 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 Perkara yang Selesaikan OmniRoute — 30 Titik Sakit Nyata & Kes Penggunaan
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Setiap pembangun yang menggunakan alatan AI menghadapi masalah ini setiap hari.** OmniRoute dibina untuk menyelesaikan kesemuanya — daripada lebihan kos kepada blok serantau, daripada aliran OAuth yang rosak kepada operasi protokol dan kebolehmerhatian perusahaan.
+> **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 protocol operations and enterprise observability.
-💸 1. "Saya membayar untuk langganan yang mahal tetapi masih terganggu oleh had"
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Pembangun membayar $20–200/bulan untuk Claude Pro, Codex Pro atau GitHub Copilot. Walaupun membayar, kuota mempunyai siling — 5j penggunaan, had mingguan atau had kadar seminit. Sesi pertengahan pengekodan, pembekal berhenti bertindak balas dan pembangun kehilangan aliran dan produktiviti.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Smart 4-Tier Fallback** — Jika kuota langganan habis, diubah hala secara automatik ke API Key → Murah → Percuma tanpa campur tangan manual
-- **Penjejakan Kuota Masa Nyata** — Menunjukkan penggunaan token dalam masa nyata dengan kira detik tetapan semula (5j, harian, mingguan)
-- **Sokongan Berbilang Akaun** — Berbilang akaun bagi setiap pembekal dengan auto round-robin — apabila satu kehabisan, beralih kepada yang seterusnya
-- **Kombo Tersuai** — Rantaian sandaran yang boleh disesuaikan dengan 6 strategi pengimbangan (isi dahulu, round-robin, P2C, rawak, paling kurang digunakan, dioptimumkan kos)
-- **Kuota Perniagaan Codex** — Pemantauan kuota ruang kerja Perniagaan/Pasukan terus dalam papan pemuka
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. "Saya perlu menggunakan berbilang penyedia tetapi setiap satu mempunyai API yang berbeza"
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI menggunakan satu format, Claude (Anthropic) menggunakan satu lagi, Gemini satu lagi. Jika pembangun ingin menguji model daripada pembekal yang berbeza atau sandaran antara mereka, mereka perlu mengkonfigurasi semula SDK, menukar titik akhir, menangani format yang tidak serasi. Pembekal tersuai (FriendLI, NIM) mempunyai titik akhir model bukan standard.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Titik Akhir Disatukan** — Satu `http://localhost:20128/v1` berfungsi sebagai proksi untuk kesemua 36+ pembekal
-- **Format Terjemahan** — Automatik dan telus: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-- **Pembersihan Tindak Balas** — Mengosongkan medan bukan standard (`x_groq`, `usage_breakdown`, `service_tier`) yang memecahkan OpenAI SDK v1.83+
-- **Penormalan Peranan** — Menukar `developer` → `system` untuk penyedia bukan OpenAI; `system` → `user` untuk GLM/ERNIE
-- **Think Tag Extraction** — Mengekstrak blok `` daripada model seperti DeepSeek R1 ke dalam `reasoning_content` standard
-- **Output Berstruktur untuk Gemini** — `json_schema` → `responseMimeType`/`responseSchema` penukaran automatik
-- **`stream` lalai kepada `false`** — Menjajarkan dengan spesifikasi OpenAI, mengelakkan SSE yang tidak dijangka dalam Python/Rust/Go SDK
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. "Pembekal AI saya menyekat wilayah/negara saya"
+🌐 3. "My AI provider blocks my region/country"
-Penyedia seperti OpenAI/Codex menyekat akses daripada kawasan geografi tertentu. Pengguna mendapat ralat seperti `unsupported_country_region_territory` semasa sambungan OAuth dan API. Ini amat mengecewakan bagi pemaju dari negara membangun.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Konfigurasi Proksi 3 Tahap** — Proksi boleh dikonfigurasikan pada 3 peringkat: global (semua trafik), setiap pembekal (satu pembekal sahaja) dan setiap sambungan/kunci
-- **Lencana Proksi Berkod Warna** — Penunjuk visual: 🟢 proksi global, 🟡 proksi pembekal, 🔵 proksi sambungan, sentiasa menunjukkan IP
-- **Pertukaran Token OAuth Melalui Proksi** — Aliran OAuth juga melalui proksi, menyelesaikan `unsupported_country_region_territory`
-- **Ujian Sambungan melalui Proksi** — Ujian sambungan menggunakan proksi yang dikonfigurasikan (tiada lagi pintasan langsung)
-- **Sokongan SOCKS5** — Sokongan proksi SOCKS5 penuh untuk penghalaan keluar
-- **TLS Fingerprint Spoofing** — Cap jari TLS seperti pelayar melalui `wreq-js` untuk memintas pengesanan bot
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. "Saya mahu menggunakan AI untuk pengekodan tetapi saya tidak mempunyai wang"
+🆓 4. "I want to use AI for coding but I have no money"
-Tidak semua orang boleh membayar $20–200/bulan untuk langganan AI. Pelajar, pembangun dari negara baru muncul, penggemar dan pekerja bebas memerlukan akses kepada model berkualiti pada kos sifar.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Pembekal Peringkat Percuma Terbina dalam** — Sokongan asli untuk 100% pembekal percuma: iFlow (8 model tanpa had), Qwen (3 model tanpa had), Kiro (Claude secara percuma), Gemini CLI (180K/bulan percuma)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Kombo Percuma Sahaja** — Rantaian `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/bulan dengan masa henti sifar
-- **Kredit Percuma NVIDIA NIM** — 1000 kredit percuma disepadukan
-- **Strategi Dioptimumkan Kos** — Strategi penghalaan yang secara automatik memilih pembekal yang tersedia paling murah
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. "Saya perlu melindungi gerbang AI saya daripada akses tanpa kebenaran"
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Apabila mendedahkan get laluan AI kepada rangkaian (LAN, VPS, Docker), sesiapa sahaja yang mempunyai alamat boleh menggunakan token/kuota pembangun. Tanpa perlindungan, API terdedah kepada penyalahgunaan, suntikan segera dan penyalahgunaan.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Pengurusan Kunci API** — Penjanaan, penggiliran dan skop setiap pembekal dengan halaman `/dashboard/api-manager` khusus
-- **Kebenaran Tahap Model** — Hadkan kunci API kepada model tertentu (`openai/*`, corak kad bebas), dengan Togol Benarkan Semua/Sekat
-- **Perlindungan Titik Akhir API** — Memerlukan kunci untuk `/v1/models` dan menyekat penyedia tertentu daripada penyenaraian
-- **Auth Guard + CSRF Protection** — Semua laluan papan pemuka dilindungi dengan `withAuth` middleware + token CSRF
-- **Penghad Kadar** — Pengehadan kadar Per-IP dengan tetingkap boleh dikonfigurasikan
-- **Penapisan IP** — Senarai Benar/senarai sekat untuk kawalan akses
-- **Pengawal Suntikan Segera** — Pensanitasi terhadap corak segera yang berniat jahat
-- **Penyulitan AES-256-GCM** — Bukti kelayakan disulitkan semasa rehat
+- **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. "Pembekal saya gagal dan saya kehilangan aliran pengekodan saya"
+🛑 6. "My provider went down and I lost my coding flow"
-Pembekal AI boleh menjadi tidak stabil, mengembalikan ralat 5xx atau mencapai had kadar sementara. Jika pembangun bergantung pada penyedia tunggal, mereka akan terganggu. Tanpa pemutus litar, percubaan semula berulang boleh ranap aplikasi.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Pemutus Litar bagi setiap pembekal** — Auto buka/tutup dengan ambang boleh dikonfigurasikan dan cooldown (Ditutup/Buka/Separuh Terbuka)
-- **Penyingkiran Eksponen** — Kelewatan percubaan semula progresif
-- **Kawanan Anti Gemuruh** — Mutex + perlindungan semafor terhadap ribut percubaan semula serentak
-- **Kombo Rantai Sandar** — Jika pembekal utama gagal, secara automatik jatuh melalui rantaian tanpa campur tangan
-- **Pemutus Litar Kombo** — Lumpuhkan automatik pembekal yang gagal dalam rantaian kombo
-- **Papan Pemuka Kesihatan** — Pemantauan masa aktif, keadaan pemutus litar, penguncian, statistik cache, kependaman p50/p95/p99
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. "Mengkonfigurasi setiap alat AI adalah membosankan dan berulang"
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Pembangun menggunakan Kursor, Kod Claude, Codex CLI, OpenClaw, Gemini CLI, Kod Kilo... Setiap alat memerlukan konfigurasi yang berbeza (titik akhir API, kunci, model). Mengkonfigurasi semula apabila menukar pembekal atau model adalah membuang masa.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Papan Pemuka Alat CLI** — Halaman khusus dengan persediaan satu klik untuk Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-- **GitHub Copilot Config Generator** — Menghasilkan `chatLanguageModels.json` untuk Kod VS dengan pemilihan model pukal
-- **Onboarding Wizard** — Persediaan 4 langkah berpandu untuk pengguna kali pertama
-- **Satu titik akhir, semua model** — Konfigurasikan `http://localhost:20128/v1` sekali, akses 36+ pembekal
+- **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 67+ providers
-🔑 8. "Menguruskan token OAuth daripada berbilang penyedia adalah neraka"
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Kod Claude, Codex, Gemini CLI, Copilot — semuanya menggunakan OAuth 2.0 dengan token tamat tempoh. Pembangun perlu sentiasa mengesahkan semula, menangani `client_secret is missing`, `redirect_uri_mismatch` dan kegagalan pada pelayan jauh. OAuth pada LAN/VPS amat bermasalah.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Muat Semula Token Auto** — Token OAuth dimuat semula di latar belakang sebelum tamat tempoh
-- **OAuth 2.0 (PKCE) Terbina dalam** — Aliran automatik untuk Kod Claude, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **OAuth Berbilang Akaun** — Berbilang akaun bagi setiap pembekal melalui pengekstrakan token JWT/ID
-- **OAuth LAN/Remote Fix** — Pengesanan IP peribadi untuk `redirect_uri` + mod URL manual untuk pelayan jauh
-- **OAuth Behind Nginx** — Menggunakan `window.location.origin` untuk keserasian proksi terbalik
-- **Panduan OAuth Jauh** — Panduan langkah demi langkah untuk kelayakan Google Cloud pada VPS/Docker
+- **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. "Saya tidak tahu berapa banyak yang saya belanjakan atau di mana"
+📊 9. "I don't know how much I'm spending or where"
-Pembangun menggunakan berbilang penyedia berbayar tetapi tidak mempunyai pandangan bersatu tentang perbelanjaan. Setiap pembekal mempunyai papan pemuka pengebilan sendiri, tetapi tiada paparan disatukan. Kos yang tidak dijangka boleh bertimbun.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Papan Pemuka Analitis Kos** — Penjejakan kos per-token dan pengurusan belanjawan bagi setiap pembekal
-- **Had Belanjawan setiap Peringkat** — Siling perbelanjaan setiap peringkat yang mencetuskan sandaran automatik
-- **Konfigurasi Harga Per-Model** — Harga boleh dikonfigurasikan bagi setiap model
-- **Statistik Penggunaan Setiap Kunci API** — Kiraan permintaan dan cap masa yang terakhir digunakan setiap kunci
-- **Papan Pemuka Analitik** — Kad statistik, carta penggunaan model, jadual pembekal dengan kadar kejayaan dan kependaman
+- **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. "Saya tidak dapat mendiagnosis ralat dan masalah dalam panggilan AI"
+🐛 10. "I can't diagnose errors and problems in AI calls"
-Apabila panggilan gagal, pembangun tidak tahu sama ada ia adalah had kadar, token tamat tempoh, format yang salah atau ralat pembekal. Log berpecah-belah merentasi terminal yang berbeza. Tanpa pemerhatian, penyahpepijatan adalah percubaan-dan-ralat.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Papan Pemuka Log Bersatu** — 4 tab: Log Permintaan, Log Proksi, Log Audit, Konsol
-- **Pemapar Log Konsol** — Pemapar gaya terminal masa nyata dengan tahap berkod warna, tatal automatik, carian, penapis
-- **Log Proksi SQLite** — Log berterusan yang bertahan dimulakan semula
-- **Taman Permainan Penterjemah** — 4 mod nyahpepijat: Taman Permainan (terjemahan format), Penguji Sembang (perjalanan pergi balik), Bangku Ujian (batch), Monitor Langsung (masa nyata)
-- **Permintaan Telemetri** — kependaman p50/p95/p99 + pengesanan X-Request-Id
-- **Pengelogan Berasaskan Fail dengan Putaran** — Pemintas konsol menangkap segala-galanya ke log JSON dengan putaran berasaskan saiz
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. "Menyedia dan menyelenggara gerbang adalah rumit"
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Memasang, mengkonfigurasi dan menyelenggara proksi AI merentas persekitaran yang berbeza (tempatan, VPS, Docker, awan) adalah intensif buruh. Masalah seperti laluan berkod keras, `EACCES` pada direktori, konflik port dan binaan merentas platform menambah geseran.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **pemasangan global npm** — `npm install -g omniroute && omniroute` — selesai
-- **Docker Multi-Platform** — AMD64 + ARM64 asli (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Profil Karang Docker** — `base` (tiada alat CLI) dan `cli` (dengan Kod Claude, Codex, OpenClaw)
-- **Apl Desktop Elektron** — Apl asli untuk Windows/macOS/Linux dengan dulang sistem, auto mula, mod luar talian
-- **Mod Split-Port** — API dan Papan Pemuka pada port berasingan untuk senario lanjutan (proksi terbalik, rangkaian kontena)
-- **Cloud Sync** — Konfigurasikan penyegerakan merentas peranti melalui Cloudflare Workers
-- **Sandaran DB** — Sandaran automatik, pulihkan, eksport dan import semua tetapan
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. "Antara muka adalah bahasa Inggeris sahaja dan pasukan saya tidak berbahasa Inggeris"
+🌍 12. "The interface is English-only and my team doesn't speak English"
-Pasukan di negara bukan berbahasa Inggeris, terutamanya di Amerika Latin, Asia dan Eropah, bergelut dengan antara muka bahasa Inggeris sahaja. Halangan bahasa mengurangkan penggunaan dan meningkatkan ralat konfigurasi.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Papan pemuka i18n — 30 Bahasa** — Semua 500+ kunci diterjemahkan termasuk bahasa Arab, Bulgaria, Denmark, Jerman, Sepanyol, Finland, Perancis, Ibrani, Hindi, Hungary, Indonesia, Itali, Jepun, Korea, Melayu, Belanda, Norway, Poland, Portugis (PT/BR), Romania, Rusia, Slovak, Sweden, Thai, Ukraine, Vietnam, Cina
-- **Sokongan RTL** — Sokongan kanan ke kiri untuk bahasa Arab dan Ibrani
-- **README Berbilang Bahasa** — 30 terjemahan dokumentasi lengkap
-- **Pemilih Bahasa** — Ikon Glob dalam pengepala untuk penukaran masa nyata
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. "Saya perlukan lebih daripada sembang — saya perlukan benam, imej, audio"
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-AI bukan sekadar penyelesaian sembang. Pembangun perlu menjana imej, menyalin audio, membuat pembenaman untuk RAG, menyusun semula dokumen dan kandungan sederhana. Setiap API mempunyai titik akhir dan format yang berbeza.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Pembenaman** — `/v1/embeddings` dengan 6 pembekal dan 9+ model
-- **Penjanaan Imej** — `/v1/images/generations` dengan 10 pembekal dan 20+ model (OpenAI, xAI, Together, Bunga Api, Nebius, Hiperbolik, NanoBanana, Antigraviti, SD WebUI, ComfyUI)
-- **Teks-ke-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) dan SD WebUI
-- **Teks-ke-Muzik** — `/v1/music/generations` — ComfyUI (Audio Terbuka, MusicGen)
-- **Transkripsi Audio** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Teks-ke-Ucapan** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + pembekal sedia ada
-- **Moderasi** — `/v1/moderations` — Pemeriksaan keselamatan kandungan
-- **Penyusunan semula** — `/v1/rerank` — Penyusunan semula perkaitan dokumen
-- **Respons API** — Sokongan penuh `/v1/responses` untuk Codex
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. "Saya tiada cara untuk menguji dan membandingkan kualiti merentas model"
+🧪 14. "I have no way to test and compare quality across models"
-Pembangun ingin mengetahui model mana yang terbaik untuk kes penggunaan mereka — kod, terjemahan, penaakulan — tetapi membandingkan secara manual adalah perlahan. Tiada alat eval bersepadu wujud.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **LLM Evaluations** — Ujian set emas dengan 10 kes pra-muat meliputi salam, matematik, geografi, penjanaan kod, pematuhan JSON, terjemahan, penurunan harga, penolakan keselamatan
-- **4 Strategi Padanan** — `exact`, `contains`, `regex`, `custom` (fungsi JS)
-- **Bangku Ujian Taman Permainan Penterjemah** — Ujian kelompok dengan berbilang input dan output yang dijangka, perbandingan merentas pembekal
-- **Penguji Sembang** — Perjalanan pergi balik penuh dengan pemaparan respons visual
-- **Pantau Langsung** — Strim masa nyata semua permintaan yang mengalir melalui proksi
+- **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. "Saya perlu skala tanpa kehilangan prestasi"
+📈 15. "I need to scale without losing performance"
-Apabila volum permintaan bertambah, tanpa menyimpan cache soalan yang sama menjana kos pendua. Tanpa idempotensi, pendua meminta pemprosesan sisa. Had kadar setiap pembekal mesti dipatuhi.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **Cache Semantik** — Cache dua peringkat (tandatangan + semantik) mengurangkan kos dan kependaman
-- **Request Idempotency** — tetingkap penyahduplikasi 5s untuk permintaan yang sama
-- **Pengesanan Had Kadar** — RPM setiap pembekal, jurang min dan penjejakan serentak maks
-- **Had Kadar Boleh Diedit** — Lalai boleh dikonfigurasikan dalam Tetapan → Ketahanan dengan kegigihan
-- **Cache Pengesahan Kunci API** — Cache 3 peringkat untuk prestasi pengeluaran
-- **Papan Pemuka Kesihatan dengan Telemetri** — kependaman p50/p95/p99, statistik cache, masa beroperasi
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. "Saya mahu mengawal tingkah laku model secara global"
+🤖 16. "I want to control model behavior globally"
-Pembangun yang mahukan semua respons dalam bahasa tertentu, dengan nada tertentu atau ingin mengehadkan token penaakulan. Mengkonfigurasi ini dalam setiap alat/permintaan adalah tidak praktikal.
+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.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- **System Prompt Injection** — Gesaan global digunakan untuk semua permintaan
-- **Pengesahan Belanjawan Berfikir** — Kawalan peruntukan token penaakulan setiap permintaan (laluan, auto, tersuai, adaptif)
-- **6 Strategi Penghalaan** — Strategi global yang menentukan cara permintaan diedarkan
-- **Penghala Wildcard** — Corak `provider/*` halakan secara dinamik kepada mana-mana pembekal
-- **Kombo Dayakan/Lumpuhkan Togol** — Togol kombo terus dari papan pemuka
-- **Togol Pembekal** — Dayakan/lumpuhkan semua sambungan untuk pembekal dengan satu klik
-- **Pembekal Disekat** — Kecualikan pembekal khusus daripada penyenaraian `/v1/models`
+- **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
-🧰 17. "Saya memerlukan alatan MCP sebagai keupayaan produk kelas pertama"
+🧰 17. "I need MCP tools as first-class product capabilities"
-Banyak get laluan AI mendedahkan MCP hanya sebagai butiran pelaksanaan tersembunyi. Pasukan memerlukan lapisan operasi yang boleh dilihat dan boleh diurus.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- MCP muncul dalam navigasi papan pemuka dan tab protokol titik akhir
-- Halaman pengurusan MCP khusus dengan proses, alatan, skop dan audit
-- Permulaan pantas terbina dalam untuk `omniroute --mcp` dan onboarding pelanggan
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "Saya memerlukan orkestrasi A2A dengan laluan tugas penyegerakan + aliran"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Aliran kerja ejen memerlukan balasan langsung dan pelaksanaan strim jangka panjang dengan kawalan kitaran hayat.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Titik akhir A2A JSON-RPC (`POST /a2a`) dengan `message/send` dan `message/stream`
-- Penstriman SSE dengan penyebaran keadaan terminal
-- API kitaran hayat tugas untuk `tasks/get` dan `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. "Saya memerlukan kesihatan proses MCP sebenar, bukan status yang diduga"
+🛰️ 19. "I need real MCP process health, not guessed status"
-Pasukan operasi perlu mengetahui sama ada MCP sebenarnya masih hidup, bukan hanya sama ada API boleh dicapai.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Fail degupan jantung masa jalan dengan PID, cap masa, pengangkutan, kiraan alat dan mod skop
-- API status MCP yang menggabungkan degupan jantung + aktiviti terkini
-- Kad status UI untuk kesegaran proses/masa hidup/degupan jantung
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "Saya memerlukan pelaksanaan alat MCP yang boleh diaudit"
+📋 20. "I need auditable MCP tool execution"
-Apabila alat mengubah konfigurasi atau mencetuskan tindakan ops, pasukan memerlukan kebolehkesanan forensik.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Pengelogan audit yang disokong SQLite untuk panggilan alat MCP
-- Tapis mengikut alat, kejayaan/kegagalan, kunci API dan penomboran
-- Jadual audit papan pemuka + titik akhir statistik untuk automasi
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "Saya memerlukan keizinan MCP berskop bagi setiap penyepaduan"
+🔐 21. "I need scoped MCP permissions per integration"
-Pelanggan yang berbeza harus mempunyai akses paling tidak istimewa kepada kategori alat.
+Different clients should have least-privilege access to tool categories.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- 9 skop MCP berbutir untuk akses alat terkawal
-- Penguatkuasaan skop dan keterlihatan dalam UI pengurusan MCP
-- Postur lalai yang selamat untuk perkakas operasi
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. "Saya memerlukan kawalan operasi tanpa mengatur semula"
+⚙️ 22. "I need operational controls without redeploying"
-Pasukan memerlukan perubahan masa jalan yang cepat semasa insiden atau peristiwa kos.
+Teams need quick runtime changes during incidents or cost events.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Tukar pengaktifan kombo terus dari papan pemuka MCP
-- Gunakan profil daya tahan daripada pek dasar yang telah ditetapkan
-- Tetapkan semula keadaan pemutus litar daripada panel operasi yang sama
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. "Saya memerlukan keterlihatan dan pembatalan kitaran hayat tugas A2A secara langsung"
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Tanpa keterlihatan kitaran hayat, insiden tugasan menjadi sukar untuk dicuba.
+Without lifecycle visibility, task incidents become hard to triage.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Penyenaraian tugas/penapisan mengikut keadaan/kemahiran dengan penomboran
-- Latih tubi tentang metadata tugas, peristiwa dan artifak
-- Titik akhir pembatalan tugas dan tindakan UI dengan pengesahan
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. "Saya memerlukan metrik strim aktif untuk beban A2A"
+🌊 24. "I need active stream metrics for A2A load"
-Aliran kerja penstriman memerlukan cerapan operasi tentang konkurensi dan sambungan langsung.
+Streaming workflows require operational insight into concurrency and live connections.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Kaunter aliran aktif disepadukan ke dalam status A2A
-- Cap masa tugas terakhir dan kiraan setiap negeri
-- Kad papan pemuka A2A untuk pemantauan operasi masa nyata
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "Saya memerlukan penemuan ejen standard untuk pelanggan"
+🪪 25. "I need standard agent discovery for clients"
-Pelanggan dan orkestra luar memerlukan metadata yang boleh dibaca mesin untuk onboarding.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Kad Agen terdedah pada `/.well-known/agent.json`
-- Keupayaan dan kemahiran ditunjukkan dalam UI pengurusan
-- API status A2A termasuk metadata penemuan untuk automasi
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "Saya memerlukan kebolehtemuan protokol dalam produk UX"
+🧭 26. "I need protocol discoverability in the product UX"
-Jika pengguna tidak dapat menemui permukaan protokol, penggunaan dan kualiti sokongan akan menurun.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Entri bar sisi untuk MCP dan A2A
-- Tab Protokol halaman titik akhir dengan permulaan pantas dan status
-- Pautan dari gambaran keseluruhan ke papan pemuka pengurusan khusus
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "Saya memerlukan pengesahan protokol hujung ke hujung dengan pelanggan sebenar"
+🧪 27. "I need end-to-end protocol validation with real clients"
-Ujian olok-olok tidak mencukupi untuk mengesahkan keserasian protokol sebelum dikeluarkan.
+Mock tests are not enough to validate protocol compatibility before release.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Suite E2E yang but apl dan menggunakan pengangkutan pelanggan MCP SDK sebenar
-- Ujian pelanggan A2A untuk penemuan, menghantar, menstrim, mendapatkan dan membatalkan aliran
-- Periksa silang dakwaan terhadap audit MCP dan API tugasan A2A
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. "Saya memerlukan pemerhatian bersatu merentas semua antara muka"
+📡 28. "I need unified observability across all interfaces"
-Memisahkan kebolehmerhatian mengikut protokol mewujudkan titik buta dan MTTR yang lebih panjang.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Papan pemuka/log/analisis bersatu dalam satu produk
-- Kesihatan + audit + telemetri permintaan merentas lapisan OpenAI, MCP dan A2A
-- API Operasi untuk status dan automasi
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "Saya memerlukan satu masa jalan untuk proksi + alatan + orkestrasi ejen"
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Menjalankan banyak perkhidmatan berasingan meningkatkan kos operasi dan mod kegagalan.
+Running many separate services increases operational cost and failure modes.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Proksi serasi OpenAI, pelayan MCP dan pelayan A2A dalam satu tindanan
-- Kebenaran dikongsi, daya tahan, stor data dan kebolehmerhatian
-- Model dasar yang konsisten merentas semua permukaan interaksi
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. "Saya perlu menghantar aliran kerja ejentik tanpa sebaran kod gam"
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Pasukan kehilangan halaju apabila mencantumkan berbilang perkhidmatan dan skrip ad-hoc.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Cara OmniRoute menyelesaikannya:**
+**How OmniRoute solves it:**
-- Strategi titik akhir bersatu untuk pelanggan dan ejen
-- UI pengurusan protokol terbina dalam dan laluan pengesahan asap
-- Asas sedia pengeluaran (keselamatan, pembalakan, daya tahan, sandaran)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Contoh Buku Main (Kes Penggunaan Bersepadu)
+### Example Playbooks (Integrated Use Cases)
-**Playbook A: Maksimumkan langganan berbayar + sandaran murah**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -683,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Playbook B: Timbunan pengekodan kos sifar**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -695,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Playbook C: 24/7 rantai sandaran sentiasa hidup**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -708,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Playbook D: Operasi ejen dengan MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Mula Pantas
+## 🆓 Start Free — Zero Configuration Cost
-**1. Pasang secara global:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Mula Pantas
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Papan pemuka dibuka pada `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Perintah | Penerangan |
-| ----------------------- | ---------------------------------- |
-| `omniroute` | Mulakan pelayan (port lalai 20128) |
-| `omniroute --port 3000` | Gunakan port tersuai |
-| `omniroute --no-open` | Jangan auto buka penyemak imbas |
-| `omniroute --help` | Tunjukkan bantuan |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Sambungkan pembekal PERCUMA:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Papan pemuka → Pembekal → Sambung **Kod Claude** atau **Antigraviti** → Log masuk OAuth → Selesai!
+Optional split-port mode:
-**3. Gunakan dalam alat CLI anda:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**Itu sahaja!** Mulakan pengekodan dengan model AI PERCUMA.
+### 2) Connect providers and create your API key
-**Alternatif — dijalankan dari sumber:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-OmniRoute tersedia sebagai imej Docker awam pada [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Larian pantas:**
+**Quick run:**
```bash
docker run -d \
@@ -777,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Dengan fail persekitaran:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -792,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Menggunakan Docker Compose:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -802,258 +880,552 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| Imej | Tag | Saiz | Penerangan |
-| ------------------------ | -------- | ------ | ----------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | Keluaran stabil terkini |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Versi semasa |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+### Mula Pantas
+
```bash
-npm run electron:dev # Development mode
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Sekilas Pandang Harga
+## 💰 Pricing at a Glance
-| Peringkat | Pembekal | Kos | Set Semula Kuota | Terbaik Untuk |
-| ---------------- | ---------------- | ---------------------------- | ------------------ | ----------------------- |
-| **💳 LANGGANAN** | Kod Claude (Pro) | $20/bln | 5j + mingguan | Sudah melanggan |
-| | Codex (Plus/Pro) | $20-200/bln | 5j + mingguan | Pengguna OpenAI |
-| | Gemini CLI | **PERCUMA** | 180K/bln + 1K/hari | Semua orang! |
-| | GitHub Copilot | $10-19/bln | Bulanan | Pengguna GitHub |
-| **🔑 KUNCI API** | NVIDIA NIM | **PERCUMA** (1000 kredit) | Satu kali | Ujian peringkat percuma |
-| | DeepSeek | Bayar setiap penggunaan | Tiada | Harga/kualiti terbaik |
-| | Groq | Peringkat percuma + berbayar | Kadar terhad | Inferens sangat pantas |
-| | xAI (Grok) | Bayar setiap penggunaan | Tiada | Model Grok |
-| | Mistral | Peringkat percuma + berbayar | Kadar terhad | AI Eropah |
-| | OpenRouter | Bayar setiap penggunaan | Tiada | 100+ model |
-| **💰 MURAH** | GLM-4.7 | $0.6/1J | Setiap hari 10AM | Sandaran belanjawan |
-| | MiniMax M2.1 | $0.2/1J | 5 jam bergolek | Pilihan termurah |
-| | Kimi K2 | $9/bln flat | 10 juta token/bln | Kos yang boleh diramal |
-| **🆓 PERCUMA** | iFlow | $0 | tanpa had | 8 model percuma |
-| | Qwen | $0 | tanpa had | 3 model percuma |
-| | Kiro | $0 | tanpa had | Claude percuma |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Petua Pro:** Mulakan dengan Gemini CLI (180K percuma/bulan) + iFlow (percuma tanpa had) kombo = $0 kos!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Ciri Utama
+---
-### 🧠 Penghalaan Teras & Kepintaran
+## 🆓 Free Models — What You Actually Get
-| Ciri | Apa yang Dilakukan |
-| ---------------------------------- | --------------------------------------------------------------------------------------------- |
-| 🎯 **Smart 4-Tier Fallback** | Laluan automatik: Langganan → Kunci API → Murah → Percuma |
-| 📊 **Penjejakan Kuota Masa Nyata** | Kiraan token langsung + tetapan semula kira detik setiap pembekal |
-| 🔄 **Terjemahan Format** | OpenAI ↔ Claude ↔ Gemini ↔ Kursor ↔ Kiro lancar + pembersihan tindak balas |
-| 👥 **Sokongan Berbilang Akaun** | Berbilang akaun bagi setiap pembekal dengan pemilihan pintar |
-| 🔄 **Muat Semula Token Auto** | Token OAuth dimuat semula secara automatik dengan cuba semula |
-| 🎨 **Kombo Tersuai** | 6 strategi: isikan dahulu, round-robin, p2c, rawak, paling kurang digunakan, dioptimumkan kos |
-| 🧩 **Model Tersuai** | Tambahkan sebarang ID model pada mana-mana pembekal |
-| 🌐 **Penghala Wildcard** | Halakan corak `provider/*` kepada mana-mana pembekal secara dinamik |
-| 🧠 **Anggaran Berfikir** | Mod laluan, auto, tersuai dan adaptif untuk model penaakulan |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **System Prompt Suntikan** | Gesaan sistem global digunakan merentas semua permintaan |
-| 📄 **API Respons** | Sokongan OpenAI Responses API (`/v1/responses`) penuh untuk Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 API Berbilang Modal
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Ciri | Apa yang Dilakukan |
-| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Penjanaan Imej** | `/v1/images/generations` — 4 pembekal, 9+ model |
-| 📐 **Pembenaman** | `/v1/embeddings` — 6 pembekal, 9+ model |
-| 🎤 **Transkripsi Audio** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Teks-ke-Ucapan** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Kesederhanaan** | `/v1/moderations` — Pemeriksaan keselamatan kandungan |
-| 🔀 **Penyusunan semula** | `/v1/rerank` — Penarafan semula perkaitan dokumen |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Ketahanan & Keselamatan
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| Ciri | Apa yang Dilakukan |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
+
+### 🟡 QWEN MODELS (Device Code Auth)
+
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
+
+### 🟣 GEMINI CLI (Google OAuth)
+
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
| ----------------------------------- | -------------------------------------------------------------------------------------- |
-| 🔌 **Pemutus Litar** | Auto buka/tutup setiap pembekal dengan ambang boleh dikonfigurasikan |
-| 🛡️ **Kawanan Anti Guruh** | Had kadar Mutex + semaphore untuk pembekal kunci API |
-| 🧠 **Cache Semantik** | Cache dua peringkat (tandatangan + semantik) mengurangkan kos & kependaman |
-| ⚡ **Minta Idepotency** | Tetingkap pendua 5s untuk permintaan pendua |
-| 🔒 **TLS Fingerprint Spoofing** | Pintas pengesanan bot berasaskan TLS melalui wreq-js |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
-| 🌐 **Penapisan IP** | Senarai kebenaran/senarai sekat untuk kawalan akses API |
-| 📊 **Had Kadar Boleh Diedit** | RPM boleh dikonfigurasikan, jurang min dan serentak maksimum pada tahap sistem |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **Perlindungan Titik Akhir API** | Gating pengesahan + penyekatan penyedia untuk titik akhir `/models` |
-| 🔒 **Keterlihatan Proksi** | Lencana berkod warna: 🟢 global, 🟡 pembekal, 🔵 setiap sambungan dengan paparan IP |
-| 🌐 **Konfigurasi Proksi 3 Tahap** | Konfigurasikan proksi pada peringkat global, setiap pembekal atau setiap sambungan |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
-### 📊 Kebolehlihatan & Analitis
+### 📊 Observability & Analytics
-| Ciri | Apa yang Dilakukan |
-| --------------------------------- | ------------------------------------------------------------------------------ |
-| 📝 **Minta Pembalakan** | Mod nyahpepijat dengan log permintaan/tindak balas penuh |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **Log Proksi SQLite** | Log proksi berterusan bertahan dimulakan semula pelayan |
-| 📊 **Papan Pemuka Analitik** | Dikuasakan semula: kad statistik, carta penggunaan model, jadual pembekal |
-| 📈 **Penjejakan Kemajuan** | Ikut serta acara kemajuan SSE untuk penstriman |
-| 🧪 **Penilaian LLM** | Ujian set emas dengan 4 strategi perlawanan |
-| 🔍 **Minta Telemetri** | p50/p95/p99 pengagregatan kependaman + pengesanan X-Request-Id |
-| 📋 **Papan Pemuka Log** | Halaman 4 tab bersatu: Log Permintaan, Log Proksi, Log Audit, Konsol |
-| 🖥️ **Pemapar Log Konsol** | Pemapar gaya terminal masa nyata dengan penapis tahap, carian, tatal automatik |
-| 📑 **Pengelogan Berasaskan Fail** | Pemintas konsol menangkap semua output ke fail log JSON dengan putaran |
-| 🏥 **Papan Pemuka Kesihatan** | Masa beroperasi sistem, keadaan pemutus litar, sekatan keluar, statistik cache |
-| 💰 **Penjejakan Kos** | Pengurusan belanjawan + konfigurasi harga setiap model |
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
-### ☁️ Penyerahan & Penyegerakan
+### ☁️ Deployment & Platform
-| Ciri | Apa yang Dilakukan |
-| ----------------------------- | ----------------------------------------------------------------------- |
-| 💾 **Penyegerakan Awan** | Segerakkan konfigurasi merentas peranti melalui Cloudflare Workers |
-| 🌐 **Kerahkan Di Mana-mana** | Localhost, VPS, Docker, Pekerja Cloudflare |
-| 🔑 **Pengurusan Kunci API** | Jana, putar dan skop kunci API bagi setiap pembekal |
-| 🧙 **Onboarding Wizard** | Persediaan berpandu 4 langkah untuk pengguna kali pertama |
-| 🔧 **Papan Pemuka Alat CLI** | Konfigurasi satu klik Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **Sandaran DB** | Sandaran automatik, pulihkan, eksport & import untuk semua tetapan |
-| 🌐 **Pengantarabangsaan** | i18n penuh dengan next-intl — sokongan Inggeris + Portugis (Brazil) |
-| 🌍 **Pemilih Bahasa** | Ikon glob dalam pengepala untuk penukaran bahasa masa nyata (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Direktori Data Tersuai** | `DATA_DIR` env var untuk mengatasi laluan storan lalai `~/.omniroute` |
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Butiran Ciri
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Kemunduran 4 Peringkat Pintar
+Start MCP transport in stdio mode:
-Cipta gabungan dengan sandaran automatik:
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 Penjejakan Kuota Masa Nyata
+Recommended validation flow:
-- Penggunaan token setiap pembekal
-- Tetapkan semula kira detik (5 jam, harian, mingguan)
-- Anggaran kos untuk peringkat berbayar
-- Laporan perbelanjaan bulanan
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Terjemahan Format
+Useful APIs for automation:
-Terjemahan lancar antara format:
-
-- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **Respons OpenAI**
-- Alat CLI anda menghantar format OpenAI → OmniRoute menterjemah → Pembekal menerima format asli
-- Berfungsi dengan mana-mana alat yang menyokong titik akhir OpenAI tersuai
-- **Pembersihan tindak balas** — Menghapuskan medan bukan standard untuk keserasian OpenAI SDK yang ketat
-- **Penormalan peranan** — `developer` → `system` untuk bukan OpenAI; `system` → `user` untuk model GLM/ERNIE
-- **Pengekstrakan teg Think** — `` blok → `reasoning_content` untuk model pemikiran
-- **Output berstruktur** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
-
-### 👥 Sokongan Berbilang Akaun
-
-- Tambah berbilang akaun bagi setiap pembekal
-- Auto round-robin atau penghalaan berasaskan keutamaan
-- Berundur ke akaun seterusnya apabila seseorang mencapai kuota
-
-### 🔄 Muat Semula Token Auto
-
-- Token OAuth dimuat semula secara automatik sebelum tamat tempoh
-- Tiada pengesahan semula manual diperlukan
-- Pengalaman lancar merentas semua pembekal
-
-### 🎨 Kombo Tersuai
-
-- Buat kombinasi model tanpa had
-- 6 strategi: isikan dahulu, round-robin, kuasa dua pilihan, rawak, paling kurang digunakan, dioptimumkan kos
-- Kongsi gabungan merentas peranti dengan Cloud Sync
-
-### 🏥 Papan Pemuka Kesihatan
-
-- Status sistem (masa hidup, versi, penggunaan memori)
-- Keadaan pemutus litar bagi setiap pembekal (Tertutup/Terbuka/Separuh Terbuka)
-- Status had kadar dan sekatan aktif
-- Statistik cache tandatangan
-- Telemetri kependaman (p50/p95/p99) + cache segera
-- Tetapkan semula status kesihatan dengan satu klik
-
-### 🔧 Taman Permainan Penterjemah
-
-OmniRoute termasuk Taman Permainan Penterjemah terbina dalam yang berkuasa dengan **4 mod** untuk penyahpepijatan, ujian dan pemantauan terjemahan API:
-
-| Mod | Penerangan |
-| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻 Taman permainan** | Terjemahan format langsung — tampal mana-mana badan permintaan API dan lihat serta-merta cara OmniRoute menterjemahkannya antara format pembekal (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Termasuk templat contoh dan pengesanan automatik format. |
-| **💬 Penguji Sembang** | Hantar permintaan sembang sebenar melalui OmniRoute dan lihat perjalanan pergi balik penuh: input anda, permintaan yang diterjemahkan, respons pembekal dan balasan yang diterjemahkan kembali. Tidak ternilai untuk mengesahkan penghalaan kombo. |
-| **🧪 Bangku Ujian** | Mod ujian kelompok — tentukan berbilang kes ujian dengan input dan output yang dijangkakan berbeza, jalankan semuanya sekali gus dan bandingkan hasil merentas pembekal dan model. |
-| **📱 Pemantau Langsung** | Pemantauan permintaan masa nyata — tonton permintaan masuk semasa ia mengalir melalui OmniRoute, lihat terjemahan format berlaku secara langsung dan kenal pasti isu serta-merta. |
-
-**Akses:** Papan Pemuka → Penterjemah (bar sisi)
-
-### 💾 Penyegerakan Awan
-
-- Penyegerakan penyedia, gabungan dan tetapan merentas peranti
-- Penyegerakan latar belakang automatik
-- Storan yang disulitkan selamat
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Penilaian (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute termasuk rangka kerja penilaian terbina dalam untuk menguji kualiti tindak balas LLM terhadap set emas. Aksesnya melalui **Analytics → Evals** dalam papan pemuka.
+Discover the agent:
-### Set Emas Terbina dalam
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-"Set Emas OmniRoute" pra-muat mengandungi 10 kes ujian yang meliputi:
+Send a task:
-- Salam, matematik, geografi, penjanaan kod
-- Pematuhan format JSON, terjemahan, penurunan harga
-- Penolakan keselamatan (kandungan berbahaya), pengiraan, logik boolean
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Strategi Penilaian
+Manage lifecycle:
-| Strategi | Penerangan | Contoh |
-| ---------- | --------------------------------------------------------------------- | -------------------------------- |
-| `exact` | Output mesti sepadan dengan tepat | `"4"` |
-| `contains` | Output mesti mengandungi subrentetan (tidak peka huruf besar-besaran) | `"Paris"` |
-| `regex` | Output mesti sepadan dengan corak regex | `"1.*2.*3"` |
-| `custom` | Fungsi JS tersuai mengembalikan benar/salah | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Panduan Persediaan
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Pembekal Langganan
+🧪 End-to-end protocol validation
-### Kod Claude (Pro/Max)
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
+
+### Claude Code (Pro/Max)
```bash
Dashboard → Providers → Connect Claude Code
@@ -1066,7 +1438,7 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**Petua Pro:** Gunakan Opus untuk tugas yang rumit, Sonnet untuk kelajuan. OmniRoute menjejaki kuota setiap model!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
@@ -1080,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (PERCUMA 180K/bulan!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1092,9 +1481,9 @@ Models:
gc/gemini-2.5-pro
```
-**Nilai Terbaik:** Peringkat percuma yang besar! Gunakan ini sebelum peringkat berbayar.
+**Best Value:** Huge free tier! Use this before paid tiers.
-### Copilot GitHub
+### GitHub Copilot
```bash
Dashboard → Providers → Connect GitHub
@@ -1110,88 +1499,88 @@ Models:
-🔑 Pembekal Kunci API
+🔑 API Key Providers
-### NVIDIA NIM (PERCUMA 1000 kredit!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Daftar: [build.nvidia.com](https://build.nvidia.com)
-2. Dapatkan kunci API percuma (1000 kredit inferens disertakan)
-3. Papan Pemuka → Tambah Pembekal → NVIDIA NIM:
- - Kunci API: `nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**Model:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` dan 50+ lagi
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Petua Pro:** API serasi OpenAI — berfungsi dengan lancar dengan terjemahan format OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Daftar: [platform.deepseek.com](https://platform.deepseek.com)
-2. Dapatkan kunci API
-3. Papan Pemuka → Tambah Pembekal → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Model:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (Tier Percuma Tersedia!)
+### Groq (Free Tier Available!)
-1. Daftar: [console.groq.com](https://console.groq.com)
-2. Dapatkan kunci API (termasuk peringkat percuma)
-3. Papan Pemuka → Tambah Pembekal → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Model:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Petua Pro:** Inferens sangat pantas — terbaik untuk pengekodan masa nyata!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (100+ Model)
+### OpenRouter (100+ Models)
-1. Daftar: [openrouter.ai](https://openrouter.ai)
-2. Dapatkan kunci API
-3. Papan Pemuka → Tambah Pembekal → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Model:** Akses 100+ model daripada semua pembekal utama melalui kunci API tunggal.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Penyedia Murah (Sandaran)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (Tetapan semula harian, $0.6/1J)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Daftar: [Zhipu AI](https://open.bigmodel.cn/)
-2. Dapatkan kunci API daripada Pelan Pengekodan
-3. Papan Pemuka → Tambah Kunci API:
- - Pembekal: `glm`
- - Kunci API: `your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**Gunakan:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Petua Pro:** Pelan Pengekodan menawarkan kuota 3× pada kos 1/7! Tetapkan semula setiap hari 10:00 AM.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (tetapan semula 5j, $0.20/1J)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Daftar: [MiniMax](https://www.minimax.io/)
-2. Dapatkan kunci API
-3. Papan Pemuka → Tambah Kunci API
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Gunakan:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Petua Pro:** Pilihan termurah untuk konteks panjang (token 1M)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 ($9/bulan rata)
+### Kimi K2 ($9/month flat)
-1. Langgan: [Moonshot AI](https://platform.moonshot.ai/)
-2. Dapatkan kunci API
-3. Papan Pemuka → Tambah Kunci API
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Gunakan:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Petua Pro:** Tetap $9/bulan untuk 10J token = $0.90/1J kos efektif!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 Pembekal PERCUMA (Sandaran Kecemasan)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 model PERCUMA)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1206,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 model PERCUMA)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1218,7 +1607,7 @@ Models:
qw/qwen3-coder-flash
```
-### Kiro (Claude PERCUMA)
+### Kiro (Claude FREE)
```bash
Dashboard → Connect Kiro
@@ -1233,9 +1622,9 @@ Models:
-🎨 Cipta Kombo
+🎨 Create Combos
-### Contoh 1: Maksimumkan Langganan → Sandaran Murah
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1249,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### Contoh 2: Percuma-Sahaja (Kos Sifar)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1264,9 +1653,9 @@ Cost: $0 forever!
-🔧 CLI Integrasi
+🔧 CLI Integration
-### IDE Kursor
+### Cursor IDE
```
Settings → Models → Advanced:
@@ -1275,9 +1664,9 @@ Settings → Models → Advanced:
Model: cc/claude-opus-4-6
```
-### Kod Claude
+### Claude Code
-Gunakan halaman **Alat CLI** dalam papan pemuka untuk konfigurasi satu klik atau edit `~/.claude/settings.json` secara manual.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1290,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Pilihan 1 — Papan Pemuka (disyorkan):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Pilihan 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1312,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **Nota:** OpenClaw hanya berfungsi dengan OmniRoute tempatan. Gunakan `127.0.0.1` dan bukannya `localhost` untuk mengelakkan isu resolusi IPv6.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### Cline / Teruskan / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1324,108 +1713,243 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Menyelesaikan masalah
+## Penyelesaian Masalah
-Klik untuk mengembangkan panduan penyelesaian masalah
+Click to expand troubleshooting guide
-**"Model bahasa tidak memberikan mesej"**
+**"Language model did not provide messages"**
-- Kuota pembekal habis → Semak penjejak kuota papan pemuka
-- Penyelesaian: Gunakan sandaran kombo atau tukar kepada peringkat yang lebih murah
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**Penghadan kadar**
+**Rate limiting**
-- Kuota langganan habis → Sandar kepada GLM/MiniMax
-- Tambah kombo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**Token OAuth tamat tempoh**
+**OAuth token expired**
-- Dikemas semula secara automatik oleh OmniRoute
-- Jika isu berterusan: Papan Pemuka → Pembekal → Sambung semula
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Kos tinggi**
+**High costs**
-- Semak statistik penggunaan dalam Papan Pemuka → Kos
-- Tukar model utama kepada GLM/MiniMax
-- Gunakan peringkat percuma (Gemini CLI, iFlow) untuk tugasan yang tidak kritikal
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Papan pemuka dibuka pada port yang salah**
+**Dashboard/API ports are wrong**
-- Tetapkan `PORT=20128` dan `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Ralat penyegerakan awan**
+**Cloud sync errors**
-- Sahkan `BASE_URL` mata pada contoh larian anda
-- Sahkan `CLOUD_URL` mata ke titik akhir awan anda yang dijangkakan
-- Pastikan nilai `NEXT_PUBLIC_*` sejajar dengan nilai sebelah pelayan
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Log masuk pertama tidak berfungsi**
+**First login not working**
-- Semak `INITIAL_PASSWORD` dalam `.env`
-- Jika tidak ditetapkan, kata laluan sandaran ialah `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Tiada log permintaan**
+**No request logs**
-- Tetapkan `ENABLE_REQUEST_LOGS=true` dalam `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Ujian sambungan menunjukkan "Tidak sah" untuk pembekal yang serasi dengan OpenAI**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Banyak pembekal tidak mendedahkan titik akhir `/models`
-- OmniRoute v1.0.6+ termasuk pengesahan sandaran melalui pelengkapan sembang
-- Pastikan URL asas mengandungi akhiran `/v1`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 OAuth
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ PENTING untuk biasa menggunakan OmniRoute em VPS/Docker/servidor remoto**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-### Adakah OAuth melakukan Antigraviti / Gemini CLI tidak menggunakan perkhidmatan anda?
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-Ia membuktikan **Antigraviti** dan **Gemini CLI** menggunakan **Google OAuth 2.0** untuk autenticação. O Google exige que a `redirect_uri` gunakan tiada fluks OAuth seja **exatamente** uma das URIs sebelum kadastrada tiada Google Cloud Console untuk aplicativo.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-Sebagai credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas untuk `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (cth: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### Penyelesaian: Konfigurasikan suas próprias credenciais OAuth
+#### Solution: Configure your own OAuth credentials
+
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
#### Passo a passo
-**1. Akses ke Konsol Awan Google**
+**1. Acesse o Google Cloud Console**
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
-**2. Crie um novo ID Pelanggan OAuth 2.0**
+**2. Crie um novo OAuth 2.0 Client ID**
-- Klik em **"+ Cipta Bukti Kelayakan"** → **"ID klien OAuth"**
-- Tipo de aplicativo: **"Aplikasi web"**
-- Nama: escolha qualquer nome (cth: `OmniRoute Remote`)
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. Tambah sebagai URI Ubah Hala Dibenarkan**
+**3. Adicione as Authorized Redirect URIs**
-Tiada **"URI ubah hala yang dibenarkan"**, tambahan:
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
```
-> Gantikan `seu-servidor.com` pelo domínio ou IP do seu servidor (termasuk porta se necessário, cth: `http://45.33.32.156:20128/callback`).
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. Simpan dan salin sebagai kredensia**
+**4. Salve e copie as credenciais**
-Após criar, o Google mostrará o **ID Pelanggan** e o **Rahsia Pelanggan**.
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. Konfigurasikan sebagai variáveis de ambiente**
+**5. Configure as variáveis de ambiente**
No seu `.env` (ou nas variáveis de ambiente do Docker):
@@ -1452,151 +1976,145 @@ docker restart omniroute
**7. Tente conectar novamente**
-Papan pemuka → Pembekal → Antigraviti (ou Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
-Agora o Google redirectionará corretamente untuk `https://seu-servidor.com/callback` dan a autenticação funcionará.
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### Penyelesaian sementara (sem configurar credenciais próprias)
+#### Workaround temporário (sem configurar credenciais próprias)
-Jika anda ingin mendapatkan credenciais próprias agora, ada kemungkinan penggunaan atau fluks **manual de URL**:
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. OmniRoute abrirá a URL de authorização do Google
-2. Após você authorizar, o Google tentará redirectionar para `localhost` (que falha no servidor remoto)
-3. **Salin URL lengkap** pada penyemak imbas barra de endereço do seu (mesmo que a página não carregue)
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
-5. Klik em **"Sambung"**
+5. Clique em **"Connect"**
-> Penyelesaian ini berfungsi sebagai kodigo de autorização na URL adalah bebas untuk mengubah hala mengikut arahan atau tidak.
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **Waktu Jalan**: Node.js 18–22 LTS (⚠️ Node.js 24+ **tidak disokong** — `better-sqlite3` binari asli tidak serasi)
-- **Bahasa**: TypeScript 5.9 — **100% TypeScript** merentas `src/` dan `open-sse/` (v1.0.6)
-- **Kerangka**: Next.js 16 + React 19 + Tailwind CSS 4
-- **Pangkalan Data**: LowDB (JSON) + SQLite (keadaan domain + log proksi)
-- **Penstriman**: Acara Dihantar Pelayan (SSE)
-- **Auth**: OAuth 2.0 (PKCE) + JWT + Kunci API
-- **Ujian**: Pelari ujian Node.js (368+ ujian unit)
-- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub pada keluaran)
-- **Laman web**: [omniroute.online](https://omniroute.online)
-- **Pakej**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **Ketahanan**: Pemutus litar, mundur eksponen, kumpulan anti gemuruh, penipuan TLS
-
----
-
-## 📖 Dokumentasi
-
-| Dokumen | Penerangan |
-| -------------------------------------------- | --------------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | Pembekal, kombo, penyepaduan CLI, penggunaan |
-| [API Reference](docs/API_REFERENCE.md) | Semua titik akhir dengan contoh |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | Masalah dan penyelesaian biasa |
-| [Architecture](docs/ARCHITECTURE.md) | Seni bina sistem dan dalaman |
-| [Contributing](CONTRIBUTING.md) | Persediaan pembangunan dan garis panduan |
-| [OpenAPI Spec](docs/openapi.yaml) | Spesifikasi OpenAPI 3.0 |
-| [Security Policy](SECURITY.md) | Pelaporan kerentanan dan amalan keselamatan |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Panduan lengkap: Persediaan VM + nginx + Cloudflare |
-| [Features Gallery](docs/FEATURES.md) | Lawatan papan pemuka visual dengan tangkapan skrin |
-
-### 📸 Pratonton Papan Pemuka
+## 🛠️ Tech Stack
-Klik untuk melihat tangkapan skrin papan pemuka
+Click to expand tech stack details
-| Halaman | Tangkapan skrin |
-| ------------------ | ------------------------------------------------- |
-| **Pembekal** |  |
-| **Kombo** |  |
-| **Analisis** |  |
-| **Kesihatan** |  |
-| **Penterjemah** |  |
-| **Tetapan** |  |
-| **Alat CLI** |  |
-| **Log Penggunaan** |  |
-| **Titik Akhir** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## Dokumentasi
-OmniRoute mempunyai **210+ ciri yang dirancang** merentas berbilang fasa pembangunan. Berikut adalah bidang utama:
-
-| Kategori | Ciri Terancang | Sorotan |
-| ------------------------------ | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🧠 **Penghalaan & Perisikan** | 25+ | Penghalaan kependaman terendah, penghalaan berasaskan teg, kuota prapenerbangan, pemilihan akaun P2C |
-| 🔒 **Keselamatan & Pematuhan** | 20+ | Pengerasan SSRF, penyelubungan kelayakan, had kadar setiap titik akhir, skop kunci pengurusan |
-| 📊 **Kebolehlihatan** | 15+ | Penyepaduan OpenTelemetry, pemantauan kuota masa nyata, penjejakan kos setiap model |
-| 🔄 **Integrasi Pembekal** | 20+ | Pendaftaran model dinamik, penyejukan pembekal, Codex berbilang akaun, penghuraian kuota Copilot |
-| ⚡ **Prestasi** | 15+ | Lapisan cache dwi, cache gesaan, cache respons, penstriman keepalive, API kelompok |
-| 🌐 **Ekosistem** | 10+ | API WebSocket, konfigurasi hot-reload, kedai konfigurasi teragih, mod komersial |
-
-### 🔜 Akan Datang
-
-- 🔗 **OpenCode Integration** — Sokongan pembekal asli untuk IDE pengekodan AI OpenCode
-- 🔗 **Pengintegrasian TRAE** — Sokongan penuh untuk rangka kerja pembangunan TRAE AI
-- 📦 **API Kelompok** — Pemprosesan kelompok tak segerak untuk permintaan pukal
-- 🎯 **Penghalaan Berasaskan Teg** — Permintaan laluan berdasarkan teg tersuai dan metadata
-- 💰 **Strategi Kos Terendah** — Pilih pembekal yang tersedia paling murah secara automatik
-
-> 📝 Spesifikasi ciri penuh tersedia dalam [link](docs/new-features/) (217 spesifikasi terperinci)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 Penyumbang
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Cara Menyumbang
+### How to Contribute
-1. Garpu repositori
-2. Buat cawangan ciri anda (`git checkout -b feature/amazing-feature`)
-3. Serahkan perubahan anda (`git commit -m 'Add amazing feature'`)
-4. Tolak ke cawangan (`git push origin feature/amazing-feature`)
-5. Buka Permintaan Tarik
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Lihat [CONTRIBUTING.md](CONTRIBUTING.md) untuk garis panduan terperinci.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Mengeluarkan Versi Baharu
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Sejarah Bintang
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Ucapan terima kasih
+## 🙏 Acknowledgments
-Terima kasih khas kepada **[9router](https://github.com/decolua/9router)** oleh **[decolua](https://github.com/decolua)** — projek asal yang mengilhamkan garpu ini. OmniRoute membina asas yang luar biasa itu dengan ciri tambahan, API berbilang modal dan penulisan semula TypeScript penuh.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Terima kasih khas kepada **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — pelaksanaan Go asal yang mengilhamkan port JavaScript ini.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Lesen
+## Lesen
-Lesen MIT - lihat [LICENSE](LICENSE) untuk butiran.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Dibina dengan ❤️ untuk pembangun yang kod 24/7
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/ms/docs/FEATURES.md b/docs/i18n/ms/docs/FEATURES.md
new file mode 100644
index 0000000000..343035644b
--- /dev/null
+++ b/docs/i18n/ms/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Bahasa Melayu)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/nl/README.md b/docs/i18n/nl/README.md
index 81456f9c35..37a098d557 100644
--- a/docs/i18n/nl/README.md
+++ b/docs/i18n/nl/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — De gratis AI-gateway
+# 🚀 OmniRoute — The Free AI Gateway (Nederlands)
-### 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**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Gratis AI-provider voor uw favoriete codeeragenten
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Verbind elke AI-aangedreven IDE- of CLI-tool via OmniRoute: gratis API-gateway voor onbeperkte codering._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _Verbind elke AI-aangedreven IDE- of CLI-tool via OmniRoute: gratis API-gateway
|
-📡 Alle agenten maken verbinding via http://localhost:20128/v1 of http://cloud.omniroute.online/v1 — één configuratie, onbeperkte modellen en quota
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Waarom OmniRoute?
-
-**Stop met het verspillen van geld en het bereiken van grenzen:**
-
--
Het abonnementsquotum verloopt elke maand ongebruikt
--
Snelheidslimieten voorkomen dat u halverwege codeert
--
Dure API's ($20-50/maand per provider)
--
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
-
----
-
-## 📧 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.
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
- **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)
+- **Issues**: [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)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Hoe het werkt
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,451 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 Wat OmniRoute oplost — 30 echte pijnpunten en gebruiksscenario's
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Elke ontwikkelaar die AI-tools gebruikt, wordt dagelijks met deze problemen geconfronteerd.** OmniRoute is gebouwd om ze allemaal op te lossen: van kostenoverschrijdingen tot regionale blokkades, van kapotte OAuth-stromen tot protocolbewerkingen en bedrijfsobservatie.
+> **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 protocol operations and enterprise observability.
-💸 1. "Ik betaal voor een duur abonnement, maar word nog steeds onderbroken door limieten"
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Ontwikkelaars betalen $20-200/maand voor Claude Pro, Codex Pro of GitHub Copilot. Zelfs als je betaalt, heeft het quotum een plafond: 5 uur gebruik, wekelijkse limieten of tarieflimieten per minuut. Halverwege de codeersessie reageert de provider niet meer en verliest de ontwikkelaar flow en productiviteit.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Smart 4-Tier Fallback** — Als het abonnementsquotum opraakt, wordt automatisch doorgestuurd naar API Key → Goedkoop → Gratis zonder handmatige tussenkomst
-- **Realtime bijhouden van quota** — Toont het tokenverbruik in realtime met aftellen van de reset (5 uur, dagelijks, wekelijks)
-- **Ondersteuning voor meerdere accounts** — Meerdere accounts per provider met automatische round-robin — als de ene op is, wordt er overgeschakeld naar de volgende
-- **Aangepaste combo's** — Aanpasbare fallback-ketens met 6 balanceringsstrategieën (fill-first, round-robin, P2C, willekeurig, minst gebruikt, kostengeoptimaliseerd)
-- **Codex Business Quota** — Quotabewaking van zakelijke/teamwerkruimte rechtstreeks in het dashboard
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. "Ik moet meerdere providers gebruiken, maar elk heeft een andere API"
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI gebruikt het ene formaat, Claude (Anthropic) gebruikt een ander, Gemini nog een ander. Als een ontwikkelaar modellen van verschillende providers wil testen of terug wil vallen tussen deze providers, moet hij SDK's opnieuw configureren, eindpunten wijzigen en omgaan met incompatibele formaten. Aangepaste providers (FriendLI, NIM) hebben niet-standaard modeleindpunten.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Unified Endpoint** — Eén enkele `http://localhost:20128/v1` dient als proxy voor alle 67+ providers
-- **Formatvertaling** — Automatisch en transparant: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-- **Response Sanitization** — Verwijdert niet-standaardvelden (`x_groq`, `usage_breakdown`, `service_tier`) die OpenAI SDK v1.83+ breken
-- **Rolnormalisatie** — Converteert `developer` → `system` voor niet-OpenAI-providers; `system` → `user` voor GLM/ERNIE
-- **Think Tag Extraction** — Extraheert ``-blokken uit modellen zoals DeepSeek R1 naar gestandaardiseerde `reasoning_content`
-- **Gestructureerde uitvoer voor Gemini** — `json_schema` → `responseMimeType`/`responseSchema` automatische conversie
-- **`stream` is standaard ingesteld op `false`** — Sluit aan bij de OpenAI-specificaties en vermijdt onverwachte SSE in Python/Rust/Go SDK's
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. "Mijn AI-provider blokkeert mijn regio/land"
+🌐 3. "My AI provider blocks my region/country"
-Providers zoals OpenAI/Codex blokkeren de toegang vanuit bepaalde geografische regio's. Gebruikers krijgen fouten zoals `unsupported_country_region_territory` tijdens OAuth- en API-verbindingen. Dit is vooral frustrerend voor ontwikkelaars uit ontwikkelingslanden.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Proxyconfiguratie op 3 niveaus** — Configureerbare proxy op 3 niveaus: globaal (al het verkeer), per provider (slechts één provider) en per verbinding/sleutel
-- **Kleurgecodeerde proxybadges** — Visuele indicatoren: 🟢 globale proxy, 🟡 providerproxy, 🔵verbindingsproxy, waarbij altijd het IP-adres wordt weergegeven
-- **OAuth-tokenuitwisseling via proxy**: de OAuth-stroom verloopt ook via de proxy, waardoor `unsupported_country_region_territory` wordt opgelost
-- **Verbindingstests via proxy** — Verbindingstests gebruiken de geconfigureerde proxy (geen directe bypass meer)
-- **SOCKS5-ondersteuning** — Volledige SOCKS5-proxyondersteuning voor uitgaande routering
-- **TLS Fingerprint Spoofing** — Browserachtige TLS-vingerafdruk via `wreq-js` om botdetectie te omzeilen
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. "Ik wil AI gebruiken voor codering, maar ik heb geen geld"
+🆓 4. "I want to use AI for coding but I have no money"
-Niet iedereen kan $ 20-200 per maand betalen voor AI-abonnementen. Studenten, ontwikkelaars uit opkomende landen, hobbyisten en freelancers hebben kosteloos toegang nodig tot kwaliteitsmodellen.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Free Tier Providers ingebouwd** — Native ondersteuning voor 100% gratis providers: iFlow (8 onbeperkte modellen), Qwen (3 onbeperkte modellen), Kiro (Claude gratis), Gemini CLI (180K/maand gratis)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Alleen gratis combo's** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $ 0/maand zonder downtime
-- **NVIDIA NIM Free Credits** — 1000 gratis credits geïntegreerd
-- **Kostengeoptimaliseerde strategie** — Routingstrategie die automatisch de goedkoopste beschikbare provider kiest
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. "Ik moet mijn AI-gateway beschermen tegen ongeoorloofde toegang"
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Bij het blootstellen van een AI-gateway aan het netwerk (LAN, VPS, Docker) kan iedereen met het adres de tokens/quota van de ontwikkelaar gebruiken. Zonder bescherming zijn API's kwetsbaar voor misbruik, snelle injectie en misbruik.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **API Key Management** — Generatie, rotatie en bereik per provider met een speciale `/dashboard/api-manager`-pagina
-- **Machtigingen op modelniveau** — Beperk API-sleutels tot specifieke modellen (`openai/*`, jokertekenpatronen), met de schakelaar Alles toestaan/Beperken
-- **API Endpoint Protection** — Vereist een sleutel voor `/v1/models` en blokkeer specifieke providers uit de lijst
-- **Auth Guard + CSRF-bescherming** — Alle dashboardroutes beschermd met `withAuth` middleware + CSRF-tokens
-- **Rate Limiter** — Per-IP-snelheidslimiet met configureerbare vensters
-- **IP-filtering** — Toelatingslijst/blokkeerlijst voor toegangscontrole
-- **Prompt Injection Guard** — Sanering tegen kwaadaardige promptpatronen
-- **AES-256-GCM-codering** — Inloggegevens gecodeerd in rust
+- **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. "Mijn provider is uitgevallen en ik ben mijn codeerstroom kwijt"
+🛑 6. "My provider went down and I lost my coding flow"
-AI-aanbieders kunnen instabiel worden, 5xx-fouten retourneren of tijdelijke tarieflimieten bereiken. Als een ontwikkelaar afhankelijk is van één enkele provider, worden deze onderbroken. Zonder stroomonderbrekers kunnen herhaalde pogingen de toepassing laten crashen.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Stroomonderbreker per provider** — Automatisch openen/sluiten met configureerbare drempels en cooldown (gesloten/open/halfopen)
-- **Exponentiële uitstel** — Progressieve vertragingen bij nieuwe pogingen
-- **Anti-Thundering Herd** — Mutex + semafoorbescherming tegen gelijktijdige nieuwe stormen
-- **Combo Fallback Chains** — Als de primaire provider faalt, valt deze automatisch zonder tussenkomst door de keten
-- **Combo-stroomonderbreker** — Schakelt falende providers binnen een combo-keten automatisch uit
-- **Gezondheidsdashboard** — Uptime-monitoring, status van stroomonderbrekers, uitsluitingen, cachestatistieken, p50/p95/p99-latentie
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. "Het configureren van elke AI-tool is vervelend en repetitief"
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Ontwikkelaars gebruiken Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Elke tool heeft een andere configuratie nodig (API-eindpunt, sleutel, model). Opnieuw configureren bij het wisselen van provider of model is tijdverspilling.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **CLI Tools Dashboard** — Speciale pagina met installatie met één klik voor Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-- **GitHub Copilot Config Generator** — Genereert `chatLanguageModels.json` voor VS-code met bulkmodelselectie
-- **Onboarding Wizard** — Begeleide installatie in 4 stappen voor nieuwe gebruikers
-- **Eén eindpunt, alle modellen** — Configureer `http://localhost:20128/v1` één keer, krijg toegang tot meer dan 36 providers
+- **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 67+ providers
-🔑 8. "Het beheren van OAuth-tokens van meerdere providers is een hel"
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot: ze gebruiken allemaal OAuth 2.0 met aflopende tokens. Ontwikkelaars moeten zich voortdurend opnieuw authenticeren en omgaan met `client_secret is missing`, `redirect_uri_mismatch` en storingen op externe servers. OAuth op LAN/VPS is bijzonder problematisch.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Automatische tokenvernieuwing**: OAuth-tokens worden op de achtergrond vernieuwd voordat ze verlopen
-- **OAuth 2.0 (PKCE) ingebouwd** — Automatische stroom voor Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **Multi-Account OAuth** — Meerdere accounts per provider via JWT/ID-tokenextractie
-- **OAuth LAN/Remote Fix** — Privé-IP-detectie voor `redirect_uri` + handmatige URL-modus voor externe servers
-- **OAuth achter Nginx** — gebruikt `window.location.origin` voor reverse proxy-compatibiliteit
-- **Remote OAuth-handleiding** — Stapsgewijze handleiding voor Google Cloud-inloggegevens op VPS/Docker
+- **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. "Ik weet niet hoeveel ik uitgeef of waar"
+📊 9. "I don't know how much I'm spending or where"
-Ontwikkelaars gebruiken meerdere betaalde providers, maar hebben geen uniform beeld van de uitgaven. Elke provider heeft zijn eigen factureringsdashboard, maar er is geen geconsolideerd overzicht. Onverwachte kosten kunnen zich opstapelen.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Cost Analytics Dashboard** — Kostenregistratie per token en budgetbeheer per provider
-- **Budgetlimieten per niveau** — Uitgavenplafond per niveau dat automatische terugval activeert
-- **Prijsconfiguratie per model** — Configureerbare prijzen per model
-- **Gebruiksstatistieken per API-sleutel** — Verzoekaantal en laatst gebruikte tijdstempel per sleutel
-- **Analytics Dashboard** — Statistiekkaarten, modelgebruiksgrafiek, providertabel met succespercentages en latentie
+- **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. "Ik kan geen fouten en problemen in AI-oproepen diagnosticeren"
+🐛 10. "I can't diagnose errors and problems in AI calls"
-Wanneer een oproep mislukt, weet de ontwikkelaar niet of het een snelheidslimiet, een verlopen token, een verkeerd formaat of een providerfout is. Gefragmenteerde logboeken over verschillende terminals. Zonder waarneembaarheid is debuggen een kwestie van vallen en opstaan.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Unified Logs Dashboard** — 4 tabbladen: aanvraaglogboeken, proxylogboeken, auditlogboeken, console
-- **Consolelogviewer** — Realtime viewer in terminalstijl met kleurgecodeerde niveaus, automatisch scrollen, zoeken, filteren
-- **SQLite Proxy Logs** — Persistente logs die het opnieuw opstarten van de server overleven
-- **Translator Playground** — 4 foutopsporingsmodi: Playground (formaatvertaling), Chat Tester (retour), Testbank (batch), Live Monitor (realtime)
-- **Request Telemetry** — p50/p95/p99 latentie + X-Request-Id-tracering
-- **Op bestanden gebaseerde logboekregistratie met rotatie** — Console-interceptor legt alles vast in JSON-logboek met op grootte gebaseerde rotatie
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. "Het implementeren en onderhouden van de gateway is complex"
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Het installeren, configureren en onderhouden van een AI-proxy in verschillende omgevingen (lokaal, VPS, Docker, cloud) is arbeidsintensief. Problemen zoals hardgecodeerde paden, `EACCES` in mappen, poortconflicten en platformonafhankelijke builds zorgen voor wrijving.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **npm globale installatie** — `npm install -g omniroute && omniroute` — klaar
+- **npm global install** — `npm install -g omniroute && omniroute` — done
- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Docker Compose Profiles** — `base` (geen CLI-tools) en `cli` (met Claude Code, Codex, OpenClaw)
-- **Electron Desktop App** — Native app voor Windows/macOS/Linux met systeemvak, automatisch starten, offlinemodus
-- **Split-Port-modus** — API en Dashboard op afzonderlijke poorten voor geavanceerde scenario's (reverse proxy, containernetwerken)
-- **Cloud Sync** — Configureer synchronisatie tussen apparaten via Cloudflare Workers
-- **DB-back-ups** — Automatische back-up, herstel, export en import van alle instellingen
+- **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. "De interface is alleen in het Engels en mijn team spreekt geen Engels"
+🌍 12. "The interface is English-only and my team doesn't speak English"
-Teams in niet-Engelssprekende landen, vooral in Latijns-Amerika, Azië en Europa, worstelen met interfaces die alleen in het Engels beschikbaar zijn. Taalbarrières verminderen de adoptie en vergroten de configuratiefouten.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Dashboard i18n — 30 talen** — Alle 500+ toetsen vertaald, waaronder Arabisch, Bulgaars, Deens, Duits, Spaans, Fins, Frans, Hebreeuws, Hindi, Hongaars, Indonesisch, Italiaans, Japans, Koreaans, Maleis, Nederlands, Noors, Pools, Portugees (PT/BR), Roemeens, Russisch, Slowaaks, Zweeds, Thais, Oekraïens, Vietnamees, Chinees, Filipijns, Engels
-- **RTL-ondersteuning** — Ondersteuning van rechts naar links voor Arabisch en Hebreeuws
-- **Meertalige README's** — 30 volledige documentatievertalingen
-- **Taalkiezer** — Wereldbolpictogram in de koptekst voor realtime schakelen
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. "Ik heb meer nodig dan chatten - ik heb insluitingen, afbeeldingen en audio nodig"
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-AI is niet alleen het voltooien van chats. Ontwikkelaars moeten afbeeldingen genereren, audio transcriberen, insluitingen voor RAG maken, documenten opnieuw rangschikken en inhoud modereren. Elke API heeft een ander eindpunt en formaat.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Inbedding** — `/v1/embeddings` met 6 providers en 9+ modellen
-- **Beeldgeneratie** — `/v1/images/generations` met 10 providers en 20+ modellen (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **Tekst-naar-video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) en SD WebUI
-- **Tekst-naar-muziek** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
-- **Audiotranscriptie** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Tekst-naar-spraak** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + bestaande providers
-- **Moderaties** — `/v1/moderations` — Veiligheidscontroles van inhoud
-- **Herschikking** — `/v1/rerank` — Herschikking van de relevantie van documenten
-- **Responses API** — Volledige `/v1/responses`-ondersteuning voor Codex
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. "Ik heb geen manier om de kwaliteit van verschillende modellen te testen en te vergelijken"
+🧪 14. "I have no way to test and compare quality across models"
-Ontwikkelaars willen weten welk model het beste is voor hun gebruiksscenario (code, vertaling, redenering), maar handmatig vergelijken gaat traag. Er bestaan geen geïntegreerde evaluatietools.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **LLM-evaluaties** — Golden set-tests met 10 vooraf geladen cases over begroetingen, wiskunde, aardrijkskunde, codegeneratie, JSON-compliance, vertaling, prijsverlaging, veiligheidsweigering
-- **4 Matchstrategieën** — `exact`, `contains`, `regex`, `custom` (JS-functie)
-- **Translator Playground Test Bench** — Batchtests met meerdere inputs en verwachte outputs, vergelijking tussen providers
-- **Chat Tester** — Volledige rondreis met visuele responsweergave
-- **Live Monitor** — Realtime stream van alle verzoeken die door de proxy stromen
+- **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. "Ik moet schalen zonder prestatieverlies"
+📈 15. "I need to scale without losing performance"
-Naarmate het verzoekvolume groeit, genereren dezelfde vragen dubbele kosten als dezelfde vragen niet in de cache worden opgeslagen. Zonder idempotentie verspillen dubbele aanvragen de verwerking. Tarieflimieten per aanbieder moeten worden gerespecteerd.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Semantische cache** — Cache met twee lagen (handtekening + semantisch) verlaagt de kosten en de latentie
-- **Request Idempotency** — 5s deduplicatievenster voor identieke verzoeken
-- **Detectie van tarieflimiet** — RPM per provider, minimale tussenruimte en maximale gelijktijdige tracking
-- **Bewerkbare snelheidslimieten** — Configureerbare standaardinstellingen in Instellingen → Veerkracht met doorzettingsvermogen
-- **API Key Validation Cache** — 3-tier cache voor productieprestaties
-- **Gezondheidsdashboard met telemetrie** — p50/p95/p99-latentie, cachestatistieken, uptime
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. "Ik wil het modelgedrag wereldwijd controleren"
+🤖 16. "I want to control model behavior globally"
-Ontwikkelaars die alle antwoorden in een specifieke taal willen, met een specifieke toon, of redeneringstokens willen beperken. Het is onpraktisch om dit in elke tool/verzoek te configureren.
+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.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- **Systeempromptinjectie**: algemene prompt toegepast op alle verzoeken
-- **Thinking Budget Validation** — Redenering van tokentoewijzingscontrole per verzoek (passthrough, automatisch, aangepast, adaptief)
-- **6 Routingstrategieën** — Globale strategieën die bepalen hoe verzoeken worden gedistribueerd
-- **Wildcard Router** — `provider/*`-patronen routeren dynamisch naar elke provider
-- **Combo in-/uitschakelen schakelen** — Schakel combo's rechtstreeks vanuit het dashboard in
-- **Provider wisselen** — Schakel alle verbindingen voor een provider met één klik in/uit
-- **Geblokkeerde providers**: sluit specifieke providers uit van de `/v1/models`-lijst
+- **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
-🧰 17. "Ik heb MCP-tools nodig als eersteklas productmogelijkheden"
+🧰 17. "I need MCP tools as first-class product capabilities"
-Veel AI-gateways stellen MCP alleen bloot als een verborgen implementatiedetail. Teams hebben een zichtbare, beheersbare operationele laag nodig.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- MCP verschijnt op het dashboardnavigatie- en eindpuntprotocoltabblad
-- Speciale MCP-beheerpagina met proces, tools, scopes en audit
-- Ingebouwde snelstart voor `omniroute --mcp` en onboarding van klanten
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "Ik heb A2A-orkestratie nodig met synchronisatie- en streamtaakpaden"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Agentworkflows hebben zowel directe antwoorden nodig als langdurige gestreamde uitvoering met levenscycluscontrole.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- A2A JSON-RPC-eindpunt (`POST /a2a`) met `message/send` en `message/stream`
-- SSE-streaming met voortplanting van de terminalstatus
-- Taaklevenscyclus-API's voor `tasks/get` en `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. "Ik heb echte MCP-processtatus nodig, geen geraden status"
+🛰️ 19. "I need real MCP process health, not guessed status"
-Operationele teams moeten weten of MCP daadwerkelijk leeft, en niet alleen of een API bereikbaar is.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- Runtime-hartslagbestand met PID, tijdstempels, transport, aantal gereedschappen en scope-modus
-- MCP-status-API die hartslag + recente activiteit combineert
-- UI-statuskaarten voor proces/uptime/hartslagversheid
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "Ik heb controleerbare MCP-tooluitvoering nodig"
+📋 20. "I need auditable MCP tool execution"
-Wanneer tools de configuratie muteren of operationele acties activeren, hebben teams forensische traceerbaarheid nodig.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- SQLite-ondersteunde auditregistratie voor MCP-toolaanroepen
-- Filters op tool, succes/mislukking, API-sleutel en paginering
-- Dashboard-audittabel + statistiekeneindpunten voor automatisering
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "Ik heb MCP-rechten per integratie nodig"
+🔐 21. "I need scoped MCP permissions per integration"
-Verschillende clients moeten toegang tot de toolcategorieën met de minste bevoegdheden hebben.
+Different clients should have least-privilege access to tool categories.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- 9 gedetailleerde MCP-scopes voor gecontroleerde toegang tot tools
-- Scopehandhaving en zichtbaarheid in de MCP-beheerinterface
-- Veilige standaardhouding voor operationeel gereedschap
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. "Ik heb operationele controles nodig zonder opnieuw te implementeren"
+⚙️ 22. "I need operational controls without redeploying"
-Teams hebben snelle runtimewijzigingen nodig tijdens incidenten of kostengebeurtenissen.
+Teams need quick runtime changes during incidents or cost events.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- Schakel combo-activering rechtstreeks vanuit het MCP-dashboard
-- Pas veerkrachtprofielen toe uit vooraf gedefinieerde beleidspakketten
-- Reset de status van de stroomonderbreker vanaf hetzelfde bedieningspaneel
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. "Ik heb live zichtbaarheid en annulering van de levenscyclus van A2A-taken nodig"
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Zonder inzicht in de levenscyclus worden taakincidenten moeilijk te beoordelen.
+Without lifecycle visibility, task incidents become hard to triage.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- Takenlijst/filteren op staat/vaardigheid met paginering
-- Inzoomen op taakmetagegevens, gebeurtenissen en artefacten
-- Eindpunt voor het annuleren van taken en UI-actie met bevestiging
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. "Ik heb actieve streamstatistieken nodig voor A2A-belasting"
+🌊 24. "I need active stream metrics for A2A load"
-Streamingworkflows vereisen operationeel inzicht in gelijktijdigheid en liveverbindingen.
+Streaming workflows require operational insight into concurrency and live connections.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- Actieve streamtellers geïntegreerd in de A2A-status
-- Tijdstempel van de laatste taak en tellingen per staat
-- A2A-dashboardkaarten voor real-time operationele monitoring
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "Ik heb standaard agentdetectie nodig voor klanten"
+🪪 25. "I need standard agent discovery for clients"
-Externe klanten en orkestrators hebben machinaal leesbare metagegevens nodig voor onboarding.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- Agentkaart zichtbaar op `/.well-known/agent.json`
-- Mogelijkheden en vaardigheden weergegeven in de management-UI
-- A2A-status-API bevat ontdekkingsmetagegevens voor automatisering
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "Ik heb protocolvindbaarheid nodig in de product-UX"
+🧭 26. "I need protocol discoverability in the product UX"
-Als gebruikers protocoloppervlakken niet kunnen ontdekken, neemt de acceptatie- en ondersteuningskwaliteit af.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- Zijbalkinvoer voor MCP en A2A
-- Eindpuntpagina Tabblad Protocollen met snelstart en status
-- Koppelingen van overzicht naar speciale managementdashboards
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "Ik heb end-to-end protocolvalidatie nodig met echte clients"
+🧪 27. "I need end-to-end protocol validation with real clients"
-Mock-tests zijn niet voldoende om de protocolcompatibiliteit vóór de release te valideren.
+Mock tests are not enough to validate protocol compatibility before release.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- E2E-suite die de app opstart en echt MCP SDK-clienttransport gebruikt
-- A2A-clienttests voor het ontdekken, verzenden, streamen, ophalen en annuleren van stromen
-- Controleer beweringen aan de hand van MCP-audit- en A2A-taken-API's
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. "Ik heb uniforme observatie nodig over alle interfaces heen"
+📡 28. "I need unified observability across all interfaces"
-Het opsplitsen van de waarneembaarheid per protocol creëert blinde vlekken en een langere MTTR.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- Uniforme dashboards/logboeken/analyses in één product
-- Gezondheid + audit + verzoektelemetrie over OpenAI-, MCP- en A2A-lagen
-- Operationele API's voor status en automatisering
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "Ik heb één runtime nodig voor proxy + tools + agentorkestratie"
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Het uitvoeren van veel afzonderlijke services verhoogt de operationele kosten en faalwijzen.
+Running many separate services increases operational cost and failure modes.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- OpenAI-compatibele proxy, MCP-server en A2A-server in één stapel
-- Gedeelde authenticatie, veerkracht, gegevensopslag en waarneembaarheid
-- Consistent beleidsmodel op alle interactieoppervlakken
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. "Ik moet agentische workflows verzenden zonder wildgroei van lijmcodes"
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Teams verliezen snelheid bij het samenvoegen van meerdere ad-hocservices en scripts.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Hoe OmniRoute het oplost:**
+**How OmniRoute solves it:**
-- Uniforme eindpuntstrategie voor klanten en agenten
-- Ingebouwde gebruikersinterfaces voor protocolbeheer en rookvalidatiepaden
-- Productieklare fundamenten (beveiliging, loggen, veerkracht, back-up)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Voorbeeld-playbooks (geïntegreerde gebruiksscenario's)
+### Example Playbooks (Integrated Use Cases)
-**Playbook A: Maximaliseer betaald abonnement + goedkope back-up**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -683,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Playbook B: Codeerstapel zonder kosten**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -695,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Playbook C: 24/7, altijd actieve fallback-keten**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -708,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Playbook D: Agentoperaties met MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Snelle start
+## 🆓 Start Free — Zero Configuration Cost
-**1. Wereldwijd installeren:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Snel starten
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Dashboard wordt geopend op `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Commando | Beschrijving |
-| ----------------------- | ---------------------------------- |
-| `omniroute` | Startserver (standaardpoort 20128) |
-| `omniroute --port 3000` | Gebruik aangepaste poort |
-| `omniroute --no-open` | Browser niet automatisch openen |
-| `omniroute --help` | Hulp tonen |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Sluit een GRATIS provider aan:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Dashboard → Providers → **Claude Code** of **Antigravity** verbinden → OAuth-aanmelding → Klaar!
+Optional split-port mode:
-**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
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**Dat is alles!** Begin met coderen met GRATIS AI-modellen.
+### 2) Connect providers and create your API key
-**Alternatief — uitvoeren vanaf bron:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-OmniRoute is beschikbaar als openbare Docker-image op [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Snelle uitvoering:**
+**Quick run:**
```bash
docker run -d \
@@ -777,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Met omgevingsbestand:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -792,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-** Docker Compose gebruiken:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -802,257 +880,552 @@ docker compose --profile base up -d
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 |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+### Snel starten
+
```bash
-npm run electron:dev # Development mode
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Prijzen in één oogopslag
+## 💰 Pricing at a Glance
-| 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 |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Pro-tip:** Begin met Gemini CLI (180K gratis/maand) + iFlow (onbeperkt gratis) combo = $ 0 kosten!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Belangrijkste kenmerken
+---
-### 🧠 Kernroutering en intelligentie
+## 🆓 Free Models — What You Actually Get
-| 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 |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **Systeempromptinjectie** | Algemene systeemprompt toegepast op alle verzoeken |
-| 📄 **Reacties-API** | Volledige OpenAI Responses API (`/v1/responses`) ondersteuning voor Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 Multimodale API's
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Kenmerk | Wat het doet |
-| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Beeldgeneratie** | `/v1/images/generations` — 4 providers, 9+ modellen |
-| 📐 **Insluitingen** | `/v1/embeddings` — 6 providers, 9+ modellen |
-| 🎤 **Audiotranscriptie** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Tekst-naar-spraak** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Moderaties** | `/v1/moderations` — Veiligheidscontroles van inhoud |
-| 🔀 **Herschikking** | `/v1/rerank` — Herschikking van documentrelevantie |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Veerkracht en veiligheid
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| 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 |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **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 |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 Waarneembaarheid en analyse
+### 🟡 QWEN MODELS (Device Code Auth)
-| Kenmerk | Wat het doet |
-| ------------------------------------------------- | ------------------------------------------------------------------------------------------- |
-| 📝 **Logboekregistratie aanvragen** | Foutopsporingsmodus met volledige aanvraag-/antwoordlogboeken |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **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 |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ Implementatie en synchronisatie
+### 🟣 GEMINI CLI (Google OAuth)
-| 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 (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Aangepaste gegevensmap** | `DATA_DIR` env var om standaard `~/.omniroute` opslagpad te overschrijven |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Functiedetails
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Slimme terugval op 4 niveaus
+Start MCP transport in stdio mode:
-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
+```bash
+omniroute --mcp
```
-### 📊 Realtime quota bijhouden
+Recommended validation flow:
-- Tokenverbruik per aanbieder
-- Aftellen resetten (5 uur, dagelijks, wekelijks)
-- Kostenraming voor betaalde niveaus
-- Maandelijkse uitgavenrapporten
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Formaatvertaling
+Useful APIs for automation:
-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** — `` 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
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Evaluaties (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-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.
+Discover the agent:
-### Ingebouwde gouden set
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-De vooraf geladen "OmniRoute Golden Set" bevat 10 testcases die betrekking hebben op:
+Send a task:
-- Groeten, wiskunde, aardrijkskunde, codegeneratie
-- Naleving van JSON-formaat, vertaling, prijsverlaging
-- Veiligheidsweigering (schadelijke inhoud), tellen, booleaanse logica
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Evaluatiestrategieën
+Manage lifecycle:
-| 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` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Installatiehandleiding
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Abonnementaanbieders
+🧪 End-to-end protocol validation
-### Claude-code (Pro/Max)
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
+
+### Claude Code (Pro/Max)
```bash
Dashboard → Providers → Connect Claude Code
@@ -1065,9 +1438,9 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**Pro-tip:** Gebruik Opus voor complexe taken, Sonnet voor snelheid. OmniRoute houdt quota bij per model!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
-### OpenAI-codex (Plus/Pro)
+### OpenAI Codex (Plus/Pro)
```bash
Dashboard → Providers → Connect Codex
@@ -1079,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (GRATIS 180K/maand!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1091,9 +1481,9 @@ Models:
gc/gemini-2.5-pro
```
-**Beste waarde:** Enorm gratis niveau! Gebruik dit vóór betaalde niveaus.
+**Best Value:** Huge free tier! Use this before paid tiers.
-### GitHub-copiloot
+### GitHub Copilot
```bash
Dashboard → Providers → Connect GitHub
@@ -1109,88 +1499,88 @@ Models:
-🔑 API-sleutelproviders
+🔑 API Key Providers
-### NVIDIA NIM (GRATIS 1000 credits!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-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`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**Modellen:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` en nog meer dan 50
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Pro-tip:** OpenAI-compatibele API — werkt naadloos samen met de formaatvertaling van OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
-### Diepzoeken
+### DeepSeek
-1. Aanmelden: [platform.deepseek.com](https://platform.deepseek.com)
-2. Haal de API-sleutel op
-3. Dashboard → Provider toevoegen → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Modellen:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (gratis niveau beschikbaar!)
+### Groq (Free Tier Available!)
-1. Aanmelden: [console.groq.com](https://console.groq.com)
-2. Ontvang een API-sleutel (inclusief gratis laag)
-3. Dashboard → Provider toevoegen → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Modellen:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Pro-tip:** Ultrasnelle gevolgtrekking — het beste voor realtime coderen!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (meer dan 100 modellen)
+### OpenRouter (100+ Models)
-1. Aanmelden: [openrouter.ai](https://openrouter.ai)
-2. Haal de API-sleutel op
-3. Dashboard → Provider toevoegen → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Modellen:** Krijg toegang tot meer dan 100 modellen van alle grote providers via één API-sleutel.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Goedkope providers (back-up)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (dagelijkse reset, $0,6/1 miljoen)
+### GLM-4.7 (Daily reset, $0.6/1M)
-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`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**Gebruik:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Pro-tip:** Coderingsplan biedt 3× quotum tegen 1/7 kosten! Dagelijks resetten om 10:00 uur.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (5 uur resetten, $0,20/1M)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Aanmelden: [MiniMax](https://www.minimax.io/)
-2. Haal de API-sleutel op
-3. Dashboard → API-sleutel toevoegen
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Gebruik:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Pro-tip:** Goedkoopste optie voor lange context (1 miljoen tokens)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 ($9/maand vast)
+### Kimi K2 ($9/month flat)
-1. Abonneer je: [Moonshot AI](https://platform.moonshot.ai/)
-2. Haal de API-sleutel op
-3. Dashboard → API-sleutel toevoegen
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Gebruik:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Pro-tip:** Vaste $ 9/maand voor 10 miljoen tokens = $ 0,90/1 miljoen effectieve kosten!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 GRATIS providers (noodback-up)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 GRATIS modellen)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1205,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 GRATIS modellen)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1217,7 +1607,7 @@ Models:
qw/qwen3-coder-flash
```
-### Kiro (Claude GRATIS)
+### Kiro (Claude FREE)
```bash
Dashboard → Connect Kiro
@@ -1232,9 +1622,9 @@ Models:
-🎨 Combo's maken
+🎨 Create Combos
-### Voorbeeld 1: Maximaliseer abonnement → Goedkope back-up
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1248,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### Voorbeeld 2: Alleen gratis (geen kosten)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1263,9 +1653,9 @@ Cost: $0 forever!
-🔧 CLI-integratie
+🔧 CLI Integration
-### Cursor-IDE
+### Cursor IDE
```
Settings → Models → Advanced:
@@ -1274,11 +1664,11 @@ Settings → Models → Advanced:
Model: cc/claude-opus-4-6
```
-### Claude-code
+### Claude Code
-Gebruik de pagina **CLI Tools** in het dashboard voor configuratie met één klik, of bewerk `~/.claude/settings.json` handmatig.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
-### Codex-CLI
+### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
@@ -1287,15 +1677,15 @@ export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
```
-### Open Klauw
+### OpenClaw
-**Optie 1 — Dashboard (aanbevolen):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Optie 2 — Handmatig:** Bewerk `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1311,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **Opmerking:** OpenClaw werkt alleen met lokale OmniRoute. Gebruik `127.0.0.1` in plaats van `localhost` om IPv6-resolutieproblemen te voorkomen.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### Cline / Doorgaan / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1323,110 +1713,245 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Problemen oplossen
+## Probleemoplossing
-Klik om de probleemoplossingsgids uit te vouwen
+Click to expand troubleshooting guide
-**"Taalmodel heeft geen berichten verstrekt"**
+**"Language model did not provide messages"**
-- Providerquotum opgebruikt → Controleer dashboardquotumtracker
-- Oplossing: gebruik combo-fallback of schakel over naar een goedkoper niveau
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**Snelheidslimiet**
+**Rate limiting**
-- Abonnementquotum op → Terugval op GLM/MiniMax
-- Combinatie toevoegen: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**OAuth-token verlopen**
+**OAuth token expired**
-- Automatisch vernieuwd door OmniRoute
-- Als de problemen aanhouden: Dashboard → Provider → Opnieuw verbinding maken
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Hoge kosten**
+**High costs**
-- Controleer gebruiksstatistieken in Dashboard → Kosten
-- Schakel het primaire model over naar GLM/MiniMax
-- Gebruik de gratis laag (Gemini CLI, iFlow) voor niet-kritieke taken
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Dashboard opent op verkeerde poort**
+**Dashboard/API ports are wrong**
-- Stel `PORT=20128` en `NEXT_PUBLIC_BASE_URL=http://localhost:20128` in
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Cloudsynchronisatiefouten**
+**Cloud sync errors**
-- 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
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Eerste login werkt niet**
+**First login not working**
-- Controleer `INITIAL_PASSWORD` in `.env`
-- Indien niet ingesteld, is het reservewachtwoord `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Geen verzoeklogboeken**
+**No request logs**
-- Stel `ENABLE_REQUEST_LOGS=true` in in `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Verbindingstest toont "Ongeldig" voor OpenAI-compatibele providers**
+**Connection test shows "Invalid" for OpenAI-compatible 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
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 OAuth
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ BELANGRIJK voor gebruik met OmniRoute op VPS/Docker/server op afstand**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote 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.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's 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:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### Oplossing: Configureer uw eigen OAuth-credenciais
+#### Solution: Configure your own OAuth credentials
-U kunt precies zien hoe **OAuth 2.0 Client ID** geen Google Cloud Console heeft met een URI van zijn server.
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
-#### Passo een passo
+#### Step-by-step
-**1. Toegang tot Google Cloud Console**
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
+
+#### Passo a passo
+
+**1. Acesse o 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**
+**2. Crie um novo OAuth 2.0 Client ID**
-- Klik op **"+ Credentials aanmaken"** → **"OAuth-client-ID"**
-- Applicatietip: **"Webapplicatie"**
-- Nome: escolha qualquer nome (bijvoorbeeld: `OmniRoute Remote`)
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. Adicione als geautoriseerde omleidings-URI's**
+**3. Adicione as Authorized Redirect URIs**
-Geen campagne **"Geautoriseerde omleidings-URI's"**, aanbevolen:
+No campo **"Authorized redirect URIs"**, adicione:
```
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`).
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. Bewaar en kopieer als credenciais**
+**4. Salve e copie as credenciais**
-U kunt ook op Google klikken op **Client-ID** en **Clientgeheim**.
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. Configureer als variáveis de ambiente**
+**5. Configure as variáveis de ambiente**
-Geen `.env` (of de verschillende omgevingen van Docker):
+No seu `.env` (ou nas variáveis de ambiente do Docker):
```bash
# Para Antigravity:
@@ -1439,7 +1964,7 @@ GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
```
-**6. Reinicie van OmniRoute**
+**6. Reinicie o OmniRoute**
```bash
# Se usando npm:
@@ -1449,153 +1974,147 @@ npm run dev
docker restart omniroute
```
-**7. Nieuwe verbinding**
+**7. Tente conectar novamente**
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.
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### Tijdelijke tijdelijke oplossing (sem credenciais próprias configureren)
+#### Workaround temporário (sem configurar credenciais próprias)
-Als u geen geloofwaardige geloofwaardigheid meer heeft, is het mogelijk om de stroom **handleiding van de URL** te gebruiken:
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-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"**
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
+4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
+5. Clique em **"Connect"**
-> Deze tijdelijke oplossing werkt door de autorisatiecode van de URL en is onafhankelijk van het omleiden naar uw autorisatie of niet.
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️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
+## 🛠️ Tech Stack
-Klik om dashboardscreenshots te bekijken
+Click to expand tech stack details
-| Pagina | Schermafbeelding |
-| --------------------- | ------------------------------------------------- |
-| **Aanbieders** |  |
-| **Combo's** |  |
-| **Analytics** |  |
-| **Gezondheid** |  |
-| **Vertaler** |  |
-| **Instellingen** |  |
-| **CLI-hulpmiddelen** |  |
-| **Gebruikslogboeken** |  |
-| **Eindpunt** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## Documentatie
-OmniRoute heeft **210+ functies gepland** over meerdere ontwikkelingsfasen. Dit zijn de belangrijkste gebieden:
-
-| Categorie | Geplande functies | Hoogtepunten |
-| ------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------- |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🧠 **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)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 Bijdragers
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Hoe u kunt bijdragen
+### How to Contribute
-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
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Zie [CONTRIBUTING.md](CONTRIBUTING.md) voor gedetailleerde richtlijnen.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Er wordt een nieuwe versie uitgebracht
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Sterrengeschiedenis
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Dankbetuigingen
+## 🙏 Acknowledgments
-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.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Speciale dank aan **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — de originele Go-implementatie die deze JavaScript-port inspireerde.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Licentie
+## Licentie
-MIT-licentie - zie [LICENSE](LICENSE) voor details.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Gebouwd met ❤️ voor ontwikkelaars die 24/7 coderen
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/nl/docs/FEATURES.md b/docs/i18n/nl/docs/FEATURES.md
new file mode 100644
index 0000000000..e5ec5b8073
--- /dev/null
+++ b/docs/i18n/nl/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Nederlands)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/no/README.md b/docs/i18n/no/README.md
index a7eae274a0..2806587a15 100644
--- a/docs/i18n/no/README.md
+++ b/docs/i18n/no/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — Den gratis AI-gatewayen
+# 🚀 OmniRoute — The Free AI Gateway (Norsk)
-### Slutt aldri å kode. Smart ruting til **GRATIS og rimelige AI-modeller** med automatisk fallback.
-
-_Din universelle API-proxy – ett endepunkt, 36+ leverandører, null nedetid._
-
-**Chatfullføringer • Innebygginger • Bildegenerering • Lyd • Omrangering • 100 % TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Gratis AI-leverandør for dine favorittkodeagenter
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Koble til ethvert AI-drevet IDE- eller CLI-verktøy gjennom OmniRoute – gratis API-gateway for ubegrenset koding._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _Koble til ethvert AI-drevet IDE- eller CLI-verktøy gjennom OmniRoute – grati
|
-📡 Alle agenter kobler til via http://localhost:20128/v1 eller http://cloud.omniroute.online/v1, —limited one models_245 kvote
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Hvorfor OmniRoute?
-
-**Slutt å kaste bort penger og nå grensene:**
-
--
Abonnementskvoten utløper ubrukt hver måned
--
Takstgrenser stopper deg med midtkoding
--
Dyre APIer ($20–50/måned per leverandør)
--
Manuell veksling mellom tilbydere
-
-**OmniRoute løser dette:**
-
-- ✅ **Maksimer abonnementer** - Spor kvote, bruk hver bit før tilbakestilling
-- ✅ **Automatisk fallback** - Abonnement → API-nøkkel → Billig → Gratis, null nedetid
-- ✅ **Multi-konto** - Round-robin mellom kontoer per leverandør
-- ✅ **Universal** - Fungerer med Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, hvilket som helst CLI-verktøy
-
----
-
-## 📧 Støtte
-
-> 💬 **Bli med i fellesskapet vårt!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Få hjelp, del tips og hold deg oppdatert.
-
-- **Nettsted**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **Problemer**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Originalt prosjekt**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Hvordan det fungerer
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,451 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 Hva OmniRoute løser — 30 ekte smertepoeng og brukstilfeller
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Hver utviklere som bruker AI-verktøy møter disse problemene daglig.** OmniRoute ble bygget for å løse dem alle – fra kostnadsoverskridelser til regionale blokker, fra ødelagte OAuth-flyter til protokolloperasjoner og observerbarhet i bedrifter.
+> **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 protocol operations and enterprise observability.
-💸 1. "Jeg betaler for et dyrt abonnement, men blir fortsatt avbrutt av grenser"
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Utviklere betaler $20–200/måned for Claude Pro, Codex Pro eller GitHub Copilot. Selv om du betaler, har kvoten et tak – 5 timers bruk, ukentlige grenser eller rategrenser per minutt. Midtkodingsøkt, leverandøren slutter å svare og utvikleren mister flyt og produktivitet.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **Smart 4-lags fallback** — Hvis abonnementskvoten går tom, omdirigeres automatisk til API-nøkkel → Billig → Gratis med null manuell intervensjon
-- **Sanntidskvotesporing** — Viser tokenforbruk i sanntid med tilbakestilt nedtelling (5 timer, daglig, ukentlig)
-- **Støtte for flere kontoer** - Flere kontoer per leverandør med automatisk round-robin - når en går tom, bytter du til den neste
-- **Egendefinerte kombinasjoner** — Tilpassbare reservekjeder med 6 balansestrategier (fyll først, round-robin, P2C, tilfeldig, minst brukt, kostnadsoptimalisert)
-- **Codex Business Quotas** — Overvåking av bedrifts-/teamarbeidsområdekvoter direkte i dashbordet
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. "Jeg trenger å bruke flere leverandører, men hver av dem har en annen API"
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI bruker ett format, Claude (Anthropic) bruker et annet, Gemini enda et annet. Hvis en utvikler ønsker å teste modeller fra forskjellige leverandører eller fallback mellom dem, må de rekonfigurere SDK-er, endre endepunkter, håndtere inkompatible formater. Tilpassede leverandører (FriendLI, NIM) har ikke-standardmodellende endepunkter.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **Unified Endpoint** - En enkelt `http://localhost:20128/v1` fungerer som proxy for alle 36+ leverandører
-- **Formatoversettelse** — Automatisk og gjennomsiktig: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-- **Responsrensing** — Fjerner ikke-standardfelter (`x_groq`, `usage_breakdown`, `service_tier`) som bryter OpenAI SDK v1.83+
-- **Rollenormalisering** — Konverterer `developer` → `system` for ikke-OpenAI-leverandører; `system` → `user` for GLM/ERNIE
-- **Think Tag Extraction** — Trekker ut ``-blokker fra modeller som DeepSeek R1 til standardiserte `reasoning_content`
-- **Structured Output for Gemini** — `json_schema` → `responseMimeType`/`responseSchema` automatisk konvertering
-- **`stream` er standard til `false`** — Justerer med OpenAI-spesifikasjoner, og unngår uventet SSE i Python/Rust/Go SDK-er
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. "Min AI-leverandør blokkerer min region/land"
+🌐 3. "My AI provider blocks my region/country"
-Leverandører som OpenAI/Codex blokkerer tilgang fra visse geografiske områder. Brukere får feil som `unsupported_country_region_territory` under OAuth- og API-tilkoblinger. Dette er spesielt frustrerende for utviklere fra utviklingsland.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **3-Level Proxy Config** — Konfigurerbar proxy på 3 nivåer: global (all trafikk), per leverandør (kun én leverandør) og per tilkobling/nøkkel
-- **Fargekodede proxy-merker** — Visuelle indikatorer: 🟢 global proxy, 🟡 leverandørproxy, 🔵 tilkoblings proxy, viser alltid IP
-- **OAuth-tokenutveksling gjennom proxy** - OAuth-flyt går også gjennom proxyen, og løser `unsupported_country_region_territory`
-- **Test av tilkobling via proxy** — Tilkoblingstester bruker den konfigurerte proxyen (ikke mer direkte forbikobling)
-- **SOCKS5-støtte** — Full SOCKS5-proxystøtte for utgående ruting
-- **TLS-fingeravtrykkspoofing** — Nettleserlignende TLS-fingeravtrykk via `wreq-js` for å omgå botdeteksjon
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. "Jeg vil bruke AI for koding, men jeg har ingen penger"
+🆓 4. "I want to use AI for coding but I have no money"
-Ikke alle kan betale $20–200 per måned for AI-abonnementer. Studenter, utviklere fra fremvoksende land, hobbyfolk og frilansere trenger tilgang til kvalitetsmodeller uten kostnad.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **Gratis-tilbydere innebygd** — Innebygd støtte for 100 % gratisleverandører: iFlow (8 ubegrensede modeller), Qwen (3 ubegrensede modeller), Kiro (Claude gratis), Gemini CLI (180K/mnd gratis)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Kun gratis kombinasjoner** — Kjede `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/måned med null nedetid
-- **NVIDIA NIM gratis kreditter** — 1000 gratis kreditter integrert
-- **Kostnadsoptimalisert strategi** — Rutingstrategi som automatisk velger den billigste tilgjengelige leverandøren
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. "Jeg trenger å beskytte AI-gatewayen min mot uautorisert tilgang"
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Når du eksponerer en AI-gateway til nettverket (LAN, VPS, Docker), kan alle med adressen konsumere utviklerens tokens/kvote. Uten beskyttelse er API-er sårbare for misbruk, umiddelbar injeksjon og misbruk.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **API Key Management** — Generering, rotasjon og scoping per leverandør med en dedikert `/dashboard/api-manager`-side
-- **Tillatelser på modellnivå** — Begrens API-nøkler til spesifikke modeller (`openai/*`, jokertegnmønstre), med Tillat alt/begrens
-- **API Endpoint Protection** — Krev en nøkkel for `/v1/models` og blokker spesifikke leverandører fra oppføringen
-- **Auth Guard + CSRF Protection** — Alle dashbordruter beskyttet med `withAuth` mellomvare + CSRF-tokens
-- **Rate Limiter** — Per-IP ratebegrensning med konfigurerbare vinduer
-- **IP-filtrering** — Tillatelsesliste/blokkeringsliste for tilgangskontroll
-- **Prompt Injection Guard** — Sanitisering mot ondsinnede spørsmålsmønstre
-- **AES-256-GCM-kryptering** — Legitimasjon kryptert i hvile
+- **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. «Tilbyderen min gikk ned og jeg mistet kodeflyten min»
+🛑 6. "My provider went down and I lost my coding flow"
-AI-leverandører kan bli ustabile, returnere 5xx-feil eller nå midlertidige hastighetsgrenser. Hvis en utvikler er avhengig av en enkelt leverandør, blir de avbrutt. Uten strømbrytere kan gjentatte forsøk krasje applikasjonen.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **Circuit Breaker per leverandør** — Automatisk åpning/lukking med konfigurerbare terskler og nedkjøling (Lukket/Åpen/HalvÅpen)
-- **Eksponentiell backoff** — Progressive forsinkelser på nytt forsøk
-- **Anti-tordenflokk** — Mutex + semaforbeskyttelse mot samtidige stormer på nytt forsøk
-- **Combo Fallback Chains** — Hvis primærleverandøren mislykkes, faller den automatisk gjennom kjeden uten inngrep
-- **Combo Circuit Breaker** - Deaktiverer sviktende leverandører automatisk i en kombinasjonskjede
-- **Helsedashbord** — Oppetidsovervåking, strømbrytertilstander, sperringer, cachestatistikk, p50/p95/p99 latency
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. "Å konfigurere hvert AI-verktøy er kjedelig og repeterende"
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Utviklere bruker Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Hvert verktøy trenger en annen konfigurasjon (API-endepunkt, nøkkel, modell). Å konfigurere på nytt når du bytter leverandør eller modell er bortkastet tid.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **CLI Tools Dashboard** — Dedikert side med ett-klikksoppsett for Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-- **GitHub Copilot Config Generator** — Genererer `chatLanguageModels.json` for VS-kode med bulkmodellvalg
-- **Onboarding Wizard** — Veiledet 4-trinns oppsett for førstegangsbrukere
-- **Ett endepunkt, alle modeller** — Konfigurer `http://localhost:20128/v1` én gang, få tilgang til 36+ leverandører
+- **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 67+ providers
-🔑 8. "Å administrere OAuth-tokens fra flere leverandører er et helvete"
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot – alle bruker OAuth 2.0 med tokens som utløper. Utviklere må re-autentisere hele tiden, håndtere `client_secret is missing`, `redirect_uri_mismatch` og feil på eksterne servere. OAuth på LAN/VPS er spesielt problematisk.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **Automatisk oppdatering av token** — OAuth-tokener oppdateres i bakgrunnen før utløp
-- **OAuth 2.0 (PKCE) innebygd** — Automatisk flyt for Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **Multi-Account OAuth** - Flere kontoer per leverandør via JWT/ID-tokenutvinning
-- **OAuth LAN/Remote Fix** — Privat IP-deteksjon for `redirect_uri` + manuell URL-modus for eksterne servere
-- **OAuth Behind Nginx** — Bruker `window.location.origin` for omvendt proxy-kompatibilitet
-- **Remote OAuth Guide** — Trinn-for-trinn-veiledning for Google Cloud-legitimasjon på VPS/Docker
+- **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. "Jeg vet ikke hvor mye jeg bruker eller hvor"
+📊 9. "I don't know how much I'm spending or where"
-Utviklere bruker flere betalte leverandører, men har ikke noe enhetlig syn på utgifter. Hver leverandør har sitt eget faktureringsdashbord, men det er ingen konsolidert visning. Uventede kostnader kan hope seg opp.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **Dashboard for kostnadsanalyse** — Kostnadssporing per token og budsjettadministrasjon per leverandør
- – **Budsjettgrenser per nivå** – Utgiftstak per nivå som utløser automatisk fallback
-- **Priskonfigurasjon per modell** — Konfigurerbare priser per modell
-- **Bruksstatistikk per API-nøkkel** — Antall forespørsler og sist brukte tidsstempel per nøkkel
-- **Analytics Dashboard** — Statistiske kort, modellbruksdiagram, leverandørtabell med suksessrater og latens
+- **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. "Jeg kan ikke diagnostisere feil og problemer i AI-anrop"
+🐛 10. "I can't diagnose errors and problems in AI calls"
-Når et anrop mislykkes, vet ikke utvikleren om det var en takstgrense, utløpt token, feil format eller leverandørfeil. Fragmenterte logger på tvers av forskjellige terminaler. Uten observerbarhet er feilsøking prøving og feiling.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **Unified Logs Dashboard** — 4 faner: Forespørselslogger, proxy-logger, revisjonslogger, konsoll
-- **Console Log Viewer** — Viser i sanntid i terminalstil med fargekodede nivåer, automatisk rulling, søk, filter
-- **SQLite Proxy Logger** — Vedvarende logger som overlever serverstarter
-- **Translator Playground** — 4 feilsøkingsmoduser: Playground (formatoversettelse), Chat Tester (tur-retur), Test Bench (batch), Live Monitor (sanntid)
-- **Request Telemetri** — p50/p95/p99 latens + X-Request-Id-sporing
-- **Filbasert logging med rotasjon** — Konsollinterceptor fanger opp alt til JSON-logg med størrelsesbasert rotasjon
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. "Deployering og vedlikehold av gatewayen er kompleks"
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Installering, konfigurering og vedlikehold av en AI-proxy på tvers av forskjellige miljøer (lokalt, VPS, Docker, sky) er arbeidskrevende. Problemer som hardkodede baner, `EACCES` på kataloger, portkonflikter og kryssplattformbygg gir friksjon.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **npm global installasjon** — `npm install -g omniroute && omniroute` — ferdig
+- **npm global install** — `npm install -g omniroute && omniroute` — done
- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Docker Compose-profiler** — `base` (ingen CLI-verktøy) og `cli` (med Claude Code, Codex, OpenClaw)
-- **Electron Desktop App** — Innebygd app for Windows/macOS/Linux med systemstatusfelt, automatisk start, offline-modus
-- **Split-Port Mode** — API og Dashboard på separate porter for avanserte scenarier (omvendt proxy, containernettverk)
-- **Cloud Sync** — Konfigurer synkronisering på tvers av enheter via Cloudflare Workers
-- **DB-sikkerhetskopier** — Automatisk sikkerhetskopiering, gjenoppretting, eksport og import av alle innstillinger
+- **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. "Grensesnittet er kun engelsk, og teamet mitt snakker ikke engelsk"
+🌍 12. "The interface is English-only and my team doesn't speak English"
-Lag i ikke-engelsktalende land, spesielt i Latin-Amerika, Asia og Europa, sliter med grensesnitt som kun er på engelsk. Språkbarrierer reduserer bruken og øker konfigurasjonsfeil.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **Dashboard i18n — 30 språk** — Alle 500+ nøkler oversatt, inkludert arabisk, bulgarsk, dansk, tysk, spansk, finsk, fransk, hebraisk, hindi, ungarsk, indonesisk, italiensk, japansk, koreansk, malaysisk, nederlandsk, norsk, polsk, portugisisk (PT/BR), rumensk, russisk, ukrainsk, ukrainsk, kinesisk, engelsk, kinesisk, ukrainsk, kinesisk, ukrainsk, kinesisk, ukrainsk, kinesisk, ukrainsk, kinesisk
-- **RTL-støtte** — Høyre-til-venstre-støtte for arabisk og hebraisk
-- **Multi-Language READMEs** - 30 komplette dokumentasjonsoversettelser
-- **Språkvelger** — Globusikon i overskriften for sanntidsbytte
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. "Jeg trenger mer enn chat — jeg trenger innebygginger, bilder, lyd"
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-AI er ikke bare fullføring av chat. Utviklere må generere bilder, transkribere lyd, lage innbygginger for RAG, omrangere dokumenter og moderere innhold. Hver API har et annet endepunkt og format.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **Innbygging** — `/v1/embeddings` med 6 leverandører og 9+ modeller
-- **Bildegenerering** — `/v1/images/generations` med 10 leverandører og 20+ modeller (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **Tekst-til-video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) og SD WebUI
-- **Tekst-til-musikk** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
-- **Lydtranskripsjon** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Tekst-til-tale** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + eksisterende leverandører
-- **Moderasjoner** — `/v1/moderations` — Innholdssikkerhetssjekker
-- **Rerangering** — `/v1/rerank` — Rerangering av dokumentrelevans
-- **Responses API** — Full `/v1/responses`-støtte for Codex
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. "Jeg har ingen måte å teste og sammenligne kvalitet på tvers av modeller"
+🧪 14. "I have no way to test and compare quality across models"
-Utviklere ønsker å vite hvilken modell som er best for deres brukssituasjon – kode, oversettelse, resonnement – men det går tregt å sammenligne manuelt. Det finnes ingen integrerte evalueringsverktøy.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **LLM-evalueringer** — Gyldent sett-testing med 10 forhåndslastede tilfeller som dekker hilsener, matematikk, geografi, kodegenerering, JSON-overholdelse, oversettelse, nedskrivning, sikkerhetsavslag
-- **4 matchstrategier** — `exact`, `contains`, `regex`, `custom` (JS-funksjon)
-- **Translator Playground Test Bench** — Batchtesting med flere innganger og forventede utganger, sammenligning på tvers av leverandører
-- **Chattetester** — Full rundtur med visuell responsgjengivelse
-- **Live Monitor** — Sanntidsstrøm av alle forespørsler som strømmer gjennom proxyen
+- **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. "Jeg trenger å skalere uten å miste ytelse"
+📈 15. "I need to scale without losing performance"
-Når forespørselsvolumet vokser, genererer de samme spørsmålene dupliserte kostnader uten å bufre. Uten idempotens, dupliserte forespørsler om avfallsbehandling. Satsgrenser per leverandør må respekteres.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **Semantisk hurtigbuffer** — To-lags cache (signatur + semantisk) reduserer kostnader og ventetid
-- **Request Idempotency** — 5s dedupliseringsvindu for identiske forespørsler
-- **Deteksjon av hastighetsgrense** - RPM per leverandør, minimum gap og maksimal samtidig sporing
-- **Redigerbare frekvensgrenser** — Konfigurerbare standardinnstillinger i Innstillinger → Motstandsdyktighet med utholdenhet
-- **API Key Validation Cache** — 3-lags cache for produksjonsytelse
-- **Helsedashbord med telemetri** — p50/p95/p99-forsinkelse, hurtigbufferstatistikk, oppetid
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. "Jeg vil kontrollere modellatferd globalt"
+🤖 16. "I want to control model behavior globally"
-Utviklere som vil ha alle svar på et spesifikt språk, med en bestemt tone, eller som ønsker å begrense resonnement-tokens. Å konfigurere dette i hvert verktøy/hver forespørsel er upraktisk.
+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.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- **System Prompt Injection** — Global forespørsel brukt på alle forespørsler
+- **System Prompt Injection** — Global prompt applied to all requests
- **Thinking Budget Validation** — Reasoning token allocation control per request (passthrough, auto, custom, adaptive)
-- **6 rutingstrategier** — Globale strategier som bestemmer hvordan forespørsler distribueres
-- **Wildcard-ruter** — `provider/*`-mønstre ruter dynamisk til enhver leverandør
-- **Kombo aktiver/deaktiver veksle** — Veksle kombinasjoner direkte fra dashbordet
-- **Tilkobling av leverandør** — Aktiver/deaktiver alle tilkoblinger for en leverandør med ett klikk
-- **Blokkerte leverandører** — Ekskluder spesifikke leverandører fra `/v1/models`-oppføringen
+- **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
-🧰 17. "Jeg trenger MCP-verktøy som førsteklasses produktegenskaper"
+🧰 17. "I need MCP tools as first-class product capabilities"
-Mange AI-gatewayer avslører MCP bare som en skjult implementeringsdetalj. Team trenger et synlig, håndterbart driftslag.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- MCP vises i dashbordnavigasjons- og endepunktprotokollfanen
-- Dedikert MCP-administrasjonsside med prosess, verktøy, omfang og revisjon
-- Innebygd hurtigstart for `omniroute --mcp` og klient onboarding
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "Jeg trenger A2A-orkestrering med synkronisering + strømoppgavestier"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Agentarbeidsflyter trenger både direkte svar og langvarig strømmet utførelse med livssykluskontroll.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- A2A JSON-RPC-endepunkt (`POST /a2a`) med `message/send` og `message/stream`
-- SSE-streaming med forplantning av terminaltilstand
-- Oppgavelivssyklus-APIer for `tasks/get` og `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. "Jeg trenger ekte MCP-prosesshelse, ikke gjettet status"
+🛰️ 19. "I need real MCP process health, not guessed status"
-Operasjonelle team må vite om MCP faktisk er i live, ikke bare om en API er tilgjengelig.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- Runtime hjerteslag-fil med PID, tidsstempler, transport, verktøytelling og omfangsmodus
-- MCP status API som kombinerer hjerteslag + nylig aktivitet
-- UI-statuskort for prosess/oppetid/hjerteslag
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "Jeg trenger reviderbar MCP-verktøykjøring"
+📋 20. "I need auditable MCP tool execution"
-Når verktøy muterer konfigurasjon eller utløser operasjonshandlinger, trenger teamene rettsmedisinsk sporbarhet.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- SQLite-støttet revisjonslogging for MCP-verktøykall
-- Filtrerer etter verktøy, suksess/fiasko, API-nøkkel og paginering
-- Dashboard revisjonstabell + statistikkendepunkter for automatisering
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "Jeg trenger scoped MCP-tillatelser per integrasjon"
+🔐 21. "I need scoped MCP permissions per integration"
-Ulike klienter bør ha minst privilegert tilgang til verktøykategorier.
+Different clients should have least-privilege access to tool categories.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- 9 granulære MCP-skoper for kontrollert verktøytilgang
-- Håndhevelse av omfang og synlighet i MCP-administrasjonsgrensesnittet
-- Sikker standardstilling for operativt verktøy
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. "Jeg trenger operasjonelle kontroller uten å omdistribuere"
+⚙️ 22. "I need operational controls without redeploying"
-Lag trenger raske endringer i kjøretiden under hendelser eller kostnadshendelser.
+Teams need quick runtime changes during incidents or cost events.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- Bytt kombinasjonsaktivering direkte fra MCP-dashbordet
-- Bruk robusthetsprofiler fra forhåndsdefinerte policypakker
-- Tilbakestill strømbryterens tilstand fra samme driftspanel
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. «I need live A2A task lifecycle synibility and cancellation»
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Uten livssyklussynlighet blir oppgavehendelser vanskelig å triage.
+Without lifecycle visibility, task incidents become hard to triage.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- Oppgaveliste/filtrering etter tilstand/ferdighet med paginering
-- Drill-down på oppgavemetadata, hendelser og artefakter
-- Sluttpunkt for kansellering av oppgave og UI-handling med bekreftelse
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. «Jeg trenger aktive strømmålinger for A2A-last»
+🌊 24. "I need active stream metrics for A2A load"
-Strømmearbeidsflyter krever operasjonell innsikt i samtidighet og direkteforbindelser.
+Streaming workflows require operational insight into concurrency and live connections.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- Aktive strømtellere integrert i A2A-status
-- Tidsstempel for siste oppgave og antall per stat
-- A2A dashbordkort for operasjonsovervåking i sanntid
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "Jeg trenger standard agentoppdagelse for klienter"
+🪪 25. "I need standard agent discovery for clients"
-Eksterne klienter og orkestratorer trenger maskinlesbare metadata for onboarding.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- Agentkort eksponert på `/.well-known/agent.json`
-- Evner og ferdigheter vist i ledelsens brukergrensesnitt
-- A2A status API inkluderer oppdagelsesmetadata for automatisering
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "Jeg trenger protokolloppdagbarhet i produktets UX"
+🧭 26. "I need protocol discoverability in the product UX"
-Hvis brukere ikke kan oppdage protokolloverflater, faller kvaliteten på adopsjon og støtte.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- Sidefeltoppføringer for MCP og A2A
-- Endpoint-side Protokoller-fane med hurtigstart og status
-- Lenker fra oversikt til dedikerte styringsdashboards
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "Jeg trenger ende-til-ende protokollvalidering med ekte klienter"
+🧪 27. "I need end-to-end protocol validation with real clients"
-Mock-tester er ikke nok til å validere protokollkompatibilitet før utgivelse.
+Mock tests are not enough to validate protocol compatibility before release.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- E2E-suite som starter opp app og bruker ekte MCP SDK-klienttransport
-- A2A-klient tester for å oppdage, sende, streame, hente og kansellere flyter
-- Krysssjekk påstander mot MCP-revisjon og A2A-oppgave-APIer
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. «Jeg trenger enhetlig observerbarhet på tvers av alle grensesnitt»
+📡 28. "I need unified observability across all interfaces"
-Å dele observerbarhet etter protokoll skaper blinde flekker og lengre MTTR.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- Samlede dashboards/logger/analyse i ett produkt
-- Helse + revisjon + forespørsel om telemetri på tvers av OpenAI-, MCP- og A2A-lag
-- Operasjonelle APIer for status og automatisering
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "Jeg trenger én kjøretid for proxy + verktøy + agentorkestrering"
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Å kjøre mange separate tjenester øker driftskostnadene og feilmodusene.
+Running many separate services increases operational cost and failure modes.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- OpenAI-kompatibel proxy, MCP-server og A2A-server i én stabel
-- Delt autentisering, robusthet, datalagring og observerbarhet
-- Konsekvent policymodell på tvers av alle interaksjonsflater
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. "Jeg trenger å sende agentiske arbeidsflyter uten limkodespredning"
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Lag mister hastighet når de setter sammen flere ad-hoc-tjenester og skript.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Hvordan OmniRoute løser det:**
+**How OmniRoute solves it:**
-- Enhetlig endepunktstrategi for kunder og agenter
-- Innebygde brukergrensesnitt for protokolladministrasjon og røykvalideringsveier
-- Produksjonsklare fundamenter (sikkerhet, logging, robusthet, backup)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Eksempel på Playbooks (integrerte brukstilfeller)
+### Example Playbooks (Integrated Use Cases)
-**Playbook A: Maksimer betalt abonnement + billig backup**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -683,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Playbook B: Nullkostnadskodestabel**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -695,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Playbook C: 24/7 alltid aktiv reservekjede**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -708,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Playbook D: Agentoperasjoner med MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Hurtigstart
+## 🆓 Start Free — Zero Configuration Cost
-**1. Installer globalt:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Hurtigstart
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Dashboard åpner kl. `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Kommando | Beskrivelse |
-| ----------------------- | ---------------------------------- |
-| `omniroute` | Start server (standard port 20128) |
-| `omniroute --port 3000` | Bruk tilpasset port |
-| `omniroute --no-open` | Ikke åpne nettleseren automatisk |
-| `omniroute --help` | Vis hjelp |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Koble til en GRATIS leverandør:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Dashboard → Leverandører → Koble til **Claude-kode** eller **Antigravity** → OAuth-pålogging → Ferdig!
+Optional split-port mode:
-**3. Bruk i CLI-verktøyet:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**Det var det!** Begynn å kode med GRATIS AI-modeller.
+### 2) Connect providers and create your API key
-**Alternativt – kjør fra kilden:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-OmniRoute er tilgjengelig som et offentlig Docker-bilde på [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Rask løp:**
+**Quick run:**
```bash
docker run -d \
@@ -777,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Med miljøfil:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -792,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Bruke Docker Compose:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -802,256 +880,550 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| Bilde | Tag | Størrelse | Beskrivelse |
-| ------------------------ | -------- | --------- | ----------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | Siste stabile utgivelse |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Gjeldende versjon |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+### Hurtigstart
+
```bash
-npm run electron:dev # Development mode
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Priser på et øyeblikk
+## 💰 Pricing at a Glance
-| Nivå | Leverandør | Kostnad | Kvote Tilbakestill | Best for |
-| ----------------- | ----------------- | ----------------------------- | ----------------------- | -------------------- |
-| **💳 ABONNEMENT** | Claude Code (Pro) | $20/md | 5t + ukentlig | Allerede abonnert |
-| | Codex (Pluss/Pro) | $20-200/md | 5t + ukentlig | OpenAI-brukere |
-| | Gemini CLI | **GRATIS** | 180K/mnd + 1K/dag | Alle sammen! |
-| | GitHub Copilot | $10-19/md | Månedlig | GitHub-brukere |
-| **🔑 API NØKKEL** | NVIDIA NIM | **GRATIS** (1000 studiepoeng) | Engangs | Gratis tier testing |
-| | DeepSeek | Betal per bruk | Ingen | Beste pris/kvalitet |
-| | Groq | Gratis lag + betalt | Begrenset pris | Ultrarask slutning |
-| | xAI (Grok) | Betal per bruk | Ingen | Grok modeller |
-| | Mistral | Gratis lag + betalt | Begrenset pris | Europeisk AI |
-| | OpenRouter | Betal per bruk | Ingen | 100+ modeller |
-| **💰 BILLIG** | GLM-4.7 | $0,6/1M | Daglig 10:00 | Budsjett backup |
-| | MiniMax M2.1 | $0,2/1M | 5-timers rullende | Billigste alternativ |
-| | Kimi K2 | $9/md leilighet | 10 millioner tokens/mnd | Forutsigbar kostnad |
-| **🆓 GRATIS** | iFlow | $0 | Ubegrenset | 8 modeller gratis |
-| | Qwen | $0 | Ubegrenset | 3 modeller gratis |
-| | Kiro | $0 | Ubegrenset | Claude gratis |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Profftips:** Start med Gemini CLI (180K gratis/måned) + iFlow (ubegrenset gratis) kombinasjon = $0 kostnad!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Nøkkelfunksjoner
+---
-### 🧠 Kjerneruting og intelligens
+## 🆓 Free Models — What You Actually Get
-| Funksjon | Hva det gjør |
-| ---------------------------------- | ---------------------------------------------------------------------------------------- |
-| 🎯 **Smart 4-lags fallback** | Automatisk rute: Abonnement → API-nøkkel → Billig → Gratis |
-| 📊 **Sanntidskvotesporing** | Live tokenantall + tilbakestilt nedtelling per leverandør |
-| 🔄 **Formatoversettelse** | OpenAI ↔ Claude ↔ Gemini ↔ Markør ↔ Kiro sømløs + respons sanitization |
-| 👥 **Støtte for flere kontoer** | Flere kontoer per leverandør med intelligent utvalg |
-| 🔄 **Auto Token Refresh** | OAuth-tokens oppdateres automatisk med prøv på nytt |
-| 🎨 **Egendefinerte kombinasjoner** | 6 strategier: fyll først, round-robin, p2c, tilfeldig, minst brukt, kostnadsoptimalisert |
-| 🧩 **Egendefinerte modeller** | Legg til hvilken som helst modell-ID til en hvilken som helst leverandør |
-| 🌐 **Wildcard-ruter** | Ruter `provider/*`-mønstre til enhver leverandør dynamisk |
-| 🧠 **Tenkebudsjett** | Passthrough, auto, egendefinerte og adaptive moduser for resonnerende modeller |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **Systemprompt-injeksjon** | Global systemforespørsel brukt på alle forespørsler |
-| 📄 **Responses API** | Full støtte for OpenAI Responses API (`/v1/responses`) for Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 Multi-Modal APIer
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Funksjon | Hva det gjør |
-| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Bildegenerering** | `/v1/images/generations` — 4 leverandører, 9+ modeller |
-| 📐 **Innbygging** | `/v1/embeddings` — 6 leverandører, 9+ modeller |
-| 🎤 **Lydtranskripsjon** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Tekst-til-tale** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Moderasjoner** | `/v1/moderations` — Innholdssikkerhetssjekker |
-| 🔀 **Omrangering** | `/v1/rerank` — Rerangering av dokumentrelevans |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Spenst og sikkerhet
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| Funksjon | Hva det gjør |
-| --------------------------------- | ----------------------------------------------------------------------------- |
-| 🔌 **Circuit Breaker** | Automatisk åpning/lukking per leverandør med konfigurerbare terskler |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🛡️ **Anti-tordenflokk** | Mutex + semaforhastighetsgrense for API-nøkkelleverandører |
-| 🧠 **Semantisk cache** | To-lags cache (signatur + semantisk) reduserer kostnader og ventetid |
-| ⚡ **Be om idempotens** | 5s dedup-vindu for dupliserte forespørsler |
-| 🔒 **TLS-fingeravtrykkspoofing** | Omgå TLS-basert botdeteksjon via wreq-js |
-| 🌐 **IP-filtrering** | Tillatelsesliste/blokkeringsliste for API-tilgangskontroll |
-| 📊 **Redigerbare satsgrenser** | Konfigurerbar RPM, min gap og maks samtidig på systemnivå |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **API-endepunktbeskyttelse** | Auth-gate + leverandørblokkering for `/models`-endepunktet |
-| 🔒 **Proxy-synlighet** | Fargekodede merker: 🟢 global, 🟡 leverandør, 🔵 per tilkobling med IP-skjerm |
-| 🌐 **3-nivå proxy-konfigurasjon** | Konfigurer proxyer på globalt nivå, per leverandør eller per tilkoblingsnivå |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 Observerbarhet og analyse
+### 🟡 QWEN MODELS (Device Code Auth)
-| Funksjon | Hva det gjør |
-| -------------------------------- | ----------------------------------------------------------------------------------- |
-| 📝 **Be om logging** | Feilsøkingsmodus med fullstendige forespørsels-/svarlogger |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **SQLite proxy-logger** | Vedvarende proxy-logger overlever omstart av server |
-| 📊 **Analytics Dashboard** | Recharts-drevet: statistikkkort, modellbruksdiagram, leverandørtabell |
-| 📈 **Fremdriftssporing** | Opt-in SSE-fremdriftshendelser for streaming |
-| 🧪 **LLM-evalueringer** | Gylden sett-testing med 4 kampstrategier |
-| 🔍 **Be om telemetri** | p50/p95/p99 latensaggregering + X-Request-Id-sporing |
-| 📋 **Logger Dashboard** | Samlet side med 4 faner: Forespørselslogger, proxy-logger, revisjonslogger, konsoll |
-| 🖥️ **Konsollloggvisning** | Viser i sanntid i terminalstil med nivåfilter, søk, automatisk rulling |
-| 📑 **Filbasert logging** | Console interceptor fanger opp all utgang til JSON-loggfil med rotasjon |
-| 🏥 **Helse Dashboard** | Systemoppetid, strømbrytertilstander, sperringer, cachestatistikk |
-| 💰 **Kostnadssporing** | Budsjettadministrasjon + priskonfigurasjon per modell |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ Implementering og synkronisering
+### 🟣 GEMINI CLI (Google OAuth)
-| Funksjon | Hva det gjør |
-| -------------------------------- | ---------------------------------------------------------------------------------------- |
-| 💾 **Cloud Sync** | Synkroniser konfigurasjon på tvers av enheter via Cloudflare Workers |
-| 🌐 **Distribuer hvor som helst** | Localhost, VPS, Docker, Cloudflare Workers |
-| 🔑 **API Key Management** | Generer, roter og omfang API-nøkler per leverandør |
-| 🧙 **Onboarding Wizard** | 4-trinns veiledet oppsett for førstegangsbrukere |
-| 🔧 **CLI Tools Dashboard** | Ett-klikk konfigurer Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **DB-sikkerhetskopier** | Automatisk sikkerhetskopiering, gjenoppretting, eksport og import for alle innstillinger |
-| 🌐 **Internasjonalisering** | Full i18n med neste-intl — støtte for engelsk + portugisisk (Brasil) |
-| 🌍 **Språkvelger** | Globusikon i overskriften for sanntids språkbytte (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Tilpasset datakatalog** | `DATA_DIR` env var for å overstyre standard `~/.omniroute` lagringsbane |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Funksjonsdetaljer
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Smart 4-lags fallback
+Start MCP transport in stdio mode:
-Lag kombinasjoner med automatisk fallback:
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 Sanntidskvotesporing
+Recommended validation flow:
-- Tokenforbruk per leverandør
-- Tilbakestill nedtellingen (5 timer, daglig, ukentlig)
-- Kostnadsestimat for betalte nivåer
-- Månedlige utgiftsrapporter
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Formatoversettelse
+Useful APIs for automation:
-Sømløs oversettelse mellom formater:
-
-- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI-svar**
-- CLI-verktøyet ditt sender OpenAI-format → OmniRoute oversetter → Leverandøren mottar eget format
-- Fungerer med alle verktøy som støtter tilpassede OpenAI-endepunkter
-- **Responssanering** - Fjerner ikke-standardfelter for streng OpenAI SDK-kompatibilitet
-- **Rollenormalisering** — `developer` → `system` for ikke-OpenAI; `system` → `user` for GLM/ERNIE-modeller
-- **Tenk tag-utvinning** — `` blokker → `reasoning_content` for tenkemodeller
-- **Strukturert utgang** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
-
-### 👥 Støtte for flere kontoer
-
-- Legg til flere kontoer per leverandør
-- Auto round-robin eller prioritetsbasert ruting
-- Tilbakeslag til neste konto når en når kvoten
-
-### 🔄 Automatisk tokenoppdatering
-
-- OAuth-tokens oppdateres automatisk før utløp
-- Ingen manuell re-autentisering nødvendig
-- Sømløs opplevelse på tvers av alle leverandører
-
-### 🎨 Egendefinerte kombinasjoner
-
-- Lag ubegrensede modellkombinasjoner
-- 6 strategier: fyll-først, round-robin, kraft-av-to-valg, tilfeldig, minst brukt, kostnadsoptimalisert
-- Del kombinasjoner på tvers av enheter med Cloud Sync
-
-### 🏥 Helse Dashboard
-
-- Systemstatus (oppetid, versjon, minnebruk)
-- Strømbrytertilstander per leverandør (lukket/åpen/halvåpen)
-- Takstgrensestatus og aktive sperringer
-- Signaturbufferstatistikk
-- Latency-telemetri (p50/p95/p99) + hurtigbuffer
-- Tilbakestill helsestatus med ett klikk
-
-### 🔧 Oversetter Lekeplass
-
-OmniRoute inkluderer en kraftig innebygd oversetterlekeplass med **4 moduser** for feilsøking, testing og overvåking av API-oversettelser:
-
-| Modus | Beskrivelse |
-| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻 Lekeplass** | Direkte formatoversettelse – lim inn hvilken som helst API-forespørselstekst og se umiddelbart hvordan OmniRoute oversetter den mellom leverandørformater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Inkluderer eksempelmaler og automatisk gjenkjenning av formater. |
-| **💬 Chat Tester** | Send ekte chatteforespørsler gjennom OmniRoute og se hele rundturen: innspillet ditt, den oversatte forespørselen, leverandørens svar og det oversatte svaret tilbake. Uvurderlig for validering av kombinasjonsruting. |
-| **🧪 Testbenk** | Batch-testmodus – definer flere testtilfeller med forskjellige innganger og forventede utganger, kjør dem alle samtidig og sammenlign resultater på tvers av leverandører og modeller. |
-| **📱 Live Monitor** | Sanntidsovervåking av forespørsler – se innkommende forespørsler mens de strømmer gjennom OmniRoute, se formatoversettelser som skjer live, og identifiser problemer umiddelbart. |
-
-**Tilgang:** Dashboard → Oversetter (sidefelt)
-
-### 💾 Cloud Sync
-
-- Synkroniser leverandører, kombinasjoner og innstillinger på tvers av enheter
-- Automatisk bakgrunnssynkronisering
-- Sikker kryptert lagring
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Evalueringer (evalueringer)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute inkluderer et innebygd evalueringsrammeverk for å teste LLM-responskvaliteten mot et gyldent sett. Få tilgang til den via **Analytics → Evals** i dashbordet.
+Discover the agent:
-### Innebygd gyldent sett
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-Det forhåndsinstallerte "OmniRoute Golden Set" inneholder 10 testcases som dekker:
+Send a task:
-- Hilsen, matematikk, geografi, kodegenerering
-- JSON-formatoverholdelse, oversettelse, markdown
-- Sikkerhetsavslag (skadelig innhold), telling, boolsk logikk
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Evalueringsstrategier
+Manage lifecycle:
-| Strategi | Beskrivelse | Eksempel |
-| ---------- | --------------------------------------------------------------------- | -------------------------------- |
-| `exact` | Utdata må samsvare nøyaktig med | `"4"` |
-| `contains` | Utdata må inneholde understreng (uavhengig av store og små bokstaver) | `"Paris"` |
-| `regex` | Utdata må samsvare med regulært uttrykksmønster | `"1.*2.*3"` |
-| `custom` | Egendefinert JS-funksjon returnerer true/false | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Oppsettveiledning
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Abonnementsleverandører
+🧪 End-to-end protocol validation
+
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
### Claude Code (Pro/Max)
@@ -1066,7 +1438,7 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**Profftips:** Bruk Opus for komplekse oppgaver, Sonnet for hastighet. OmniRoute sporer kvote per modell!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
@@ -1080,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (GRATIS 180K/måned!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1092,7 +1481,7 @@ Models:
gc/gemini-2.5-pro
```
-**Mest verdi:** Enormt gratis nivå! Bruk dette før betalte nivåer.
+**Best Value:** Huge free tier! Use this before paid tiers.
### GitHub Copilot
@@ -1110,88 +1499,88 @@ Models:
-🔑 API nøkkelleverandører
+🔑 API Key Providers
-### NVIDIA NIM (GRATIS 1000 studiepoeng!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Registrer deg: [build.nvidia.com](https://build.nvidia.com)
-2. Få gratis API-nøkkel (1000 slutningspoeng inkludert)
-3. Dashboard → Legg til leverandør → NVIDIA NIM:
- - API-nøkkel: `nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**Modeller:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` og 50+ til
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Profftips:** OpenAI-kompatibel API — fungerer sømløst med OmniRoutes formatoversettelse!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Registrer deg: [platform.deepseek.com](https://platform.deepseek.com)
-2. Få API-nøkkel
-3. Dashboard → Legg til leverandør → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Modeller:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (gratis nivå tilgjengelig!)
+### Groq (Free Tier Available!)
-1. Registrer deg: [console.groq.com](https://console.groq.com)
-2. Få API-nøkkel (gratis nivå inkludert)
-3. Dashboard → Legg til leverandør → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Modeller:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Profftips:** Ultrarask slutning — best for sanntidskoding!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (100+ modeller)
+### OpenRouter (100+ Models)
-1. Registrer deg: [openrouter.ai](https://openrouter.ai)
-2. Få API-nøkkel
-3. Dashboard → Legg til leverandør → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Modeller:** Få tilgang til 100+ modeller fra alle store leverandører gjennom én enkelt API-nøkkel.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Billige leverandører (backup)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (Daglig tilbakestilling, $0,6/1M)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Registrer deg: [Zhipu AI](https://open.bigmodel.cn/)
-2. Få API-nøkkel fra Coding Plan
-3. Dashboard → Legg til API-nøkkel:
- - Leverandør: `glm`
- - API-nøkkel: `your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**Bruk:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Profftips:** Coding Plan tilbyr 3× kvote til 1/7 kostnad! Tilbakestill daglig 10:00.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (5t tilbakestilling, $0,20/1M)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Registrer deg: [MiniMax](https://www.minimax.io/)
-2. Få API-nøkkel
-3. Dashboard → Legg til API-nøkkel
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Bruk:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Profftips:** Billigste alternativet for lang kontekst (1M tokens)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 ($9/mnd leilighet)
+### Kimi K2 ($9/month flat)
-1. Abonner: [Moonshot AI](https://platform.moonshot.ai/)
-2. Få API-nøkkel
-3. Dashboard → Legg til API-nøkkel
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Bruk:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Profftips:** Fast $9/måned for 10M tokens = $0,90/1M effektiv kostnad!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 GRATIS Leverandører (Emergency Backup)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 GRATIS modeller)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1206,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 GRATIS modeller)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1233,9 +1622,9 @@ Models:
-🎨 Lag kombinasjoner
+🎨 Create Combos
-### Eksempel 1: Maksimer abonnement → Billig sikkerhetskopi
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1249,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### Eksempel 2: Kun gratis (nullkostnad)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1264,9 +1653,9 @@ Cost: $0 forever!
-🔧 CLI-integrasjon
+🔧 CLI Integration
-### Markør IDE
+### Cursor IDE
```
Settings → Models → Advanced:
@@ -1277,7 +1666,7 @@ Settings → Models → Advanced:
### Claude Code
-Bruk **CLI Tools**-siden i dashbordet for ett-klikks konfigurasjon, eller rediger `~/.claude/settings.json` manuelt.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1290,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Alternativ 1 – Dashboard (anbefalt):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Alternativ 2 — Manuell:** Rediger `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1312,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **Merk:** OpenClaw fungerer bare med lokale OmniRoute. Bruk `127.0.0.1` i stedet for `localhost` for å unngå problemer med IPv6-oppløsning.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### Cline / Fortsett / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1324,96 +1713,231 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Feilsøking
+## Feilsøking
-Klikk for å utvide feilsøkingsveiledningen
+Click to expand troubleshooting guide
-**«Språkmodellen ga ikke meldinger»**
+**"Language model did not provide messages"**
-- Leverandørkvoten er oppbrukt → Sjekk dashboardkvotesporing
-- Løsning: Bruk kombinasjonsalternativ eller bytt til et billigere nivå
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**Satsbegrensning**
+**Rate limiting**
-- Abonnementskvote ut → Fallback til GLM/MiniMax
-- Legg til kombinasjon: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**OAuth-token er utløpt**
+**OAuth token expired**
-- Automatisk oppdatering av OmniRoute
-- Hvis problemene vedvarer: Dashboard → Leverandør → Koble til på nytt
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Høye kostnader**
+**High costs**
-- Sjekk bruksstatistikk i Dashboard → Kostnader
-- Bytt primærmodell til GLM/MiniMax
-- Bruk gratis nivå (Gemini CLI, iFlow) for ikke-kritiske oppgaver
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Dashboard åpnes på feil port**
+**Dashboard/API ports are wrong**
-- Sett `PORT=20128` og `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Skysynkroniseringsfeil**
+**Cloud sync errors**
-- Bekreft at `BASE_URL` peker på løpeforekomsten din
-- Bekreft `CLOUD_URL` poeng til det forventede skyendepunktet
-- Hold `NEXT_PUBLIC_*` verdier på linje med verdiene på tjenersiden
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Første pålogging fungerer ikke**
+**First login not working**
-- Sjekk `INITIAL_PASSWORD` i `.env`
-- Hvis det ikke er angitt, er reservepassordet `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Ingen forespørselslogger**
+**No request logs**
-- Sett `ENABLE_REQUEST_LOGS=true` i `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Test viser «Ugyldig» for OpenAI-kompatible leverandører**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Mange leverandører avslører ikke et `/models`-endepunkt
-- OmniRoute v1.0.6+ inkluderer reservevalidering via chatfullføringer
-- Sørg for at basis-URL inkluderer suffikset `/v1`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 OAuth
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ VIKTIG for bruk av OmniRoute med VPS/Docker/server-fjernkontroll**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-Os testedores **Antigravity** og **Gemini CLI** usam **Google OAuth 2.0** for autenticação. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs pre-cadastradas no Google Cloud Console do aplicativo.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-Som credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (eks: `https://omniroute.meuservidor.com`), o Google avviser autenticação com:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### Løsning: Konfigurer OAuth-tilbehør
+#### Solution: Configure your own OAuth credentials
-Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com en URI for seu service.
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
#### Passo a passo
-**1. Tilgang til Google Cloud Console**
+**1. Acesse o Google Cloud Console**
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
**2. Crie um novo OAuth 2.0 Client ID**
-- Klikk dem **"+ Opprett legitimasjon"** → **"OAuth-klient-ID"**
-- Tipo de aplicativo: **"Nettapplikasjon"**
-- Navn: escolha qualquer nome (eks.: `OmniRoute Remote`)
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. Adicione som autorisert omdirigerings-URI**
+**3. Adicione as Authorized Redirect URIs**
-Ingen campo **"Authorized redirect URIs"**, adicione:
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
@@ -1421,11 +1945,11 @@ https://seu-servidor.com/callback
> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. Salve e copy as credenciais**
+**4. Salve e copie as credenciais**
Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. Konfigurer som variáveis de ambiente**
+**5. Configure as variáveis de ambiente**
No seu `.env` (ou nas variáveis de ambiente do Docker):
@@ -1452,150 +1976,145 @@ docker restart omniroute
**7. Tente conectar novamente**
-Dashboard → Leverandører → Antigravity (ou Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
-Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e autenticação funcionará.
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### Midlertidig midlertidig løsning (som konfigureres på forhånd)
+#### Workaround temporário (sem configurar credenciais próprias)
Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. O OmniRoute abrirá en URL fra autorização til Google
-2. Após você autorizar, o Google tentará redirecionar for `localhost` (que falha no servidor remoto)
-3. **Kopier en URL fullført** da barra de endereço do seu nettleseren (mesmo que a página não carregue)
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
-5. Klikk på **"Koble til"**
+5. Clique em **"Connect"**
-> Este workaround funciona porque or código de autorização na URL é válido independente do redirect ter carregado or não.
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **Kjøretid**: Node.js 18–22 LTS (⚠️ Node.js 24+ støttes **ikke** — `better-sqlite3` native binærfiler er inkompatible)
-- **Språk**: TypeScript 5.9 — **100 % TypeScript** på tvers av `src/` og `open-sse/` (v1.0.6)
-- **Rammeverk**: Next.js 16 + React 19 + Tailwind CSS 4
-- **Database**: LowDB (JSON) + SQLite (domenetilstand + proxy-logger)
-- **Streaming**: Server-sendte hendelser (SSE)
-- **Auth**: OAuth 2.0 (PKCE) + JWT + API-nøkler
-- **Test**: Node.js-testløper (368+ enhetstester)
-- **CI/CD**: GitHub-handlinger (automatisk npm-publisering + Docker Hub ved utgivelse)
-- **Nettsted**: [omniroute.online](https://omniroute.online)
-- **Pakke**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **Dokker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **Resiliens**: Strømbryter, eksponentiell backoff, anti-trdnende flokk, TLS-spoofing
-
----
-
-## 📖 Dokumentasjon
-
-| Dokument | Beskrivelse |
-| -------------------------------------------- | ---------------------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | Leverandører, kombinasjoner, CLI-integrasjon, distribusjon |
-| [API Reference](docs/API_REFERENCE.md) | Alle endepunkter med eksempler |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | Vanlige problemer og løsninger |
-| [Architecture](docs/ARCHITECTURE.md) | Systemarkitektur og innvendig |
-| [Contributing](CONTRIBUTING.md) | Utviklingsoppsett og retningslinjer |
-| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0-spesifikasjon |
-| [Security Policy](SECURITY.md) | Sårbarhetsrapportering og sikkerhetspraksis |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Komplett guide: VM + nginx + Cloudflare-oppsett |
-| [Features Gallery](docs/FEATURES.md) | Visuell dashbordomvisning med skjermbilder |
-
-### 📸 Forhåndsvisning av dashbord
+## 🛠️ Tech Stack
-Klikk for å se skjermbilder av dashbordet
+Click to expand tech stack details
-| Side | Skjermbilde |
-| ----------------- | ------------------------------------------------- |
-| **Tilbydere** |  |
-| **Komboer** |  |
-| **Analyse** |  |
-| **Helse** |  |
-| **Oversetter** |  |
-| **Innstillinger** |  |
-| **CLI-verktøy** |  |
-| **Brukslogger** |  |
-| **Endepunkt** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## Dokumentasjon
-OmniRoute har **210+ funksjoner planlagt** på tvers av flere utviklingsfaser. Her er nøkkelområdene:
-
-| Kategori | Planlagte funksjoner | Høydepunkter |
-| -------------------------------- | -------------------- | ---------------------------------------------------------------------------------------------- |
-| 🧠 **Routing og intelligens** | 25+ | Ruting med lavest ventetid, tag-basert ruting, forhåndskontroll av kvoter, valg av P2C-konto |
-| 🔒 **Sikkerhet og overholdelse** | 20+ | SSRF-herding, tilsløring av legitimasjon, hastighetsgrense per endepunkt, styringsnøkkelomfang |
-| 📊 **Observerbarhet** | 15+ | OpenTelemetry-integrasjon, kvoteovervåking i sanntid, kostnadssporing per modell |
-| 🔄 **Tilbyderintegrasjoner** | 20+ | Dynamisk modellregister, leverandørnedkjøling, multi-konto Codex, Copilot-kvoteparsing |
-| ⚡ **Ytelse** | 15+ | Dobbelt hurtigbufferlag, promptbuffer, svarbuffer, streaming keepalive, batch API |
-| 🌐 **Økosystem** | 10+ | WebSocket API, config hot-reload, distribuert config store, kommersiell modus |
-
-### 🔜 Kommer snart
-
-- 🔗 **OpenCode Integration** — Innebygd leverandørstøtte for OpenCode AI-kodings-IDE
-- 🔗 **TRAE-integrasjon** — Full støtte for utviklingsrammeverket for TRAE AI
-- 📦 **Batch API** — Asynkron batchbehandling for bulkforespørsler
-- 🎯 **Tag-basert ruting** — Ruteforespørsler basert på tilpassede tagger og metadata
-- 💰 **Laveste kostnadsstrategi** — Velg automatisk den billigste tilgjengelige leverandøren
-
-> 📝 Full funksjonsspesifikasjoner tilgjengelig i [link](docs/new-features/) (217 detaljerte spesifikasjoner)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 Bidragsytere
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Hvordan bidra
+### How to Contribute
-1. Fordel depotet
-2. Lag din funksjonsgren (`git checkout -b feature/amazing-feature`)
-3. Bekreft endringene dine (`git commit -m 'Add amazing feature'`)
-4. Skyv til grenen (`git push origin feature/amazing-feature`)
-5. Åpne en pull-forespørsel
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Se [CONTRIBUTING.md](CONTRIBUTING.md) for detaljerte retningslinjer.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Slipper en ny versjon
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Stjernehistorie
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Anerkjennelser
+## 🙏 Acknowledgments
-Spesiell takk til **[9router](https://github.com/decolua/9router)** av **[decolua](https://github.com/decolua)** — det originale prosjektet som inspirerte denne gaffelen. OmniRoute bygger på det utrolige grunnlaget med tilleggsfunksjoner, multimodale APIer og en full TypeScript-omskriving.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Spesiell takk til **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — den originale Go-implementeringen som inspirerte denne JavaScript-porten.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Lisens
+## Lisens
-MIT-lisens - se [LICENSE](LICENSE) for detaljer.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Bygget med ❤️ for utviklere som koder 24/7
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/no/docs/FEATURES.md b/docs/i18n/no/docs/FEATURES.md
new file mode 100644
index 0000000000..7df4ba51a9
--- /dev/null
+++ b/docs/i18n/no/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Norsk)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/phi/README.md b/docs/i18n/phi/README.md
index 574beff116..0e128e685c 100644
--- a/docs/i18n/phi/README.md
+++ b/docs/i18n/phi/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — Ang Libreng AI Gateway
+# 🚀 OmniRoute — The Free AI Gateway (Filipino)
-### Huwag kailanman ihinto ang coding. Smart routing sa **LIBRE at murang mga modelo ng AI** na may awtomatikong fallback.
-
-_Iyong unibersal na API proxy — isang endpoint, 67+ provider, zero downtime._
-
-**Mga Pagkumpleto ng Chat • Mga Pag-embed • Pagbuo ng Imahe • Audio • Pag-rerank • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Libreng AI Provider para sa iyong mga paboritong coding agent
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Ikonekta ang anumang AI-powered IDE o CLI tool sa pamamagitan ng OmniRoute — libreng API gateway para sa walang limitasyong coding._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _Ikonekta ang anumang AI-powered IDE o CLI tool sa pamamagitan ng OmniRoute —
|
-📡 Kumonekta ang lahat ng ahente sa pamamagitan ng http://localhost:20128/v1 o http://cloud.omniroute.online/v1 >http://cloud.omniroute.online/v1 —iisang modelo at hindi config. quota
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Bakit OmniRoute?
-
-**Ihinto ang pag-aaksaya ng pera at pag-abot sa mga limitasyon:**
-
--
Mag-e-expire ang quota ng subscription na hindi nagamit bawat buwan
--
Pinipigilan ka ng mga limitasyon sa rate sa mid-coding
--
Mga Mamahaling API ($20-50/buwan bawat provider)
--
Manu-manong paglipat sa pagitan ng mga provider
-
-**Sumalutas ito ng OmniRoute:**
-
-- ✅ **I-maximize ang mga subscription** - Subaybayan ang quota, gamitin ang bawat bit bago i-reset
-- ✅ **Auto fallback** - Subscription → API Key → Mura → Libre, zero downtime
-- ✅ **Multi-account** - Round-robin sa pagitan ng mga account sa bawat provider
-- ✅ **Universal** - Gumagana sa Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, anumang CLI tool
-
----
-
-## 📧 Suporta
-
-> 💬 **Sumali sa aming komunidad!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Humingi ng tulong, magbahagi ng mga tip, at manatiling updated.
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **Mga Isyu**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Orihinal na Proyekto**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Paano Ito Gumagana
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,451 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 Ano ang Lutasin ng OmniRoute — 30 Tunay na Pain Points at Mga Kaso ng Paggamit
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Ang bawat developer na gumagamit ng mga tool ng AI ay nahaharap sa mga problemang ito araw-araw.** Binuo ang OmniRoute para lutasin ang lahat ng ito — mula sa mga pag-overrun sa gastos hanggang sa mga panrehiyong bloke, mula sa mga sirang daloy ng OAuth hanggang sa mga pagpapatakbo ng protocol at pagmamasid sa enterprise.
+> **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 protocol operations and enterprise observability.
-💸 1. "Nagbabayad ako para sa isang mamahaling subscription ngunit naaantala pa rin ng mga limitasyon"
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Nagbabayad ang mga developer ng $20–200/buwan para sa Claude Pro, Codex Pro, o GitHub Copilot. Kahit na nagbabayad, may kisame ang quota — 5h ng paggamit, lingguhang limitasyon, o bawat minutong limitasyon sa rate. Sesyon sa kalagitnaan ng coding, hihinto sa pagtugon ang provider at nawawalan ng daloy at pagiging produktibo ang developer.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **Smart 4-Tier Fallback** — Kung maubusan ang quota ng subscription, awtomatikong magre-redirect sa API Key → Murang → Libre nang walang manu-manong interbensyon
-- **Real-Time Quota Tracking** — Ipinapakita ang pagkonsumo ng token sa real-time na may reset countdown (5h, araw-araw, lingguhan)
-- **Multi-Account Support** — Maramihang account sa bawat provider na may auto round-robin — kapag naubos ang isa, lilipat sa susunod
-- **Custom Combos** — Nako-customize na fallback chain na may 6 na diskarte sa pagbabalanse (fill-first, round-robin, P2C, random, hindi gaanong ginagamit, cost-optimized)
-- **Codex Business Quotas** — Direktang pagsubaybay sa quota ng workspace ng Negosyo/Team sa dashboard
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. "Kailangan kong gumamit ng maraming provider ngunit bawat isa ay may iba't ibang API"
+🔌 2. "I need to use multiple providers but each has a different API"
-Gumagamit ang OpenAI ng isang format, gumagamit si Claude (Anthropic) ng isa pa, isa pa ang Gemini. Kung gusto ng isang dev na subukan ang mga modelo mula sa iba't ibang provider o fallback sa pagitan nila, kailangan nilang i-configure muli ang mga SDK, baguhin ang mga endpoint, harapin ang mga hindi tugmang format. Ang mga custom na provider (FriendLI, NIM) ay may hindi karaniwang mga endpoint ng modelo.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **Pinag-isang Endpoint** — Isang `http://localhost:20128/v1` ang nagsisilbing proxy para sa lahat ng 67+ provider
-- **Format Translation** — Awtomatiko at transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-- **Response Sanitization** — Tinatanggal ang mga hindi karaniwang field (`x_groq`, `usage_breakdown`, `service_tier`) na sumisira sa OpenAI SDK v1.83+
-- **Role Normalization** — Kino-convert ang `developer` → `system` para sa mga provider na hindi OpenAI; `system` → `user` para sa GLM/ERNIE
-- **Think Tag Extraction** — Kinukuha ang `` block mula sa mga modelo tulad ng DeepSeek R1 sa standardized `reasoning_content`
-- **Structured Output para sa Gemini** — `json_schema` → `responseMimeType`/`responseSchema` awtomatikong conversion
-- **`stream` ang mga default sa `false`** — Naka-align sa OpenAI spec, iniiwasan ang hindi inaasahang SSE sa Python/Rust/Go SDK
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. "Bina-block ng aking AI provider ang aking rehiyon/bansa"
+🌐 3. "My AI provider blocks my region/country"
-Hinaharang ng mga provider tulad ng OpenAI/Codex ang pag-access mula sa ilang partikular na heyograpikong rehiyon. Nakakakuha ang mga user ng mga error tulad ng `unsupported_country_region_territory` sa panahon ng mga koneksyon sa OAuth at API. Ito ay lalo na nakakabigo para sa mga developer mula sa pagbuo ng mga bansa.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **3-Level Proxy Config** — Nako-configure na proxy sa 3 antas: global (lahat ng trapiko), bawat provider (isang provider lang), at bawat koneksyon/key
-- **Color-Coded Proxy Badges** — Visual indicator: 🟢 global proxy, 🟡 provider proxy, 🔵 connection proxy, palaging ipinapakita ang IP
-- **OAuth Token Exchange Through Proxy** — Ang daloy ng OAuth ay dumadaan din sa proxy, na nilulutas ang `unsupported_country_region_territory`
-- **Mga Pagsusuri sa Koneksyon sa pamamagitan ng Proxy** — Ginagamit ng mga pagsubok sa koneksyon ang naka-configure na proxy (wala nang direktang bypass)
-- **SOCKS5 Support** — Buong SOCKS5 proxy support para sa papalabas na pagruruta
-- **TLS Fingerprint Spoofing** — tulad ng browser na TLS fingerprint sa pamamagitan ng `wreq-js` para i-bypass ang pag-detect ng bot
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. "Gusto kong gumamit ng AI para sa coding ngunit wala akong pera"
+🆓 4. "I want to use AI for coding but I have no money"
-Hindi lahat ay maaaring magbayad ng $20–200/buwan para sa mga subscription sa AI. Ang mga mag-aaral, mga dev mula sa mga umuusbong na bansa, mga hobbyist, at mga freelancer ay nangangailangan ng access sa mga de-kalidad na modelo sa zero cost.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **Libreng Tier Provider Built-in** — Native na suporta para sa 100% libreng provider: iFlow (8 unlimited na modelo), Qwen (3 unlimited na modelo), Kiro (Claude nang libre), Gemini CLI (180K/buwan libre)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/buwan na walang downtime
-- **NVIDIA NIM Free Credits** — 1000 libreng credits na isinama
-- **Cost Optimized Strategy** — Istratehiya sa pagruruta na awtomatikong pinipili ang pinakamurang available na provider
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. "Kailangan kong protektahan ang aking AI gateway mula sa hindi awtorisadong pag-access"
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Kapag inilantad ang isang gateway ng AI sa network (LAN, VPS, Docker), maaaring kumonsumo ng mga token/quota ng developer ang sinumang may address. Kung walang proteksyon, ang mga API ay mahina sa maling paggamit, agarang pag-iniksyon, at pang-aabuso.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **API Key Management** — Pagbuo, pag-ikot, at saklaw ng bawat provider na may nakalaang `/dashboard/api-manager` na pahina
-- **Mga Pahintulot sa Antas ng Modelo** — Limitahan ang mga API key sa mga partikular na modelo (`openai/*`, mga wildcard pattern), na may Allow All/Restrict toggle
-- **API Endpoint Protection** — Mangangailangan ng key para sa `/v1/models` at i-block ang mga partikular na provider mula sa listahan
-- **Auth Guard + CSRF Protection** — Lahat ng mga ruta ng dashboard ay protektado ng `withAuth` middleware + CSRF token
-- **Rate Limiter** — Per-IP rate na naglilimita sa mga na-configure na window
-- **IP Filtering** — Allowlist/blocklist para sa access control
-- **Prompt Injection Guard** — Sanitization laban sa malisyosong prompt pattern
-- **AES-256-GCM Encryption** — Ang mga kredensyal ay naka-encrypt sa pahinga
+- **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. "Bumaba ang provider ko at nawala ang coding flow ko"
+🛑 6. "My provider went down and I lost my coding flow"
-Ang mga tagapagbigay ng AI ay maaaring maging hindi matatag, magbalik ng 5xx na mga error, o maabot ang mga pansamantalang limitasyon sa rate. Kung ang isang dev ay nakadepende sa isang provider, maaantala sila. Kung walang mga circuit breaker, ang mga paulit-ulit na pagsubok ay maaaring mag-crash sa application.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **Circuit Breaker per-model** — Awtomatikong buksan/sarado na may mga na-configure na threshold at cooldown (Sarado/Bukas/Kalahating Bukas)
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
- **Exponential Backoff** — Progressive retry delays
-- **Anti-Thundering Herd** — Mutex + semaphore na proteksyon laban sa kasabay na muling pagsubok na mga bagyo
-- **Combo Fallback Chains** — Kung nabigo ang pangunahing provider, awtomatikong mahuhulog sa chain nang walang interbensyon
-- **Combo Circuit Breaker** — Awtomatikong idi-disable ang mga nabigong provider sa loob ng combo chain
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. "Ang pag-configure ng bawat AI tool ay nakakapagod at paulit-ulit"
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Gumagamit ang mga developer ng Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Ang bawat tool ay nangangailangan ng ibang config (API endpoint, key, model). Ang muling pag-configure kapag lumipat ng mga provider o modelo ay isang pag-aaksaya ng oras.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **CLI Tools Dashboard** — Nakatuon na page na may isang-click na setup para sa Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-- **GitHub Copilot Config Generator** — Bumubuo ng `chatLanguageModels.json` para sa VS Code na may maramihang pagpili ng modelo
-- **Onboarding Wizard** — May gabay na 4-step na pag-setup para sa mga unang beses na user
-- **Isang endpoint, lahat ng modelo** — I-configure ang `http://localhost:20128/v1` nang isang beses, i-access ang 67+ provider
+- **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 67+ providers
-🔑 8. "Impiyerno ang pamamahala sa mga token ng OAuth mula sa maraming provider"
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot — lahat ay gumagamit ng OAuth 2.0 na may mga mag-e-expire na token. Kailangang muling mag-authenticate ang mga developer, harapin ang `client_secret is missing`, `redirect_uri_mismatch`, at mga pagkabigo sa mga malalayong server. Ang OAuth sa LAN/VPS ay partikular na may problema.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **Auto Token Refresh** — Ang mga token ng OAuth ay nagre-refresh sa background bago mag-expire
-- **OAuth 2.0 (PKCE) Built-in** — Awtomatikong daloy para sa Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **Multi-Account OAuth** — Maramihang account bawat provider sa pamamagitan ng pagkuha ng token ng JWT/ID
-- **OAuth LAN/Remote Fix** — Pribadong IP detection para sa `redirect_uri` + manual URL mode para sa mga malalayong server
-- **OAuth Behind Nginx** — Gumagamit ng `window.location.origin` para sa reverse proxy compatibility
-- **Remote OAuth Guide** — Step-by-step na gabay para sa mga kredensyal ng Google Cloud sa VPS/Docker
+- **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. "Hindi ko alam kung magkano ang ginagastos ko o kung saan"
+📊 9. "I don't know how much I'm spending or where"
-Gumagamit ang mga developer ng maraming bayad na provider ngunit walang pinag-isang pagtingin sa paggastos. Ang bawat provider ay may sariling dashboard ng pagsingil, ngunit walang pinagsama-samang view. Maaaring tumambak ang mga hindi inaasahang gastos.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **Cost Analytics Dashboard** — Per-token cost tracking at pamamahala ng badyet bawat provider
-- **Mga Limitasyon sa Badyet bawat Tier** — Paggastos ng kisame sa bawat tier na nagti-trigger ng awtomatikong fallback
-- **Per-Model Pricing Configuration** — Nako-configure na mga presyo bawat modelo
-- **Mga Istatistika ng Paggamit Bawat API Key** — Bilang ng kahilingan at timestamp na huling ginamit bawat key
-- **Analytics Dashboard** — Mga stat card, chart ng paggamit ng modelo, talahanayan ng provider na may mga rate ng tagumpay at latency
+- **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. "Hindi ko matukoy ang mga error at problema sa mga tawag sa AI"
+🐛 10. "I can't diagnose errors and problems in AI calls"
-Kapag nabigo ang isang tawag, hindi alam ng dev kung ito ay isang limitasyon sa rate, nag-expire na token, maling format, o error sa provider. Mga fragment na log sa iba't ibang terminal. Kung walang pagmamasid, ang pag-debug ay trial-and-error.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **Unified Logs Dashboard** — 4 na tab: Request Logs, Proxy Logs, Audit Logs, Console
-- **Console Log Viewer** — Real-time na terminal-style viewer na may color-coded level, auto-scroll, paghahanap, filter
-- **SQLite Proxy Logs** — Mga paulit-ulit na log na nakaligtas sa pag-restart ng server
-- **Translator Playground** — 4 na mode ng pag-debug: Playground (pagsasalin ng format), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
-- **Pag-log na Nakabatay sa File na may Pag-ikot** — Kinukuha ng Console interceptor ang lahat sa log ng JSON na may pag-ikot batay sa laki
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. "Ang pag-deploy at pagpapanatili ng gateway ay kumplikado"
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Ang pag-install, pag-configure, at pagpapanatili ng AI proxy sa iba't ibang kapaligiran (lokal, VPS, Docker, cloud) ay labor-intensive. Ang mga problema tulad ng mga hardcoded na path, `EACCES` sa mga direktoryo, port conflict, at cross-platform build ay nagdaragdag ng friction.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **npm global install** — `npm install -g omniroute && omniroute` — tapos na
+- **npm global install** — `npm install -g omniroute && omniroute` — done
- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Docker Compose Profiles** — `base` (walang CLI tool) at `cli` (na may Claude Code, Codex, OpenClaw)
-- **Electron Desktop App** — Native app para sa Windows/macOS/Linux na may system tray, auto-start, offline mode
-- **Split-Port Mode** — API at Dashboard sa magkahiwalay na port para sa mga advanced na sitwasyon (reverse proxy, container networking)
-- **Cloud Sync** — I-configure ang pag-synchronize sa mga device sa pamamagitan ng Cloudflare Workers
-- **DB Backup** — Awtomatikong pag-backup, pagpapanumbalik, pag-export at pag-import ng lahat ng mga setting
+- **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. "Ang interface ay English-only at ang aking team ay hindi nagsasalita ng English"
+🌍 12. "The interface is English-only and my team doesn't speak English"
-Ang mga koponan sa mga bansang hindi nagsasalita ng Ingles, lalo na sa Latin America, Asia, at Europe, ay nakikipagpunyagi sa mga interface na Ingles lamang. Binabawasan ng mga hadlang sa wika ang pag-aampon at pinapataas ang mga error sa pagsasaayos.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **Dashboard i18n — 30 Wika** — Lahat ng 500+ key na isinalin kasama ang Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Vietnamese
-- **RTL Support** — Kanan-pakaliwa na suporta para sa Arabic at Hebrew
-- **Multi-Language READMEs** — 30 kumpletong pagsasalin ng dokumentasyon
-- **Language Selector** — Globe icon sa header para sa real-time na paglipat
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. "Kailangan ko ng higit pa sa chat — kailangan ko ng mga embed, larawan, audio"
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-Ang AI ay hindi lamang pagkumpleto ng chat. Kailangan ng mga dev na bumuo ng mga larawan, mag-transcribe ng audio, gumawa ng mga pag-embed para sa RAG, mag-rerank ng mga dokumento, at katamtamang nilalaman. Ang bawat API ay may iba't ibang endpoint at format.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **Mga Pag-embed** — `/v1/embeddings` na may 6 na provider at 9+ na modelo
-- **Pagbuo ng Larawan** — `/v1/images/generations` na may 10 provider at 20+ modelo (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) at SD WebUI
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + mga kasalukuyang provider
-- **Moderations** — `/v1/moderations` — Mga pagsusuri sa kaligtasan ng content
-- **Muling pagraranggo** — `/v1/rerank` — Muling pagraranggo ng kaugnayan ng dokumento
-- **Responses API** — Buong `/v1/responses` na suporta para sa Codex
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. "Wala akong paraan para subukan at paghambingin ang kalidad sa mga modelo"
+🧪 14. "I have no way to test and compare quality across models"
-Gustong malaman ng mga developer kung aling modelo ang pinakamainam para sa kanilang kaso ng paggamit — code, pagsasalin, pangangatwiran — ngunit mabagal ang paghahambing nang manu-mano. Walang pinagsamang mga tool sa eval ang umiiral.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **LLM Evaluations** — Golden set testing na may 10 pre-loaded na case na sumasaklaw sa mga pagbati, matematika, heograpiya, pagbuo ng code, pagsunod sa JSON, pagsasalin, markdown, pagtanggi sa kaligtasan
-- **4 na Istratehiya sa Pagtutugma** — `exact`, `contains`, `regex`, `custom` (JS function)
-- **Translator Playground Test Bench** — Batch testing na may maraming input at inaasahang output, cross-provider na paghahambing
-- **Chat Tester** — Buong round-trip na may visual response rendering
-- **Live Monitor** — Real-time na stream ng lahat ng kahilingang dumadaloy sa proxy
+- **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. "Kailangan kong mag-scale nang hindi nawawala ang performance"
+📈 15. "I need to scale without losing performance"
-Habang lumalaki ang dami ng kahilingan, nang walang pag-cache sa parehong mga tanong ay bumubuo ng mga dobleng gastos. Nang walang idempotency, humihiling ang duplicate sa pagpoproseso ng basura. Dapat igalang ang mga limitasyon sa rate ng bawat provider.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **Semantic Cache** — Ang two-tier na cache (pirma + semantiko) ay binabawasan ang gastos at latency
-- **Request Idempotency** — 5s deduplication window para sa magkaparehong mga kahilingan
-- **Pagtukoy sa Limitasyon ng Rate** — RPM ng bawat provider, min na gap, at max na kasabay na pagsubaybay
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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 na cache para sa performance ng produksyon
-- **Health Dashboard na may Telemetry** — p50/p95/p99 latency, cache stats, uptime
+- **API Key Validation Cache** — 3-tier cache for production performance
+- **Health Dashboard with Telemetry** — p50/p95/p99 latency, cache stats, uptime
-🤖 16. "Gusto kong kontrolin ang gawi ng modelo sa buong mundo"
+🤖 16. "I want to control model behavior globally"
-Mga developer na gusto ang lahat ng tugon sa isang partikular na wika, na may partikular na tono, o gustong limitahan ang mga token ng pangangatwiran. Ang pag-configure nito sa bawat tool/kahilingan ay hindi praktikal.
+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.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- **System Prompt Injection** — Inilapat ang pandaigdigang prompt sa lahat ng kahilingan
-- **Thinking Budget Validation** — Reasoning token allocation control bawat kahilingan (passthrough, auto, custom, adaptive)
-- **6 Mga Istratehiya sa Pagruruta** — Mga pandaigdigang diskarte na tumutukoy kung paano ipinamamahagi ang mga kahilingan
-- **Wildcard Router** — Ang mga pattern ng `provider/*` ay dynamic na ruta sa anumang provider
-- **Combo Enable/Disable Toggle** — I-toggle ang mga combo nang direkta mula sa dashboard
-- **Toggle ng Provider** — I-enable/i-disable ang lahat ng koneksyon para sa isang provider sa isang click
-- **Mga Naka-block na Provider** — Ibukod ang mga partikular na provider mula sa listahan ng `/v1/models`
+- **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
-🧰 17. "Kailangan ko ng mga tool sa MCP bilang mga first-class na kakayahan ng produkto"
+🧰 17. "I need MCP tools as first-class product capabilities"
-Maraming AI gateway ang naglalantad sa MCP bilang isang nakatagong detalye ng pagpapatupad. Ang mga koponan ay nangangailangan ng isang nakikita, napapamahalaang layer ng operasyon.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- Lumilitaw ang MCP sa dashboard navigation at tab ng endpoint protocol
-- Nakatuon na pahina ng pamamahala ng MCP na may proseso, mga tool, saklaw, at pag-audit
-- Built-in na quick-start para sa `omniroute --mcp` at onboarding ng kliyente
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "Kailangan ko ng A2A orchestration na may sync + stream task path"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Ang mga daloy ng trabaho ng ahente ay nangangailangan ng parehong direktang tugon at matagal na naka-stream na pagpapatupad na may kontrol sa lifecycle.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- A2A JSON-RPC endpoint (`POST /a2a`) na may `message/send` at `message/stream`
-- SSE streaming na may terminal state propagation
-- Mga task lifecycle API para sa `tasks/get` at `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. "Kailangan ko ng totoong kalusugan ng proseso ng MCP, hindi nahulaan ang status"
+🛰️ 19. "I need real MCP process health, not guessed status"
-Kailangang malaman ng mga operational team kung talagang buhay ang MCP, hindi lang kung maaabot ang isang API.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- Runtime heartbeat file na may PID, timestamp, transport, bilang ng tool, at mode ng saklaw
-- MCP status API na pinagsasama ang tibok ng puso + kamakailang aktibidad
-- Mga UI status card para sa pagiging bago ng proseso/uptime/heartbeat
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "Kailangan ko ng auditable MCP tool execution"
+📋 20. "I need auditable MCP tool execution"
-Kapag ang mga tool ay nag-mutate ng config o nag-trigger ng mga pagkilos ng ops, ang mga team ay nangangailangan ng forensic traceability.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- SQLite-backed audit logging para sa mga tawag sa tool ng MCP
-- Mga filter ayon sa tool, tagumpay/kabiguan, API key, at pagination
-- Dashboard audit table + stats endpoints para sa automation
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "Kailangan ko ng mga saklaw na pahintulot ng MCP sa bawat pagsasama"
+🔐 21. "I need scoped MCP permissions per integration"
-Ang iba't ibang mga kliyente ay dapat magkaroon ng hindi gaanong pribilehiyong pag-access sa mga kategorya ng tool.
+Different clients should have least-privilege access to tool categories.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- 9 na butil na saklaw ng MCP para sa kontroladong pag-access ng tool
-- Pagpapatupad ng saklaw at kakayahang makita sa UI ng pamamahala ng MCP
-- Ligtas na default na postura para sa operational tooling
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. "Kailangan ko ng mga kontrol sa pagpapatakbo nang hindi nagre-redeploy"
+⚙️ 22. "I need operational controls without redeploying"
-Ang mga koponan ay nangangailangan ng mabilis na mga pagbabago sa runtime sa panahon ng mga insidente o mga kaganapan sa gastos.
+Teams need quick runtime changes during incidents or cost events.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- Lumipat ng combo activation nang direkta mula sa MCP dashboard
-- Ilapat ang mga profile ng katatagan mula sa paunang natukoy na mga pack ng patakaran
-- I-reset ang estado ng circuit breaker mula sa parehong panel ng mga operasyon
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. "Kailangan ko ng live A2A task lifecycle visibility at pagkansela"
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Kung walang lifecycle visibility, ang mga insidente ng gawain ay nagiging mahirap subukan.
+Without lifecycle visibility, task incidents become hard to triage.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- Listahan ng gawain/pag-filter ayon sa estado/kasanayan sa pagination
-- Mag-drill-down sa metadata ng gawain, mga kaganapan, at mga artifact
-- Endpoint ng pagkansela ng gawain at pagkilos ng UI na may kumpirmasyon
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. "Kailangan ko ng mga aktibong sukatan ng stream para sa A2A load"
+🌊 24. "I need active stream metrics for A2A load"
-Ang mga stream ng workflow ay nangangailangan ng operational insight sa concurrency at live na koneksyon.
+Streaming workflows require operational insight into concurrency and live connections.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- Mga aktibong stream counter na isinama sa A2A status
-- Mga bilang ng huling timestamp ng gawain at bawat estado
-- A2A dashboard card para sa real-time na pagsubaybay sa ops
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "Kailangan ko ng karaniwang pagtuklas ng ahente para sa mga kliyente"
+🪪 25. "I need standard agent discovery for clients"
-Ang mga panlabas na kliyente at orkestra ay nangangailangan ng metadata na nababasa ng makina para sa onboarding.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- Nalantad ang Agent Card sa `/.well-known/agent.json`
-- Mga kakayahan at kasanayan na ipinapakita sa management UI
-- Kasama sa A2A status API ang metadata ng pagtuklas para sa automation
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "Kailangan ko ang pagtuklas ng protocol sa UX ng produkto"
+🧭 26. "I need protocol discoverability in the product UX"
-Kung hindi matuklasan ng mga user ang mga surface ng protocol, bumababa ang kalidad ng pag-aampon at suporta.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- Mga entry sa sidebar para sa MCP at A2A
-- Tab na Mga Protokol ng pahina ng Endpoint na may mabilis na pagsisimula at katayuan
-- Mga link mula sa pangkalahatang-ideya hanggang sa nakalaang mga dashboard ng pamamahala
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "Kailangan ko ng end-to-end protocol validation sa mga totoong kliyente"
+🧪 27. "I need end-to-end protocol validation with real clients"
-Ang mga kunwaring pagsubok ay hindi sapat upang patunayan ang pagiging tugma ng protocol bago ilabas.
+Mock tests are not enough to validate protocol compatibility before release.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- E2E suite na nagbo-boot ng app at gumagamit ng totoong MCP SDK client transport
-- Mga pagsubok sa A2A client para sa pagtuklas, pagpapadala, pag-stream, pagkuha, at pagkansela ng mga daloy
-- Cross-check assertion laban sa MCP audit at A2A tasks API
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. "Kailangan ko ng pinag-isang observability sa lahat ng interface"
+📡 28. "I need unified observability across all interfaces"
-Ang paghahati ng observability sa pamamagitan ng protocol ay lumilikha ng mga blind spot at mas mahabang MTTR.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- Pinag-isang mga dashboard/log/analytics sa isang produkto
-- Health + audit + humiling ng telemetry sa mga layer ng OpenAI, MCP, at A2A
-- Mga Operational API para sa status at automation
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "Kailangan ko ng isang runtime para sa proxy + tool + orkestrasyon ng ahente"
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Ang pagpapatakbo ng maraming magkakahiwalay na serbisyo ay nagpapataas ng gastos sa pagpapatakbo at mga mode ng pagkabigo.
+Running many separate services increases operational cost and failure modes.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- OpenAI-compatible na proxy, MCP server, at A2A server sa isang stack
-- Nakabahaging auth, resilience, data store, at observability
-- Pare-parehong modelo ng patakaran sa lahat ng surface ng pakikipag-ugnayan
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. "Kailangan kong magpadala ng mga ahenteng daloy ng trabaho nang walang glue-code sprawl"
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Nawawalan ng bilis ang mga koponan kapag nagtatahi ng maraming ad-hoc na serbisyo at script.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Paano ito niresolba ng OmniRoute:**
+**How OmniRoute solves it:**
-- Pinag-isang endpoint na diskarte para sa mga kliyente at ahente
-- Mga built-in na UI sa pamamahala ng protocol at mga daanan sa pagpapatunay ng usok
-- Mga pundasyong handa sa produksyon (seguridad, pag-log, katatagan, backup)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Mga Halimbawang Playbook
+### Example Playbooks (Integrated Use Cases)
-**Playbook A: I-maximize ang bayad na subscription + murang backup**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -708,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Playbook D: Ahente ops sa MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Mabilis na Pagsisimula
+## 🆓 Start Free — Zero Configuration Cost
-**1. I-install sa buong mundo:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Mabilis na Simula
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Magbubukas ang dashboard sa `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| 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 |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Ikonekta ang isang LIBRENG provider:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Dashboard → Mga Provider → Ikonekta ang **Claude Code** o **Antigravity** → OAuth login → Tapos na!
+Optional split-port mode:
-**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
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**Iyon na!** Magsimulang mag-coding gamit ang LIBRENG mga modelo ng AI.
+### 2) Connect providers and create your API key
-**Alternatibong — tumakbo mula sa pinagmulan:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-Available ang OmniRoute bilang isang pampublikong larawan ng Docker sa [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Mabilis na pagtakbo:**
+**Quick run:**
```bash
docker run -d \
@@ -777,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Na may environment file:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -792,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Gumagamit ng Docker Compose:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -802,257 +880,550 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| Larawan | Tag | Sukat | Paglalarawan |
-| ------------------------ | -------- | ------ | ------------------------------ |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | Pinakabagong stable na release |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Kasalukuyang bersyon |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+### Mabilis na Simula
+
```bash
-npm run electron:dev # Development mode
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Pagpepresyo sa isang Sulyap
+## 💰 Pricing at a Glance
-| Tier | Provider | Gastos | I-reset ang Quota | Pinakamahusay Para sa |
-| ------------------- | ----------------- | ------------------------ | -------------------- | ------------------------------- |
-| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/buwan | 5h + lingguhan | Naka-subscribe na |
-| | Codex (Plus/Pro) | $20-200/buwan | 5h + lingguhan | Mga user ng OpenAI |
-| | Gemini CLI | **LIBRE** | 180K/buwan + 1K/araw | Lahat! |
-| | GitHub Copilot | $10-19/buwan | Buwanang | Mga user ng GitHub |
-| **🔑 API KEY** | NVIDIA NIM | **LIBRE** (1000 credits) | Isang beses | Libreng tier na pagsubok |
-| | DeepSeek | Pay-per-use | Wala | Pinakamahusay na presyo/kalidad |
-| | Groq | Libreng tier + bayad | Limitado ang rate | Napakabilis na hinuha |
-| | xAI (Grok) | Pay-per-use | Wala | Mga modelong Grok |
-| | Mistral | Libreng tier + bayad | Limitado ang rate | European AI |
-| | OpenRouter | Pay-per-use | Wala | 100+ modelo |
-| **💰 MURA** | GLM-4.7 | $0.6/1M | Araw-araw 10AM | Backup ng badyet |
-| | MiniMax M2.1 | $0.2/1M | 5 oras na rolling | Pinaka murang opsyon |
-| | Kimi K2 | $9/buwan flat | 10M token/buwan | Nahuhulaang gastos |
-| **🆓 LIBRE** | iFlow | $0 | Walang limitasyong | 8 mga modelong libre |
-| | Qwen | $0 | Walang limitasyong | 3 mga modelong libre |
-| | Kiro | $0 | Walang limitasyong | Claude libre |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Pro Tip:** Magsimula sa Gemini CLI (180K libre/buwan) + iFlow (walang limitasyong libre) combo = $0 na halaga!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Mga Pangunahing Tampok
+---
-### 🧠 Core Routing at Intelligence
+## 🆓 Free Models — What You Actually Get
-| Tampok | Ano ang Ginagawa Nito |
-| ------------------------------- | -------------------------------------------------------------------------------------------- |
-| 🎯 **Smart 4-Tier Fallback** | Auto-ruta: Subscription → API Key → Mura → Libre |
-| 📊 **Real-Time Quota Tracking** | Live na bilang ng token + reset countdown bawat provider |
-| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro seamless + response sanitization |
-| 👥 **Suporta sa Multi-Account** | Maramihang account sa bawat provider na may matalinong pagpili |
-| 🔄 **Auto Token Refresh** | Awtomatikong nagre-refresh ang mga token ng OAuth sa muling pagsubok |
-| 🎨 **Mga Custom na Combos** | 6 na diskarte: fill-first, round-robin, p2c, random, hindi gaanong ginagamit, cost-optimized |
-| 🧩 **Mga Custom na Modelo** | Magdagdag ng anumang ID ng modelo sa anumang provider |
-| 🌐 **Wildcard Router** | Iruta ang `provider/*` na mga pattern sa anumang provider nang dynamic na |
-| 🧠 **Badyet sa Pag-iisip** | Passthrough, auto, custom, at adaptive mode para sa mga modelo ng pangangatwiran |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **System Prompt Injection** | Inilapat ang global system prompt sa lahat ng kahilingan |
-| 📄 **Responses API** | Buong OpenAI Responses API (`/v1/responses`) na suporta para sa Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 Mga Multi-Modal na API
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Tampok | Ano ang Ginagawa Nito |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
+
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
+
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
+
+### 🟡 QWEN MODELS (Device Code Auth)
+
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
+
+### 🟣 GEMINI CLI (Google OAuth)
+
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Pagbuo ng Larawan** | `/v1/images/generations` — 4 na provider, 9+ na modelo |
-| 📐 **Mga Pag-embed** | `/v1/embeddings` — 6 na provider, 9+ na modelo |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Mga Pag-moderate** | `/v1/moderations` — Mga pagsusuri sa kaligtasan ng nilalaman |
-| 🔀 **Reranking** | `/v1/rerank` — Muling pagraranggo ng kaugnayan ng dokumento |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
-### 🛡️ Katatagan at Seguridad
+### 🛡️ Resilience, Security & Governance
-| Tampok | Ano ang Ginagawa Nito |
-| ----------------------------------------- | -------------------------------------------------------------------------------------- |
-| 🔌 **Circuit Breaker** | Awtomatikong buksan/isara ang bawat provider na may mga na-configure na threshold |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore rate-limit para sa mga API key provider |
-| 🧠 **Semantic Cache** | Binabawasan ng two-tier na cache (pirma + semantiko) ang gastos at latency |
-| ⚡ **Humiling ng Idempotency** | 5s dedup window para sa mga duplicate na kahilingan |
-| 🔒 **TLS Fingerprint Spoofing** | I-bypass ang TLS-based na bot detection sa pamamagitan ng wreq-js |
-| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
-| 🌐 **Pag-filter ng IP** | Allowlist/blocklist para sa API access control |
-| 📊 **Mga Nae-edit na Limitasyon sa Rate** | Configurable RPM, min gap, at max na kasabay sa antas ng system |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **Proteksyon sa Endpoint ng API** | Auth gating + pagharang ng provider para sa `/models` endpoint |
-| 🔒 **Proxy Visibility** | Mga color-coded na badge: 🟢 global, 🟡 provider, 🔵 per-connection na may IP display |
-| 🌐 **3-Level Proxy Config** | I-configure ang mga proxy sa global, per-provider, o per-connection level |
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
-### 📊 Pagmamasid at Analytics
+### 📊 Observability & Analytics
-| Tampok | Ano ang Ginagawa Nito |
-| -------------------------------- | -------------------------------------------------------------------------------------------- |
-| 📝 **Kahilingan sa Pag-log** | Debug mode na may buong kahilingan/tugon logs |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **SQLite Proxy Logs** | Ang mga paulit-ulit na proxy log ay nakaligtas sa pag-restart ng server |
-| 📊 **Analytics Dashboard** | Recharts-powered: mga stat card, chart ng paggamit ng modelo, talahanayan ng provider |
-| 📈 **Pagsubaybay sa Pag-unlad** | Mag-opt-in sa mga kaganapan sa pag-usad ng SSE para sa streaming |
-| 🧪 **Mga Pagsusuri sa LLM** | Golden set testing na may 4 na diskarte sa pagtutugma |
-| 🔍 **Humiling ng Telemetry** | p50/p95/p99 latency aggregation + X-Request-Id tracing |
-| 📋 **Dashboard ng Mga Log** | Pinag-isang 4-tab na pahina: Mga Log ng Kahilingan, Mga Proxy Log, Mga Log ng Audit, Console |
-| 🖥️ **Console Log Viewer** | Real-time na terminal-style viewer na may level filter, search, auto-scroll |
-| 📑 **File-Based Logging** | Kinukuha ng Console interceptor ang lahat ng output sa JSON log file na may pag-ikot |
-| 🏥 **Dashboard ng Kalusugan** | System uptime, circuit breaker states, lockouts, cache stats |
-| 💰 **Pagsubaybay sa Gastos** | Pamamahala ng badyet + configuration ng pagpepresyo sa bawat modelo |
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
-### ☁️ Deployment at Pag-sync
+### ☁️ Deployment & Platform
-| Tampok | Ano ang Ginagawa Nito |
-| ----------------------------------- | ----------------------------------------------------------------------------------------------- |
-| 💾 **Cloud Sync** | I-sync ang config sa mga device sa pamamagitan ng Cloudflare Workers |
-| 🌐 **I-deploy Kahit Saan** | Localhost, VPS, Docker, Cloudflare Workers |
-| 🔑 **API Key Management** | Bumuo, paikutin, at saklawin ang mga API key sa bawat provider |
-| 🧙 **Onboarding Wizard** | 4-step guided setup para sa mga unang beses na user |
-| 🔧 **CLI Tools Dashboard** | One-click configure Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **Mga Backup ng DB** | Awtomatikong pag-backup, pagpapanumbalik, pag-export at pag-import para sa lahat ng mga setting |
-| 🌐 **Internasyonalisasyon** | Buong i18n na may next-intl — suporta sa English + Portuguese (Brazil) |
-| 🌍 **Pili ng Wika** | Globe icon sa header para sa real-time na paglipat ng wika (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Custom na Direktoryo ng Data** | `DATA_DIR` env var to override default `~/.omniroute` storage path |
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Mga Detalye ng Tampok
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Smart 4-Tier Fallback
+Start MCP transport in stdio mode:
-Gumawa ng mga combo na may awtomatikong fallback:
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 Real-Time na Pagsubaybay sa Quota
+Recommended validation flow:
-- Pagkonsumo ng token bawat provider
-- I-reset ang countdown (5 oras, araw-araw, lingguhan)
-- Pagtatantya ng gastos para sa mga bayad na tier
-- Mga ulat sa buwanang paggasta
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Pagsasalin ng Format
+Useful APIs for automation:
-Walang putol na pagsasalin sa pagitan ng mga format:
-
-- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
-- Ang iyong CLI tool ay nagpapadala ng OpenAI na format → OmniRoute nagsasalin → Provider ay tumatanggap ng katutubong format
-- Gumagana sa anumang tool na sumusuporta sa mga custom na endpoint ng OpenAI
-- **Response sanitization** — Tinatanggal ang mga hindi karaniwang field para sa mahigpit na OpenAI SDK compatibility
-- **Pag-normalize ng tungkulin** — `developer` → `system` para sa hindi OpenAI; `system` → `user` para sa mga modelo ng GLM/ERNIE
-- **Think tag extraction** — `` block → `reasoning_content` para sa mga modelo ng pag-iisip
-- **Structured output** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
-
-### 👥 Multi-Account Support
-
-- 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
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Mga Pagsusuri (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-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.
+Discover the agent:
-### na Set
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-Ang pre-loaded na "OmniRoute Golden Set" ay naglalaman ng 10 test case na sumasaklaw sa:
+Send a task:
-- Pagbati, matematika, heograpiya, pagbuo ng code
-- Pagsunod sa format ng JSON, pagsasalin, markdown
-- Pagtanggi sa kaligtasan (nakapipinsalang nilalaman), pagbibilang, lohika ng boolean
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Estratehiya sa Pagsusuri
+Manage lifecycle:
-| 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` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Gabay sa Pag-setup
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Mga Tagabigay ng Subscription
+🧪 End-to-end protocol validation
+
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
### Claude Code (Pro/Max)
@@ -1067,7 +1438,7 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**Pro Tip:** Gamitin ang Opus para sa mga kumplikadong gawain, Soneto para sa bilis. Sinusubaybayan ng OmniRoute ang quota bawat modelo!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
@@ -1081,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (LIBRE 180K/buwan!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1093,7 +1481,7 @@ Models:
gc/gemini-2.5-pro
```
-**Pinakamahusay na Halaga:** Malaking libreng tier! Gamitin ito bago ang mga bayad na tier.
+**Best Value:** Huge free tier! Use this before paid tiers.
### GitHub Copilot
@@ -1111,88 +1499,88 @@ Models:
-🔑 API Key Provider
+🔑 API Key Providers
-### NVIDIA NIM (LIBRE 1000 credits!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Mag-sign up: [build.nvidia.com](https://build.nvidia.com)
-2. Kumuha ng libreng API key (1000 inference credits kasama)
-3. Dashboard → Magdagdag ng Provider → NVIDIA NIM:
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
- API Key: `nvapi-your-key`
-**Mga Modelo:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, at 50+ pa
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Pro Tip:** OpenAI-compatible na API — gumagana nang walang putol sa pagsasalin ng format ng OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Mag-sign up: [platform.deepseek.com](https://platform.deepseek.com)
-2. Kunin ang API key
-3. Dashboard → Magdagdag ng Provider → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Mga Modelo:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (Magagamit ang Libreng Tier!)
+### Groq (Free Tier Available!)
-1. Mag-sign up: [console.groq.com](https://console.groq.com)
-2. Kunin ang API key (kasama ang libreng tier)
-3. Dashboard → Magdagdag ng Provider → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Mga Modelo:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Pro Tip:** Napakabilis na inference — pinakamahusay para sa real-time na coding!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (100+ Modelo)
+### OpenRouter (100+ Models)
-1. Mag-sign up: [openrouter.ai](https://openrouter.ai)
-2. Kunin ang API key
-3. Dashboard → Magdagdag ng Provider → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Mga Modelo:** I-access ang 100+ na modelo mula sa lahat ng pangunahing provider sa pamamagitan ng iisang API key.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Mga Murang Provider (Backup)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (Araw-araw na pag-reset, $0.6/1M)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Mag-sign up: [Zhipu AI](https://open.bigmodel.cn/)
-2. Kumuha ng API key mula sa Coding Plan
-3. Dashboard → Magdagdag ng API Key:
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
- Provider: `glm`
- API Key: `your-key`
-**Gamitin:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Pro Tip:** Nag-aalok ang Coding Plan ng 3× na quota sa 1/7 na halaga! I-reset araw-araw 10:00 AM.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Mag-sign up: [MiniMax](https://www.minimax.io/)
-2. Kunin ang API key
-3. Dashboard → Magdagdag ng API Key
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Gamitin:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Pro Tip:** Ang pinakamurang opsyon para sa mahabang konteksto (1M token)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
### Kimi K2 ($9/month flat)
-1. Mag-subscribe: [Moonshot AI](https://platform.moonshot.ai/)
-2. Kunin ang API key
-3. Dashboard → Magdagdag ng API Key
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Gamitin:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Pro Tip:** Nakapirming $9/buwan para sa 10M token = $0.90/1M epektibong gastos!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 LIBRENG Provider (Emergency Backup)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 LIBRENG modelo)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1207,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 LIBRENG modelo)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1219,7 +1607,7 @@ Models:
qw/qwen3-coder-flash
```
-### Kiro (Claude LIBRE)
+### Kiro (Claude FREE)
```bash
Dashboard → Connect Kiro
@@ -1234,9 +1622,9 @@ Models:
-🎨 Lumikha ng mga Combo
+🎨 Create Combos
-### Halimbawa 1: I-maximize ang Subscription → Murang Backup
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1250,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### Halimbawa 2: Libre-Lamang (Zero na Gastos)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1278,7 +1666,7 @@ Settings → Models → Advanced:
### Claude Code
-Gamitin ang pahina ng **CLI Tools** sa dashboard para sa isang pag-click na configuration, o manu-manong i-edit ang `~/.claude/settings.json`.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1291,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Pagpipilian 1 — Dashboard (inirerekomenda):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Pagpipilian 2 — Manwal:** I-edit ang `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1313,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **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.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### Cline / Magpatuloy / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1325,108 +1713,243 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Pag-troubleshoot
+## Pag-troubleshoot
-Mag-click upang palawakin ang gabay sa pag-troubleshoot
+Click to expand troubleshooting guide
-**"Ang modelo ng wika ay hindi nagbigay ng mga mensahe"**
+**"Language model did not provide messages"**
-- Naubos na ang quota ng provider → Suriin ang tracker ng quota ng dashboard
-- Solusyon: Gumamit ng combo fallback o lumipat sa mas murang tier
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**Paglilimita sa rate**
+**Rate limiting**
-- 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`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**Nag-expire ang token ng OAuth**
+**OAuth token expired**
-- Auto-refresh ng OmniRoute
-- Kung magpapatuloy ang mga isyu: Dashboard → Provider → Muling kumonekta
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Mataas na gastos**
+**High costs**
-- 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
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Nagbubukas ang dashboard sa maling port**
+**Dashboard/API ports are wrong**
-- Itakda ang `PORT=20128` at `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Mga error sa cloud sync**
+**Cloud sync errors**
-- 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
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Hindi gumagana ang unang pag-login**
+**First login not working**
-- Suriin ang `INITIAL_PASSWORD` sa `.env`
-- Kung hindi nakatakda, ang fallback na password ay `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Walang mga log ng kahilingan**
+**No request logs**
-- Itakda ang `ENABLE_REQUEST_LOGS=true` sa `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Ang pagsubok sa koneksyon ay nagpapakita ng "Di-wasto" para sa mga provider na katugma sa OpenAI**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- 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
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 OAuth
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ MAHALAGA para sa usuários com OmniRoute sa VPS/Docker/servidor remoto**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-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.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-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:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### Solusyon: I-configure ang suas próprias credenciais OAuth
+#### Solution: Configure your own OAuth credentials
-Você precisa criar um **OAuth 2.0 Client ID** walang Google Cloud Console com a URI do seu servidor.
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
#### Passo a passo
-**1. Mag-access sa Google Cloud Console**
+**1. Acesse o Google Cloud Console**
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
**2. Crie um novo OAuth 2.0 Client ID**
-- Clique em **"+ Lumikha ng Mga Kredensyal"** → **"OAuth client ID"**
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
- Tipo de aplicativo: **"Web application"**
-- Pangalan: escolha qualquer nome (hal: `OmniRoute Remote`)
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. Idagdag bilang Mga Awtorisadong URI sa Pag-redirect**
+**3. Adicione as Authorized Redirect URIs**
-Walang campo **"Mga Awtorisadong URI sa pag-redirect"**, idagdag:
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
```
-> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (kasama ang porta se necessário, hal: `http://45.33.32.156:20128/callback`).
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. I-save at kopyahin bilang kredensyal**
+**4. Salve e copie as credenciais**
-Após criar, o Google mostrará o **Client ID** at ** Client Secret**.
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. I-configure bilang variáveis de ambiente**
+**5. Configure as variáveis de ambiente**
No seu `.env` (ou nas variáveis de ambiente do Docker):
@@ -1453,150 +1976,145 @@ docker restart omniroute
**7. Tente conectar novamente**
-Dashboard → Mga Provider → Antigravity (ou Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
-Agora o Google redirectionará corretamente para sa `https://seu-servidor.com/callback` at a autenticação funcionará.
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
#### Workaround temporário (sem configurar credenciais próprias)
-Se não quiser criar credenciais próprias agora, may posibilidad na magamit o fluxo **manual de URL**:
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. OmniRoute abrirá a URL de authorização do Google
-2. Após você authorizar, o Google tentará redirectionar para sa `localhost` (que falha no servidor remoto)
-3. **Kopyahin ang isang URL completa** sa barra de endereço do seu browser (mesmo que a página não carregue)
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
-5. Clique em **"Kumonekta"**
+5. Clique em **"Connect"**
-> Ang workaround na ito ay gumagana sa pamamagitan ng código de authorização na URL ay maaaring mag-redirect sa iyong carregado ou não.
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ ay **hindi suportado** — `better-sqlite3` native binary ay hindi tugma)
-- **Wika**: TypeScript 5.9 — **100% TypeScript** sa `src/` at `open-sse/` (v1.0.6)
+## 🛠️ Tech Stack
+
+
+Click to expand tech stack details
+
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
-- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs)
-- **Streaming**: Mga Kaganapang Ipinadala ng Server (SSE)
-- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
-- **Pagsubok**: Node.js test runner (368+ unit test)
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
- **Website**: [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)
-- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing
-
----
-
-## 📖 Dokumentasyon
-
-| Dokumento | Paglalarawan |
-| -------------------------------------------- | --------------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | Mga provider, combo, CLI integration, deployment |
-| [API Reference](docs/API_REFERENCE.md) | Lahat ng mga endpoint na may mga halimbawa |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | Mga karaniwang problema at solusyon |
-| [Architecture](docs/ARCHITECTURE.md) | Arkitektura ng system at mga panloob |
-| [Contributing](CONTRIBUTING.md) | Pag-setup at mga alituntunin ng pag-unlad |
-| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 na detalye |
-| [Security Policy](SECURITY.md) | Pag-uulat ng kahinaan at mga kasanayan sa seguridad |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Kumpletong gabay: VM + nginx + Cloudflare setup |
-| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour na may mga screenshot |
-
-### 📸 Preview ng Dashboard
-
-
-Mag-click para makita ang mga screenshot ng dashboard
-
-| Pahina | Screenshot |
-| ----------------------- | ------------------------------------------------- |
-| **Mga Provider** |  |
-| **Combos** |  |
-| **Analytics** |  |
-| **Kalusugan** |  |
-| **Tagasalin** |  |
-| **Mga Setting** |  |
-| **Mga CLI Tools** |  |
-| **Mga Log ng Paggamit** |  |
-| **Endpoint** |  |
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## Dokumentasyon
-Ang OmniRoute ay may **210+ feature na binalak** sa maraming yugto ng pag-unlad. Narito ang mga pangunahing lugar:
-
-| Kategorya | Mga Nakaplanong Tampok | Mga Highlight |
-| -------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------- |
-| 🧠 **Routing at Intelligence** | 25+ | Lowest-latency routing, tag-based na routing, quota preflight, P2C account selection |
-| 🔒 **Seguridad at Pagsunod** | 20+ | SSRF hardening, credential cloaking, rate-limit sa bawat endpoint, management key scoping |
-| 📊 **Pagmamasid** | 15+ | Pagsasama ng OpenTelemetry, real-time na pagsubaybay sa quota, pagsubaybay sa gastos bawat modelo |
-| 🔄 **Mga Pagsasama ng Provider** | 20+ | Dynamic na model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
-| ⚡ **Pagganap** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
-| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
-
-### 🔜 Malapit na
-
-- 🔗 **OpenCode Integration** — Suporta ng katutubong provider para sa OpenCode AI coding IDE
-- 🔗 **TRAE Integration** — Buong suporta para sa balangkas ng pag-develop ng TRAE AI
-- 📦 **Batch API** — Asynchronous na pagproseso ng batch para sa maramihang kahilingan
-- 🎯 **Tag-Based Routing** — Mga kahilingan sa ruta batay sa mga custom na tag at metadata
-- 💰 **Diskarte sa Pinakamababang Gastos** — Awtomatikong piliin ang pinakamurang available na provider
-
-> 📝 Available ang buong detalye ng feature sa [link](docs/new-features/) (217 detalyadong spec)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 Mga nag-aambag
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Paano Mag-ambag
+### How to Contribute
-1. I-fork ang repositoryo
-2. Gawin ang iyong sangay ng tampok (`git checkout -b feature/amazing-feature`)
-3. Ibigay ang iyong mga pagbabago (`git commit -m 'Add amazing feature'`)
-4. Itulak sa sangay (`git push origin feature/amazing-feature`)
-5. Magbukas ng Pull Request
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Tingnan ang [CONTRIBUTING.md](CONTRIBUTING.md) para sa mga detalyadong alituntunin.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Naglalabas ng Bagong Bersyon
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Kasaysayan ng Bituin
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Pasasalamat
+## 🙏 Acknowledgments
-Espesyal na pasasalamat kay **[9router](https://github.com/decolua/9router)** ni **[decolua](https://github.com/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.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Espesyal na salamat sa **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — ang orihinal na pagpapatupad ng Go na nagbigay inspirasyon sa JavaScript port na ito.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Lisensya
+## Lisensya
-Lisensya ng MIT - tingnan ang [LICENSE](LICENSE) para sa mga detalye.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Built with ❤️ para sa mga developer na nagko-code 24/7
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/phi/docs/FEATURES.md b/docs/i18n/phi/docs/FEATURES.md
new file mode 100644
index 0000000000..523d0f63fe
--- /dev/null
+++ b/docs/i18n/phi/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Filipino)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/pl/README.md b/docs/i18n/pl/README.md
index b648e72cca..cbf68b8431 100644
--- a/docs/i18n/pl/README.md
+++ b/docs/i18n/pl/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — darmowa bramka AI
+# 🚀 OmniRoute — The Free AI Gateway (Polski)
-### Nigdy nie przestawaj kodować. Inteligentne przekierowywanie do **BEZPŁATNYCH i tanich modeli AI** z automatycznym powrotem.
-
-_Twój uniwersalny serwer proxy API — jeden punkt końcowy, ponad 36 dostawców, zero przestojów._
-
-**Uzupełnienia czatu • Osadzania • Generowanie obrazu • Dźwięk • Zmiana rankingu • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Bezpłatny dostawca AI dla Twoich ulubionych agentów kodujących
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Połącz dowolne narzędzie IDE lub CLI oparte na sztucznej inteligencji poprzez OmniRoute — bezpłatną bramę API dla nieograniczonego kodowania._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _Połącz dowolne narzędzie IDE lub CLI oparte na sztucznej inteligencji poprze
|
-📡 Wszyscy agenci łączą się przez http://localhost:20128/v1 lub http://cloud.omniroute.online/v1 — jedna konfiguracja, nieograniczona liczba modeli i limit
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Dlaczego OmniRoute?
-
-**Przestań marnować pieniądze i przekraczać limity:**
-
--
Limit subskrypcji wygasa niewykorzystany co miesiąc
--
Limity szybkości zatrzymują Cię w połowie kodowania
--
Drogie interfejsy API (20-50 USD miesięcznie na dostawcę)
--
Ręczne przełączanie pomiędzy dostawcami
-
-**OmniRoute rozwiązuje ten problem:**
-
-- ✅ **Maksymalizuj liczbę subskrypcji** - Śledź limit, wykorzystaj każdy bit przed zresetowaniem
-- ✅ **Automatyczny powrót** - Subskrypcja → Klucz API → Tani → Bezpłatny, zero przestojów
-- ✅ **Wiele kont** - Praca okrężna pomiędzy kontami każdego dostawcy
-- ✅ **Uniwersalny** - Działa z Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw i dowolnym narzędziem CLI
-
----
-
-## 📧 Wsparcie
-
-> 💬 **Dołącz do naszej społeczności!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Uzyskaj pomoc, dziel się wskazówkami i bądź na bieżąco.
-
-- **Strona internetowa**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **Problemy**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Oryginalny projekt**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Jak to działa
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,451 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 Co rozwiązuje OmniRoute — 30 rzeczywistych problemów i przypadków użycia
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Każdy programista korzystający z narzędzi AI codziennie spotyka się z tymi problemami.** OmniRoute został stworzony, aby rozwiązać je wszystkie — od przekroczeń kosztów po blokady regionalne, od zepsutych przepływów OAuth po operacje protokołów i obserwowalność przedsiębiorstwa.
+> **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 protocol operations and enterprise observability.
-💸 1. „Płacę za kosztowną subskrypcję, ale nadal przeszkadzają mi limity”
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Programiści płacą 20–200 USD miesięcznie za Claude Pro, Codex Pro lub GitHub Copilot. Nawet płacąc, limit ma pułap – 5 godzin użytkowania, limity tygodniowe lub limity stawek za minutę. W połowie sesji kodowania dostawca przestaje odpowiadać, a programista traci płynność i produktywność.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Inteligentny 4-poziomowy powrót** — Jeśli limit subskrypcji się wyczerpie, automatycznie przekierowuje do klucza API → Tani → Bezpłatny bez ręcznej interwencji
-- **Śledzenie limitów w czasie rzeczywistym** — Pokazuje zużycie tokenów w czasie rzeczywistym z resetowanym odliczaniem (5 godzin, codziennie, co tydzień)
-- **Obsługa wielu kont** — Wiele kont na dostawcę z funkcją automatycznego przełączania między kontami — gdy skończy się jedno, następuje przejście do następnego
-- **Niestandardowe kombinacje** — Konfigurowalne łańcuchy rezerwowe z 6 strategiami równoważenia (pierwsze wypełnienie, działanie okrężne, P2C, losowe, najrzadziej używane, zoptymalizowane pod względem kosztów)
-- **Przydziały biznesowe Kodeksu** — monitorowanie przydziałów przestrzeni roboczej firmy/zespołu bezpośrednio na pulpicie nawigacyjnym
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. „Muszę korzystać z wielu dostawców, ale każdy ma inny interfejs API”
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI używa jednego formatu, Claude (Anthropic) używa innego, Gemini jeszcze innego. Jeśli programista chce przetestować modele od różnych dostawców lub korzystać z nich w trybie awaryjnym, musi ponownie skonfigurować pakiety SDK, zmienić punkty końcowe i poradzić sobie z niekompatybilnymi formatami. Dostawcy niestandardowi (FriendLI, NIM) mają niestandardowe punkty końcowe modelu.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Ujednolicony punkt końcowy** — pojedynczy `http://localhost:20128/v1` służy jako serwer proxy dla wszystkich ponad 36 dostawców
-- **Tłumaczenie formatu** — Automatyczne i przejrzyste: OpenAI ↔ Claude ↔ Gemini ↔ API odpowiedzi
-- **Odkażanie odpowiedzi** — usuwa niestandardowe pola (`x_groq`, `usage_breakdown`, `service_tier`), które psują OpenAI SDK v1.83+
-- **Normalizacja ról** — Konwertuje `developer` → `system` dla dostawców innych niż OpenAI; `system` → `user` dla GLM/ERNIE
-- **Pomyśl o ekstrakcji tagów** — wyodrębnia bloki `` z modeli takich jak DeepSeek R1 do standardowego `reasoning_content`
-- **Wyjście strukturalne dla Gemini** — `json_schema` → `responseMimeType`/`responseSchema` automatyczna konwersja
-- **`stream` domyślnie to `false`** — Zgodność ze specyfikacją OpenAI, unikanie nieoczekiwanego SSE w pakietach SDK Python/Rust/Go
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. „Mój dostawca AI blokuje mój region/kraj”
+🌐 3. "My AI provider blocks my region/country"
-Dostawcy tacy jak OpenAI/Codex blokują dostęp z określonych regionów geograficznych. Podczas połączeń OAuth i API użytkownicy otrzymują błędy takie jak `unsupported_country_region_territory`. Jest to szczególnie frustrujące dla programistów z krajów rozwijających się.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **3-poziomowa konfiguracja serwera proxy** — Konfigurowalny serwer proxy na 3 poziomach: globalny (cały ruch), na dostawcę (tylko jeden dostawca) i na połączenie/klucz
-- **Oznaczone kolorami identyfikatory proxy** — Wskaźniki wizualne: 🟢 globalny serwer proxy, 🟡 serwer proxy dostawcy, 🔵 serwer proxy połączenia, zawsze pokazujący adres IP
-- **Wymiana tokenów OAuth przez serwer proxy** — Przepływ OAuth przechodzi również przez serwer proxy, co rozwiązuje problem `unsupported_country_region_territory`
-- **Test połączenia przez serwer proxy** — Testy połączenia wykorzystują skonfigurowany serwer proxy (koniec z bezpośrednim obejściem)
-- **Obsługa SOCKS5** — Pełna obsługa proxy SOCKS5 dla routingu wychodzącego
-- **Podrabianie odcisków palców TLS** — Odcisk palca TLS podobny do przeglądarki za pośrednictwem `wreq-js` w celu ominięcia wykrywania botów
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. „Chcę używać AI do kodowania, ale nie mam pieniędzy”
+🆓 4. "I want to use AI for coding but I have no money"
-Nie każdy może zapłacić 20–200 USD miesięcznie za subskrypcje AI. Studenci, programiści z krajów wschodzących, hobbyści i freelancerzy potrzebują dostępu do wysokiej jakości modeli po zerowych kosztach.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Wbudowani dostawcy bezpłatnych poziomów** — Natywne wsparcie dla w 100% darmowych dostawców: iFlow (8 nielimitowanych modeli), Qwen (3 nieograniczone modele), Kiro (Claude za darmo), Gemini CLI (180 tys./miesiąc za darmo)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Kombinacje dostępne wyłącznie bezpłatnie** — Łańcuch `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 0 USD/miesiąc z zerowymi przestojami
-- **Darmowe kredyty NVIDIA NIM** — zintegrowane 1000 darmowych kredytów
-- **Strategia zoptymalizowana pod względem kosztów** — Strategia routingu, która automatycznie wybiera najtańszego dostępnego dostawcę
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. „Muszę chronić moją bramę AI przed nieautoryzowanym dostępem”
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Podczas udostępniania bramy AI w sieci (LAN, VPS, Docker) każda osoba posiadająca adres może wykorzystać tokeny/przydział programisty. Bez ochrony interfejsy API są podatne na niewłaściwe użycie, natychmiastowe wstrzyknięcie i nadużycia.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Zarządzanie kluczami API** — generowanie, rotacja i ustalanie zakresu dla każdego dostawcy za pomocą dedykowanej strony `/dashboard/api-manager`
-- **Uprawnienia na poziomie modelu** — Ogranicz klucze API do określonych modeli (`openai/*`, wzorce symboli wieloznacznych), za pomocą przełącznika Zezwalaj na wszystko/Ogranicz
-- **API Endpoint Protection** — Wymagaj klucza dla `/v1/models` i blokuj określonych dostawców na liście
-- **Auth Guard + ochrona CSRF** — Wszystkie trasy panelu kontrolnego chronione oprogramowaniem pośredniczącym `withAuth` + tokenami CSRF
-- **Rate Limiter** — Ograniczanie szybkości na IP z konfigurowalnymi oknami
-- **Filtrowanie IP** — Lista dozwolonych/blokowanych do kontroli dostępu
-- **Szybka ochrona przed wstrzyknięciem** — Oczyszczanie przed złośliwymi wzorcami podpowiedzi
-- **Szyfrowanie AES-256-GCM** — Poświadczenia szyfrowane w stanie spoczynku
+- **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. „Mój dostawca przestał działać i straciłem płynność kodowania”
+🛑 6. "My provider went down and I lost my coding flow"
-Dostawcy sztucznej inteligencji mogą stać się niestabilni, zwracać błędy 5xx lub przekraczać tymczasowe limity szybkości. Jeśli programista jest zależny od jednego dostawcy, jego praca jest przerywana. Bez wyłączników automatycznych wielokrotne próby mogą spowodować awarię aplikacji.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Wyłącznik automatyczny na dostawcę** — Automatyczne otwieranie/zamykanie z konfigurowalnymi progami i czasem schładzania (zamknięty/otwarty/półotwarty)
-- **Wykładniczy wycofywanie** — Stopniowe opóźnienia ponownych prób
-- **Anti-Thundering Herd** — Mutex + ochrona semaforów przed równoczesnymi burzami ponownych prób
-- **Łańcuchy awaryjne typu Combo** — jeśli główny dostawca zawiedzie, automatycznie przejdzie przez łańcuch bez interwencji
-- **Wyłącznik automatyczny** — automatycznie wyłącza niesprawnych dostawców w łańcuchu combo
-- **Panel stanu** — Monitorowanie czasu pracy, stany wyłączników, blokady, statystyki pamięci podręcznej, opóźnienia p50/p95/p99
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. „Konfigurowanie każdego narzędzia AI jest żmudne i powtarzalne”
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Programiści używają Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Każde narzędzie wymaga innej konfiguracji (punkt końcowy API, klucz, model). Ponowna konfiguracja w przypadku zmiany dostawcy lub modelu jest stratą czasu.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- ** Panel narzędzi CLI** — Dedykowana strona z konfiguracją jednym kliknięciem dla Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-- **Generator konfiguracji GitHub Copilot** — Generuje `chatLanguageModels.json` dla kodu VS z zbiorczym wyborem modelu
-- **Kreator wprowadzenia** — konfiguracja w 4 krokach dla początkujących użytkowników
-- **Jeden punkt końcowy, wszystkie modele** — Skonfiguruj `http://localhost:20128/v1` raz, uzyskaj dostęp do ponad 36 dostawców
+- **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 67+ providers
-🔑 8. „Zarządzanie tokenami OAuth od wielu dostawców to piekło”
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot — wszystkie korzystają z OAuth 2.0 z wygasającymi tokenami. Programiści muszą stale przeprowadzać ponowne uwierzytelnianie, radzić sobie z `client_secret is missing`, `redirect_uri_mismatch` i awariami na zdalnych serwerach. Szczególnie problematyczny jest protokół OAuth w sieci LAN/VPS.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Automatyczne odświeżanie tokenu** — tokeny OAuth odświeżają się w tle przed wygaśnięciem
-- **Wbudowany OAuth 2.0 (PKCE)** — Automatyczny przepływ dla Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **Wielokontowy OAuth** — wiele kont na dostawcę poprzez ekstrakcję tokenów JWT/ID
-- **OAuth LAN/remote fix** — wykrywanie prywatnego adresu IP dla `redirect_uri` + ręczny tryb adresu URL dla serwerów zdalnych
-- **OAuth Behind Nginx** — wykorzystuje `window.location.origin` w celu zapewnienia zgodności z odwrotnym proxy
-- **Przewodnik po zdalnym OAuth** — szczegółowy przewodnik dotyczący danych uwierzytelniających Google Cloud na platformie VPS/Docker
+- **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. „Nie wiem, ile i gdzie wydaję”
+📊 9. "I don't know how much I'm spending or where"
-Programiści korzystają z wielu płatnych dostawców, ale nie mają jednolitego widoku wydatków. Każdy dostawca ma własny pulpit rozliczeniowy, ale nie ma widoku skonsolidowanego. Nieoczekiwane koszty mogą się kumulować.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Panel analizy kosztów** — śledzenie kosztów według tokenu i zarządzanie budżetem dla każdego dostawcy
-- **Limity budżetowe na poziom** — Pułap wydatków na poziom, który uruchamia automatyczne wycofanie
-- **Konfiguracja cen dla poszczególnych modeli** — Ceny dla poszczególnych modeli można konfigurować
-- **Statystyki użytkowania na klucz API** — Liczba żądań i znacznik czasu ostatniego użycia na klucz
-- **Panel analityczny** — karty statystyk, wykres wykorzystania modelu, tabela dostawców ze wskaźnikami powodzenia i opóźnieniami
+- **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. „Nie mogę diagnozować błędów i problemów w wywołaniach AI”
+🐛 10. "I can't diagnose errors and problems in AI calls"
-Gdy połączenie nie powiedzie się, programista nie wie, czy był to limit szybkości, wygasły token, nieprawidłowy format czy błąd dostawcy. Fragmentowane dzienniki na różnych terminalach. Bez obserwowalności debugowanie odbywa się metodą prób i błędów.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Ujednolicony pulpit nawigacyjny** — 4 karty: Dzienniki żądań, Dzienniki proxy, Dzienniki audytu, Konsola
-- **Przeglądarka logów w konsoli** — Przeglądarka działająca w stylu terminala w czasie rzeczywistym z poziomami oznaczonymi kolorami, automatycznym przewijaniem, wyszukiwaniem i filtrowaniem
-- **Dzienniki proxy SQLite** — trwałe dzienniki, które przetrwają ponowne uruchomienie serwera
-- **Plac zabaw dla tłumaczy** — 4 tryby debugowania: Plac zabaw (tłumaczenie formatu), Tester czatu (w obie strony), Stanowisko testowe (wsadowe), Monitor na żywo (w czasie rzeczywistym)
-- **Żądanie telemetrii** — opóźnienie p50/p95/p99 + śledzenie identyfikatora X-Request-Id
-- **Logowanie oparte na plikach z rotacją** — Przechwytywacz konsoli przechwytuje wszystko do dziennika JSON z rotacją na podstawie rozmiaru
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. „Wdrażanie i konserwacja bramy jest skomplikowane”
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Instalacja, konfiguracja i utrzymanie serwera proxy AI w różnych środowiskach (lokalnym, VPS, Docker, chmura) jest pracochłonne. Problemy takie jak zakodowane na stałe ścieżki, `EACCES` w katalogach, konflikty portów i kompilacje międzyplatformowe zwiększają tarcia.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **npm globalna instalacja** — `npm install -g omniroute && omniroute` — gotowe
-- **Docker Multi-platform** — natywny AMD64 + ARM64 (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Profile Docker Compose** — `base` (bez narzędzi CLI) i `cli` (z Claude Code, Codex, OpenClaw)
-- **Electron Desktop App** — Natywna aplikacja dla systemów Windows/macOS/Linux z zasobnikiem systemowym, automatycznym uruchamianiem i trybem offline
-- **Tryb Split-Port** — API i pulpit nawigacyjny na oddzielnych portach dla zaawansowanych scenariuszy (odwrotne proxy, sieć kontenerowa)
-- **Cloud Sync** — skonfiguruj synchronizację między urządzeniami za pośrednictwem Cloudflare Workers
-- **Kopie zapasowe DB** — Automatyczne tworzenie kopii zapasowych, przywracanie, eksportowanie i importowanie wszystkich ustawień
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. „Interfejs jest wyłącznie w języku angielskim, a mój zespół nie mówi po angielsku”
+🌍 12. "The interface is English-only and my team doesn't speak English"
-Zespoły w krajach nieanglojęzycznych, szczególnie w Ameryce Łacińskiej, Azji i Europie, mają trudności z interfejsami dostępnymi wyłącznie w języku angielskim. Bariery językowe ograniczają wdrażanie i zwiększają liczbę błędów konfiguracyjnych.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- ** Panel i18n — 30 języków** — Przetłumaczono ponad 500 klawiszy, w tym arabski, bułgarski, duński, niemiecki, hiszpański, fiński, francuski, hebrajski, hindi, węgierski, indonezyjski, włoski, japoński, koreański, malajski, holenderski, norweski, polski, portugalski (PT/BR), rumuński, rosyjski, słowacki, szwedzki, tajski, ukraiński, wietnamski, chiński, filipiński, angielski
-- **Obsługa RTL** — obsługa tekstu od prawej do lewej w języku arabskim i hebrajskim
-- **Wielojęzyczne pliki README** — 30 kompletnych tłumaczeń dokumentacji
-- **Wybór języka** — Ikona kuli ziemskiej w nagłówku umożliwiająca przełączanie w czasie rzeczywistym
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. „Potrzebuję czegoś więcej niż czatu — potrzebuję osadzania, obrazów i dźwięku”
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-Sztuczna inteligencja to nie tylko ukończenie czatu. Twórcy muszą generować obrazy, transkrybować dźwięk, tworzyć osadzania dla RAG, zmieniać rangę dokumentów i moderować treści. Każdy interfejs API ma inny punkt końcowy i format.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Osadzania** — `/v1/embeddings` z 6 dostawcami i ponad 9 modelami
-- **Generowanie obrazu** — `/v1/images/generations` z 10 dostawcami i ponad 20 modelami (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **Tekst na wideo** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) i SD WebUI
-- **Tekst na muzykę** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
-- **Transkrypcja audio** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Zamiana tekstu na mowę** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + obecni dostawcy
-- **Moderacje** — `/v1/moderations` — Sprawdzanie bezpieczeństwa treści
-- **Reranking** — `/v1/rerank` — Zmiana rankingu trafności dokumentu
-- **Responses API** — Pełna obsługa `/v1/responses` dla Codexu
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. „Nie mam możliwości przetestowania i porównania jakości pomiędzy modelami”
+🧪 14. "I have no way to test and compare quality across models"
-Programiści chcą wiedzieć, który model jest najlepszy dla ich przypadku użycia — kodu, tłumaczenia, rozumowania — ale ręczne porównywanie jest powolne. Nie istnieją żadne zintegrowane narzędzia eval.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Oceny LLM** — Testowanie złotego zestawu z 10 fabrycznie załadowanymi skrzynkami obejmującymi pozdrowienia, matematykę, geografię, generowanie kodu, zgodność z JSON, tłumaczenie, przeceny, odmowy ze względów bezpieczeństwa
-- **4 strategie dopasowania** — `exact`, `contains`, `regex`, `custom` (funkcja JS)
-- **Stolik testowy dla tłumaczy** — Testowanie wsadowe z wieloma danymi wejściowymi i oczekiwanymi wynikami, porównanie różnych dostawców
-- **Tester czatu** — Pełna podróż w obie strony z renderowaniem odpowiedzi wizualnych
-- **Live Monitor** — Strumień w czasie rzeczywistym wszystkich żądań przepływających przez serwer proxy
+- **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. „Muszę skalować bez utraty wydajności”
+📈 15. "I need to scale without losing performance"
-W miarę wzrostu liczby żądań bez buforowania tych samych pytań generowane są podwójne koszty. Bez idempotencji zduplikowane żądania przetwarzania odpadów. Należy przestrzegać limitów stawek dla poszczególnych dostawców.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Semantyczna pamięć podręczna** — Dwuwarstwowa pamięć podręczna (podpis + semantyka) zmniejsza koszty i opóźnienia
-- **Request Idempotency** — okno deduplikacji 5 s dla identycznych żądań
-- **Wykrywanie limitów szybkości** — RPM na dostawcę, minimalna przerwa i maksymalne jednoczesne śledzenie
-- **Edytowalne limity szybkości** — Konfigurowalne ustawienia domyślne w Ustawieniach → Odporność z trwałością
-- **API Key Validation Cache** — 3-warstwowa pamięć podręczna zapewniająca wydajność produkcyjną
-- **Panel kontrolny stanu z telemetrią** — opóźnienia p50/p95/p99, statystyki pamięci podręcznej, czas pracy
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. „Chcę kontrolować zachowanie modelu globalnie”
+🤖 16. "I want to control model behavior globally"
-Deweloperzy, którzy chcą wszystkich odpowiedzi w określonym języku, w określonym tonie lub chcą ograniczyć tokeny rozumowania. Konfigurowanie tego w każdym narzędziu/żądaniu jest niepraktyczne.
+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.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- **Wstrzykiwanie monitu systemowego** — monit globalny stosowany do wszystkich żądań
-- **Przemyślana walidacja budżetu** — Kontrola alokacji tokenów rozumowania na każde żądanie (przejściowe, automatyczne, niestandardowe, adaptacyjne)
-- **6 Strategii routingu** — Globalne strategie określające sposób dystrybucji żądań
-- **Wildcard Router** — wzorce `provider/*` są przesyłane dynamicznie do dowolnego dostawcy
-- **Przełączanie kombinacji włącz/wyłącz** — przełączaj kombinacje bezpośrednio z pulpitu nawigacyjnego
-- **Przełączanie dostawcy** — Włącz/wyłącz wszystkie połączenia dla dostawcy jednym kliknięciem
-- **Zablokowani dostawcy** — Wyklucz określonych dostawców z listy `/v1/models`
+- **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
-🧰 17. „Potrzebuję narzędzi MCP jako produktów najwyższej klasy”
+🧰 17. "I need MCP tools as first-class product capabilities"
-Wiele bram AI ujawnia MCP jedynie jako ukryty szczegół implementacji. Zespoły potrzebują widocznej, zarządzalnej warstwy operacyjnej.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- MCP pojawia się w panelu nawigacji na desce rozdzielczej i w zakładce protokołu punktu końcowego
-- Dedykowana strona zarządzania MCP z procesem, narzędziami, zakresami i audytem
-- Wbudowany szybki start dla `omniroute --mcp` i dołączania klientów
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. „Potrzebuję orkiestracji A2A ze ścieżkami zadań synchronizacji i strumieniowania”
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Przepływy pracy agentów wymagają zarówno bezpośrednich odpowiedzi, jak i długotrwałego wykonywania strumieniowego z kontrolą cyklu życia.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Punkt końcowy A2A JSON-RPC (`POST /a2a`) z `message/send` i `message/stream`
-- Przesyłanie strumieniowe SSE z propagacją stanu terminala
- — Interfejsy API cyklu życia zadań dla `tasks/get` i `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. „Potrzebuję prawdziwego stanu procesu MCP, a nie zgadniętego statusu”
+🛰️ 19. "I need real MCP process health, not guessed status"
-Zespoły operacyjne muszą wiedzieć, czy MCP rzeczywiście żyje, a nie tylko, czy można uzyskać dostęp do interfejsu API.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Plik pulsu środowiska wykonawczego z PID, znacznikami czasu, transportem, liczbą narzędzi i trybem zakresu
-- API statusu MCP łączące puls + ostatnią aktywność
-- Karty stanu interfejsu użytkownika dotyczące świeżości procesów/czasu pracy/bicia serca
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. „Potrzebuję wykonania narzędzia MCP z możliwością audytu”
+📋 20. "I need auditable MCP tool execution"
-Gdy narzędzia modyfikują konfigurację lub uruchamiają działania operacyjne, zespoły potrzebują identyfikowalności kryminalistycznej.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Wspierane przez SQLite rejestrowanie audytu dla wywołań narzędzi MCP
-- Filtruje według narzędzia, sukcesu/porażki, klucza API i paginacji
-- Tabela audytu pulpitu nawigacyjnego + punkty końcowe statystyk dla automatyzacji
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. „Potrzebuję uprawnień MCP o określonym zakresie na integrację”
+🔐 21. "I need scoped MCP permissions per integration"
-Różni klienci powinni mieć najniższy dostęp do kategorii narzędzi.
+Different clients should have least-privilege access to tool categories.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- 9 szczegółowych zakresów MCP zapewniających kontrolowany dostęp do narzędzi
-- Egzekwowanie zakresu i widoczność w interfejsie zarządzania MCP
-- Bezpieczna domyślna pozycja dla narzędzi operacyjnych
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. „Potrzebuję kontroli operacyjnej bez ponownego wdrażania”
+⚙️ 22. "I need operational controls without redeploying"
-Zespoły potrzebują szybkich zmian w czasie działania podczas incydentów lub zdarzeń kosztowych.
+Teams need quick runtime changes during incidents or cost events.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Aktywacja kombinacji przełączników bezpośrednio z pulpitu nawigacyjnego MCP
-- Zastosuj profile odporności ze wstępnie zdefiniowanych pakietów zasad
-- Zresetuj stan wyłącznika automatycznego z tego samego panelu operacyjnego
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. „Potrzebuję widoczności i anulowania cyklu życia zadania A2A na żywo”
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Bez widoczności cyklu życia zdarzenia związane z zadaniami stają się trudne do segregacji.
+Without lifecycle visibility, task incidents become hard to triage.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Lista zadań/filtrowanie według stanu/umiejętności z paginacją
-- Szczegółowa analiza metadanych zadań, zdarzeń i artefaktów
-- Punkt końcowy anulowania zadania i akcja interfejsu użytkownika z potwierdzeniem
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. „Potrzebuję metryk aktywnego strumienia dla obciążenia A2A”
+🌊 24. "I need active stream metrics for A2A load"
-Przepływy pracy związane z przesyłaniem strumieniowym wymagają operacyjnego wglądu w współbieżność i połączenia na żywo.
+Streaming workflows require operational insight into concurrency and live connections.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Aktywne liczniki strumieni zintegrowane ze statusem A2A
-- Znacznik czasu ostatniego zadania i liczba stanów
-- Karty pulpitu A2A do monitorowania operacji w czasie rzeczywistym
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. „Potrzebuję standardowego wyszukiwania agentów dla klientów”
+🪪 25. "I need standard agent discovery for clients"
-Zewnętrzni klienci i koordynatorzy potrzebują metadanych do odczytu maszynowego na potrzeby wdrożenia.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Karta agenta ujawniona pod adresem `/.well-known/agent.json`
-- Możliwości i umiejętności pokazane w interfejsie zarządzania
-- Interfejs API stanu A2A zawiera metadane wykrywania do automatyzacji
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. „Potrzebuję możliwości wykrycia protokołu w UX produktu”
+🧭 26. "I need protocol discoverability in the product UX"
-Jeśli użytkownicy nie mogą odkryć powierzchni protokołu, spada jakość przyjęcia i wsparcia.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Wpisy na pasku bocznym dla MCP i A2A
-- Strona punktu końcowego, zakładka Protokoły z szybkim startem i statusem
-- Linki z przeglądu do dedykowanych pulpitów zarządzania
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. „Potrzebuję kompleksowej weryfikacji protokołu z prawdziwymi klientami”
+🧪 27. "I need end-to-end protocol validation with real clients"
-Testy próbne nie wystarczą do sprawdzenia zgodności protokołu przed wydaniem.
+Mock tests are not enough to validate protocol compatibility before release.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Pakiet E2E, który uruchamia aplikację i wykorzystuje prawdziwy transport klienta MCP SDK
-- Testy klienta A2A pod kątem wykrywania, wysyłania, przesyłania strumieniowego, pobierania i anulowania przepływów
-- Sprawdzaj twierdzenia względem interfejsów API audytu MCP i zadań A2A
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. „Potrzebuję ujednoliconej obserwowalności na wszystkich interfejsach”
+📡 28. "I need unified observability across all interfaces"
-Podział obserwowalności według protokołu tworzy martwe punkty i wydłuża MTTR.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Ujednolicone dashboardy/dzienniki/analizy w jednym produkcie
-- Stan + audyt + telemetria żądań w warstwach OpenAI, MCP i A2A
-- Operacyjne interfejsy API dla statusu i automatyzacji
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. „Potrzebuję jednego środowiska wykonawczego dla serwera proxy + narzędzi + orkiestracji agenta”
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Uruchamianie wielu oddzielnych usług zwiększa koszty operacyjne i tryby awarii.
+Running many separate services increases operational cost and failure modes.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Serwer proxy zgodny z OpenAI, serwer MCP i serwer A2A w jednym stosie
-- Wspólne uwierzytelnianie, odporność, magazyn danych i obserwowalność
-- Spójny model polityki na wszystkich płaszczyznach interakcji
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. „Muszę dostarczać agentowe przepływy pracy bez konieczności rozrzucania kodu kleju”
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Zespoły tracą prędkość podczas łączenia wielu usług i skryptów ad hoc.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Jak rozwiązuje to OmniRoute:**
+**How OmniRoute solves it:**
-- Ujednolicona strategia dotycząca punktów końcowych dla klientów i agentów
-- Wbudowane interfejsy zarządzania protokołami i ścieżki sprawdzania dymu
-- Podstawy gotowe do produkcji (bezpieczeństwo, logowanie, odporność, kopie zapasowe)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Przykładowe podręczniki (zintegrowane przypadki użycia)
+### Example Playbooks (Integrated Use Cases)
-**Poradnik A: maksymalizuj płatną subskrypcję + tanią kopię zapasową**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -683,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Poradnik B: stos kodowania o zerowym koszcie**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -695,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Poradnik C: łańcuch awaryjny działający 24 godziny na dobę, 7 dni w tygodniu**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -708,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Poradnik D: Operacje agenta z MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Szybki start
+## 🆓 Start Free — Zero Configuration Cost
-**1. Zainstaluj globalnie:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Szybki start
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Panel otwiera się o `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Polecenie | Opis |
-| ----------------------- | --------------------------------------- |
-| `omniroute` | Uruchom serwer (domyślny port 20128) |
-| `omniroute --port 3000` | Użyj niestandardowego portu |
-| `omniroute --no-open` | Nie otwieraj automatycznie przeglądarki |
-| `omniroute --help` | Pokaż pomoc |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Połącz się z DARMOWYM dostawcą:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Panel kontrolny → Dostawcy → Połącz **Kod Claude** lub **Antygrawitacja** → Logowanie OAuth → Gotowe!
+Optional split-port mode:
-**3. Użyj w swoim narzędziu CLI:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**To wszystko!** Zacznij kodować za pomocą DARMOWYCH modeli AI.
+### 2) Connect providers and create your API key
-**Alternatywa — uruchamiana ze źródła:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
-## 🐳 Doker
+## 🐳 Docker
-OmniRoute jest dostępny jako publiczny obraz Dockera na [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Szybki bieg:**
+**Quick run:**
```bash
docker run -d \
@@ -777,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Z plikiem środowiska:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -792,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Korzystanie z funkcji Docker Compose:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -802,257 +880,552 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| Obraz | Oznacz | Rozmiar | Opis |
-| ------------------------ | -------- | ------- | ------------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250 MB | Najnowsza stabilna wersja |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250 MB | Aktualna wersja |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+### Szybki start
+
```bash
-npm run electron:dev # Development mode
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Ceny w skrócie
+## 💰 Pricing at a Glance
-| Poziom | Dostawca | Koszt | Reset przydziału | Najlepsze dla |
-| ------------------ | ------------------- | ----------------------------- | ----------------------------- | -------------------------------- |
-| **💳 SUBSKRYPCJA** | Claude Code (Pro) | 20 USD/mies. | 5h + tygodniowo | Już subskrybujesz |
-| | Kodeks (Plus/Pro) | 20-200 $/mies. | 5h + tygodniowo | Użytkownicy OpenAI |
-| | Bliźnięta CLI | **BEZPŁATNE** | 180 tys./mies. + 1 tys./dzień | Wszyscy! |
-| | Drugi pilot GitHuba | 10–19 USD/mies. | Miesięczne | Użytkownicy GitHuba |
-| **🔑 KLUCZ API** | NVIDIA NIM | **BEZPŁATNE** (1000 kredytów) | Jednorazowe | Bezpłatne testowanie poziomów |
-| | DeepSeek | Płatność za użycie | Brak | Najlepsza cena/jakość |
-| | Groq | Poziom bezpłatny + płatny | Stawka ograniczona | Ultraszybkie wnioskowanie |
-| | xAI (Grok) | Płatność za użycie | Brak | Modele Groka |
-| | Mistral | Poziom bezpłatny + płatny | Stawka ograniczona | Europejska sztuczna inteligencja |
-| | OtwórzRouter | Płatność za użycie | Brak | Ponad 100 modeli |
-| **💰 TANIO** | GLM-4.7 | 0,6 USD/1 mln | Codziennie 10:00 | Kopia zapasowa budżetu |
-| | MiniMax M2.1 | 0,2 USD/1 mln | 5-godzinne toczenie | Najtańsza opcja |
-| | Kimi K2 | 9 USD miesięcznie | 10 mln tokenów/mies. | Przewidywalny koszt |
-| **🆓 DARMOWE** | iFlow | 0 dolarów | Nieograniczony | 8 modeli za darmo |
-| | Qwen | 0 dolarów | Nieograniczony | 3 modele za darmo |
-| | Kiro | 0 dolarów | Nieograniczony | Claude wolny |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Wskazówka dla profesjonalistów:** Zacznij od zestawu Gemini CLI (180 tys. za darmo/miesiąc) + iFlow (bez ograniczeń za darmo) = koszt 0 USD!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Kluczowe funkcje
+---
-### 🧠 Routing i inteligencja rdzenia
+## 🆓 Free Models — What You Actually Get
-| Funkcja | Co to robi |
-| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
-| 🎯 **Inteligentny 4-poziomowy powrót** | Auto-trasa: Subskrypcja → Klucz API → Tanie → Bezpłatne |
-| 📊 **Śledzenie limitów w czasie rzeczywistym** | Liczba tokenów na żywo + odliczanie resetowania dla każdego dostawcy |
-| 🔄 **Tłumaczenie formatu** | OpenAI ↔ Claude ↔ Bliźnięta ↔ Kursor ↔ Kiro bezproblemowo + oczyszczanie odpowiedzi |
-| 👥 **Obsługa wielu kont** | Wiele kont na dostawcę z inteligentnym wyborem |
-| 🔄 **Automatyczne odświeżanie tokena** | Tokeny OAuth odświeżają się automatycznie przy ponownej próbie |
-| 🎨 **Niestandardowe kombinacje** | 6 strategii: najpierw wypełnij, okrężnie, p2c, losowa, najrzadziej używana, zoptymalizowana pod względem kosztów |
-| 🧩 **Modele niestandardowe** | Dodaj dowolny identyfikator modelu do dowolnego dostawcy |
-| 🌐 **Router z dziką kartą** | Dynamicznie kieruj `provider/*` wzorce do dowolnego dostawcy |
-| 🧠 **Myślący budżet** | Tryby przekazywania, automatyczne, niestandardowe i adaptacyjne dla modeli wnioskowania |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **Wstrzyknięcie monitu systemowego** | Globalny monit systemowy stosowany do wszystkich żądań |
-| 📄 **API odpowiedzi** | Pełna obsługa OpenAI Responses API (`/v1/responses`) dla Codexu |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 Wielomodalne interfejsy API
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Funkcja | Co to robi |
-| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Generowanie obrazu** | `/v1/images/generations` — 4 dostawców, ponad 9 modeli |
-| 📐 **Osadzenia** | `/v1/embeddings` — 6 dostawców, ponad 9 modeli |
-| 🎤 **Transkrypcja audio** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Zamiana tekstu na mowę** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Moderacje** | `/v1/moderations` — Kontrola bezpieczeństwa treści |
-| 🔀 **Ponowna pozycja** | `/v1/rerank` — Zmiana rankingu trafności dokumentu |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Odporność i bezpieczeństwo
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| Funkcja | Co to robi |
-| --------------------------------------------- | ------------------------------------------------------------------------------------------- |
-| 🔌 **Wyłącznik** | Automatyczne otwieranie/zamykanie dla każdego dostawcy z konfigurowalnymi progami |
-| 🛡️ **Stado Przeciw Gromom** | Mutex + limit szybkości semaforów dla dostawców kluczy API |
-| 🧠 **Pamięć podręczna semantyczna** | Dwuwarstwowa pamięć podręczna (podpis + semantyka) zmniejsza koszty i opóźnienia |
-| ⚡ **Poproś o idempotencję** | Okno deduplikacji 5s dla zduplikowanych żądań |
-| 🔒 **Podrabianie odcisków palców TLS** | Pomiń wykrywanie botów opartych na TLS poprzez wreq-js |
-| 🌐 **Filtrowanie IP** | Lista dozwolonych/blokowanych dla kontroli dostępu API |
-| 📊 **Edytowalne limity stawek** | Konfigurowalne obroty, minimalna przerwa i maksymalna równowaga na poziomie systemu |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **Ochrona punktu końcowego API** | Bramkowanie uwierzytelniania + blokowanie dostawcy dla punktu końcowego `/models` |
-| 🔒 **Widoczność proxy** | Oznaczone kolorami plakietki: 🟢 globalny, 🟡 dostawca, 🔵 na połączenie z wyświetlaczem IP |
-| 🌐 **3-poziomowa konfiguracja serwera proxy** | Skonfiguruj serwery proxy na poziomie globalnym, dla dostawcy lub dla połączenia |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 Obserwacja i analityka
+### 🟡 QWEN MODELS (Device Code Auth)
-| Funkcja | Co to robi |
-| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
-| 📝 **Poproś o zalogowanie** | Tryb debugowania z pełnymi dziennikami żądań/odpowiedzi |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **Dzienniki proxy SQLite** | Trwałe dzienniki proxy przetrwają ponowne uruchomienie serwera |
-| 📊 **Panel analityczny** | Oparte na Recharts: karty statystyk, wykres wykorzystania modelu, tabela dostawców |
-| 📈 **Śledzenie postępów** | Zapisz się na wydarzenia postępu SSE dla transmisji strumieniowej |
-| 🧪 **Oceny LLM** | Testowanie złotego seta z 4 strategiami meczowymi |
-| 🔍 **Poproś o telemetrię** | Agregacja opóźnień p50/p95/p99 + śledzenie X-Request-Id |
-| 📋 **Panel logów** | Ujednolicona strona z czterema zakładkami: Dzienniki żądań, Dzienniki proxy, Dzienniki audytu, Konsola |
-| 🖥️ **Przeglądarka logów konsoli** | Przeglądarka przypominająca terminal w czasie rzeczywistym z filtrem poziomów, wyszukiwaniem i automatycznym przewijaniem |
-| 📑 **Rejestrowanie oparte na plikach** | Przechwytywacz konsoli przechwytuje wszystkie dane wyjściowe do pliku dziennika JSON z rotacją |
-| 🏥 **Panel zdrowia** | Czas pracy systemu, stany wyłączników, blokady, statystyki pamięci podręcznej |
-| 💰 **Śledzenie kosztów** | Zarządzanie budżetem + konfiguracja cen dla poszczególnych modeli |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ Wdrożenie i synchronizacja
+### 🟣 GEMINI CLI (Google OAuth)
-| Funkcja | Co to robi |
-| ------------------------------------ | ------------------------------------------------------------------------------------------------------- |
-| 💾 **Synchronizacja z chmurą** | Synchronizuj konfigurację między urządzeniami za pośrednictwem Cloudflare Workers |
-| 🌐 **Wdrażaj gdziekolwiek** | Localhost, VPS, Docker, Pracownicy Cloudflare |
-| 🔑 **Zarządzanie kluczami API** | Generuj, obracaj i ustalaj zakres kluczy API dla każdego dostawcy |
-| 🧙 **Kreator wdrażania** | Konfiguracja z przewodnikiem w 4 krokach dla początkujących użytkowników |
-| 🔧 **Panel narzędzi CLI** | Jednym kliknięciem skonfiguruj Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **Kopie zapasowe DB** | Automatyczne tworzenie kopii zapasowych, przywracanie, eksportowanie i importowanie wszystkich ustawień |
-| 🌐 **Internacjonalizacja** | Pełny i18n z next-intl — obsługa języka angielskiego i portugalskiego (Brazylia) |
-| 🌍 **Wybór języka** | Ikona kuli ziemskiej w nagłówku umożliwiająca zmianę języka w czasie rzeczywistym (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Niestandardowy katalog danych** | `DATA_DIR` env var, aby zastąpić domyślną ścieżkę przechowywania `~/.omniroute` |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Szczegóły funkcji
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Inteligentny 4-poziomowy powrót awaryjny
+Start MCP transport in stdio mode:
-Twórz kombinacje z automatycznym cofaniem:
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 Śledzenie limitów w czasie rzeczywistym
+Recommended validation flow:
-- Zużycie tokenów na dostawcę
-- Zresetuj odliczanie (5-godzinne, dzienne, tygodniowe)
-- Szacowanie kosztów dla płatnych poziomów
-- Miesięczne raporty wydatków
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Tłumaczenie formatu
+Useful APIs for automation:
-Płynne tłumaczenie pomiędzy formatami:
-
-- **OpenAI** ↔ **Claude** ↔ **Bliźnięta** ↔ **Odpowiedzi OpenAI**
-- Twoje narzędzie CLI wysyła format OpenAI → OmniRoute tłumaczy → Dostawca otrzymuje format natywny
-- Działa z każdym narzędziem obsługującym niestandardowe punkty końcowe OpenAI
-- **Oczyszczanie odpowiedzi** — Usuwa niestandardowe pola w celu zapewnienia ścisłej zgodności z OpenAI SDK
-- **Normalizacja ról** — `developer` → `system` dla innych niż OpenAI; `system` → `user` dla modeli GLM/ERNIE
-- **Pomyśl o ekstrakcji tagów** — `` bloki → `reasoning_content` dla modeli myślących
-- **Ustrukturyzowane dane wyjściowe** — `json_schema` → Gemini `responseMimeType`/`responseSchema`
-
-### 👥 Obsługa wielu kont
-
-- Dodaj wiele kont na dostawcę
-- Automatyczne routing okrężny lub oparty na priorytetach
-- Powrót do następnego konta, gdy jedno osiągnie limit
-
-### 🔄 Automatyczne odświeżanie tokena
-
-- Tokeny OAuth są automatycznie odświeżane przed wygaśnięciem
-- Nie ma potrzeby ręcznego ponownego uwierzytelniania
-- Jednolite doświadczenie u wszystkich dostawców
-
-### 🎨 Niestandardowe kombinacje
-
-- Twórz nieograniczone kombinacje modeli
-- 6 strategii: najpierw wypełnij, okrężnie, siła dwóch wyborów, losowa, najrzadziej używana, zoptymalizowana pod względem kosztów
-- Udostępniaj kombinacje na różnych urządzeniach dzięki Cloud Sync
-
-### 🏥 Panel zdrowia
-
-- Stan systemu (czas działania, wersja, wykorzystanie pamięci)
-- Stany wyłączników według dostawcy (zamknięty/otwarty/półotwarty)
-- Stan limitu szybkości i aktywne blokady
-- Statystyki pamięci podręcznej podpisów
-- Telemetria opóźnień (p50/p95/p99) + pamięć podręczna podpowiedzi
-- Zresetuj stan zdrowia jednym kliknięciem
-
-### 🔧 Plac zabaw dla tłumaczy
-
-OmniRoute zawiera potężny, wbudowany plac zabaw dla tłumaczy z **4 trybami** do debugowania, testowania i monitorowania tłumaczeń API:
-
-| Tryb | Opis |
-| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻 Plac zabaw** | Bezpośrednie tłumaczenie formatu — wklej dowolną treść żądania API i od razu zobacz, jak OmniRoute tłumaczy ją pomiędzy formatami dostawców (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Zawiera przykładowe szablony i automatyczne wykrywanie formatu. |
-| **💬 Tester czatu** | Wysyłaj prawdziwe prośby o czat za pośrednictwem OmniRoute i zobacz pełny przebieg: Twoje dane wejściowe, przetłumaczone żądanie, odpowiedź dostawcy i przetłumaczona odpowiedź z powrotem. Nieocenione przy sprawdzaniu routingu combo. |
-| **🧪 Stanowisko testowe** | Tryb testowania wsadowego — zdefiniuj wiele przypadków testowych z różnymi danymi wejściowymi i oczekiwanymi wynikami, uruchom je wszystkie na raz i porównaj wyniki u różnych dostawców i modeli. |
-| **📱 Monitorowanie na żywo** | Monitorowanie żądań w czasie rzeczywistym — obserwuj przychodzące żądania przepływające przez OmniRoute, obserwuj na żywo tłumaczenia formatów i natychmiast identyfikuj problemy. |
-
-**Dostęp:** Panel → Tłumacz (pasek boczny)
-
-### 💾 Synchronizacja z chmurą
-
-- Synchronizuj dostawców, kombinacje i ustawienia na różnych urządzeniach
-- Automatyczna synchronizacja w tle
-- Bezpieczne szyfrowane przechowywanie
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Oceny (Ewaluacje)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute zawiera wbudowaną platformę ewaluacyjną do testowania jakości odpowiedzi LLM na podstawie złotego zestawu. Uzyskaj do niego dostęp poprzez **Analytics → Evals** na pulpicie nawigacyjnym.
+Discover the agent:
-### Wbudowany złoty zestaw
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-Fabrycznie załadowany „Złoty zestaw OmniRoute” zawiera 10 przypadków testowych obejmujących:
+Send a task:
-- Pozdrowienia, matematyka, geografia, generowanie kodu
-- Zgodność z formatem JSON, tłumaczenie, przecena
-- Odmowa bezpieczeństwa (szkodliwa treść), liczenie, logika boolowska
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Strategie oceny
+Manage lifecycle:
-| Strategia | Opis | Przykład |
-| ---------- | ----------------------------------------------------------------------- | -------------------------------- |
-| `exact` | Dane wyjściowe muszą dokładnie odpowiadać | `"4"` |
-| `contains` | Dane wyjściowe muszą zawierać podciąg (wielkość liter nie ma znaczenia) | `"Paris"` |
-| `regex` | Dane wyjściowe muszą pasować do wzorca wyrażenia regularnego | `"1.*2.*3"` |
-| `custom` | Niestandardowa funkcja JS zwraca wartość prawda/fałsz | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Przewodnik konfiguracji
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Dostawcy subskrypcji
+🧪 End-to-end protocol validation
-### Kod Claude’a (Pro/Max)
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
+
+### Claude Code (Pro/Max)
```bash
Dashboard → Providers → Connect Claude Code
@@ -1065,9 +1438,9 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**Wskazówka dla profesjonalistów:** używaj Opus do skomplikowanych zadań, a Sonnet do szybkości. OmniRoute śledzi limit na model!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
-### Kodeks OpenAI (Plus/Pro)
+### OpenAI Codex (Plus/Pro)
```bash
Dashboard → Providers → Connect Codex
@@ -1079,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (DARMOWE 180 tys./miesiąc!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1091,9 +1481,9 @@ Models:
gc/gemini-2.5-pro
```
-**Najlepsza wartość:** Ogromny darmowy poziom! Użyj tego przed płatnymi poziomami.
+**Best Value:** Huge free tier! Use this before paid tiers.
-### Drugi pilot GitHuba
+### GitHub Copilot
```bash
Dashboard → Providers → Connect GitHub
@@ -1109,88 +1499,88 @@ Models:
-🔑 Dostawcy kluczy API
+🔑 API Key Providers
-### NVIDIA NIM (DARMOWE 1000 kredytów!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Zarejestruj się: [build.nvidia.com](https://build.nvidia.com)
-2. Uzyskaj bezpłatny klucz API (w cenie 1000 kredytów)
-3. Panel kontrolny → Dodaj dostawcę → NVIDIA NIM:
- - Klucz API: `nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**Modele:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` i ponad 50 innych
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Wskazówka dla profesjonalistów:** API zgodne z OpenAI — działa bezproblemowo z tłumaczeniem formatu OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Zarejestruj się: [platform.deepseek.com](https://platform.deepseek.com)
-2. Zdobądź klucz API
-3. Panel kontrolny → Dodaj dostawcę → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Modele:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (dostępny bezpłatny poziom!)
+### Groq (Free Tier Available!)
-1. Zarejestruj się: [console.groq.com](https://console.groq.com)
-2. Uzyskaj klucz API (w cenie bezpłatna warstwa)
-3. Panel kontrolny → Dodaj dostawcę → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Modele:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Wskazówka dla profesjonalistów:** Ultraszybkie wnioskowanie — najlepsze do kodowania w czasie rzeczywistym!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (ponad 100 modeli)
+### OpenRouter (100+ Models)
-1. Zarejestruj się: [openrouter.ai](https://openrouter.ai)
-2. Zdobądź klucz API
-3. Panel kontrolny → Dodaj dostawcę → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Modele:** Uzyskaj dostęp do ponad 100 modeli wszystkich głównych dostawców za pomocą jednego klucza API.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Tani dostawcy (kopia zapasowa)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (reset dzienny, 0,6 USD/1 mln)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Zarejestruj się: [Zhipu AI](https://open.bigmodel.cn/)
-2. Uzyskaj klucz API z planu kodowania
-3. Panel → Dodaj klucz API:
- - Dostawca: `glm`
- - Klucz API: `your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**Użyj:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Wskazówka dla profesjonalistów:** Plan kodowania oferuje 3× limit przy cenie 1/7! Resetuj codziennie o 10:00.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (reset 5 godz., 0,20 USD/1 mln)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Zarejestruj się: [MiniMax](https://www.minimax.io/)
-2. Zdobądź klucz API
-3. Panel → Dodaj klucz API
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Użyj:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Wskazówka dla profesjonalistów:** Najtańsza opcja dla długiego kontekstu (1 milion tokenów)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 (9 USD miesięcznie)
+### Kimi K2 ($9/month flat)
-1. Subskrybuj: [Moonshot AI](https://platform.moonshot.ai/)
-2. Zdobądź klucz API
-3. Panel → Dodaj klucz API
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Użyj:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Wskazówka dla profesjonalistów:** Naprawiono 9 USD miesięcznie za 10 mln tokenów = efektywny koszt 0,90 USD/1 mln!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 BEZPŁATNI dostawcy (awaryjna kopia zapasowa)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 DARMOWYCH modeli)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1205,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 DARMOWE modele)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1217,7 +1607,7 @@ Models:
qw/qwen3-coder-flash
```
-### Kiro (Claude ZA DARMO)
+### Kiro (Claude FREE)
```bash
Dashboard → Connect Kiro
@@ -1232,9 +1622,9 @@ Models:
-🎨 Utwórz kombinacje
+🎨 Create Combos
-### Przykład 1: Maksymalizuj subskrypcję → Tania kopia zapasowa
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1248,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### Przykład 2: Tylko bezpłatny (zero kosztów)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1263,9 +1653,9 @@ Cost: $0 forever!
-🔧 Integracja z CLI
+🔧 CLI Integration
-### IDE kursora
+### Cursor IDE
```
Settings → Models → Advanced:
@@ -1274,11 +1664,11 @@ Settings → Models → Advanced:
Model: cc/claude-opus-4-6
```
-### Kod Claude’a
+### Claude Code
-Użyj strony **Narzędzia CLI** w panelu kontrolnym, aby dokonać konfiguracji jednym kliknięciem, lub edytuj ręcznie `~/.claude/settings.json`.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
-### Interfejs wiersza polecenia Kodeksu
+### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
@@ -1289,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Opcja 1 — Panel kontrolny (zalecany):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Opcja 2 — Ręcznie:** Edytuj `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1311,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **Uwaga:** OpenClaw działa tylko z lokalnym OmniRoute. Użyj `127.0.0.1` zamiast `localhost`, aby uniknąć problemów z rozdzielczością IPv6.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### Kliknij / Kontynuuj / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1323,110 +1713,245 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Rozwiązywanie problemów
+## Rozwiązywanie problemów
-Kliknij, aby rozwinąć przewodnik rozwiązywania problemów
+Click to expand troubleshooting guide
-**„Model językowy nie dostarczał komunikatów”**
+**"Language model did not provide messages"**
-- Wyczerpany limit dostawcy → Sprawdź moduł śledzenia limitów na pulpicie nawigacyjnym
-- Rozwiązanie: użyj kombinacji zastępczej lub przejdź na tańszy poziom
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**Ograniczenie szybkości**
+**Rate limiting**
-- Limit subskrypcji wyczerpany → Powrót do GLM/MiniMax
-- Dodaj kombinację: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**Token OAuth wygasł**
+**OAuth token expired**
-- Automatyczne odświeżanie przez OmniRoute
-- Jeśli problemy nadal występują: Panel kontrolny → Dostawca → Połącz ponownie
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Wysokie koszty**
+**High costs**
-- Sprawdź statystyki użytkowania w Panelu → Koszty
-- Zmień model podstawowy na GLM/MiniMax
-- Korzystaj z bezpłatnej warstwy (Gemini CLI, iFlow) do zadań niekrytycznych
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-** Panel otwiera się na złym porcie **
+**Dashboard/API ports are wrong**
-- Ustaw `PORT=20128` i `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Błędy synchronizacji z chmurą**
+**Cloud sync errors**
-- Sprawdź, czy `BASE_URL` wskazuje na działającą instancję
-- Sprawdź, czy `CLOUD_URL` wskazuje na oczekiwany punkt końcowy w chmurze
-- Zachowaj wyrównanie wartości `NEXT_PUBLIC_*` z wartościami po stronie serwera
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Pierwsze logowanie nie działa**
+**First login not working**
-- Sprawdź `INITIAL_PASSWORD` w `.env`
-- Jeśli nieustawione, hasło zastępcze to `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Brak dzienników żądań**
+**No request logs**
-- Ustaw `ENABLE_REQUEST_LOGS=true` w `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Test połączenia pokazuje „Nieprawidłowy” dla dostawców kompatybilnych z OpenAI**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Wielu dostawców nie udostępnia punktu końcowego `/models`
-- OmniRoute v1.0.6+ zawiera weryfikację awaryjną poprzez uzupełnianie czatu
-- Upewnij się, że podstawowy adres URL zawiera przyrostek `/v1`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 OAuth na serwerze zdalnym (zdalna konfiguracja OAuth)
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ WAŻNE dla zwykłych usług OmniRoute w VPS/Docker/serwidor zdalny**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-#### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-Sprawdzone **Antigravity** i **Gemini CLI** używane **Google OAuth 2.0** dla autentyczności. O Google, jeśli potrzebujesz `redirect_uri`, aby nie zmieniać protokołu OAuth seja **exatamente** uma das URI pre-cadastradas no Google Cloud Console to aplicativo.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-Jako uwierzytelnienie OAuth zostało wydane przez OmniRoute w cadastradas **apenas dla `localhost`**. Możesz uzyskać dostęp do OmniRoute na serwerze zdalnym (np.: `https://omniroute.meuservidor.com`), lub Google rejeita a autenticação com:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### Rozwiązanie: Skonfiguruj suas próprias credenciais OAuth
+#### Solution: Configure your own OAuth credentials
-Precyzyjne żądanie **Identyfikator klienta OAuth 2.0** nie Google Cloud Console poprzez URI do tego serwera.
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
-#### Passo za passo
+#### Step-by-step
-**1. Dostęp do konsoli Google Cloud**
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
+
+#### Passo a passo
+
+**1. Acesse o Google Cloud Console**
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
-**2. Wezwij nowy identyfikator klienta OAuth 2.0**
+**2. Crie um novo OAuth 2.0 Client ID**
-- Kliknij **"+ Utwórz dane uwierzytelniające"** → **"Identyfikator klienta OAuth"**
-- Typ aplikacji: **"Aplikacja internetowa"**
-- Nazwa: escolha qualquer nom (np.: `OmniRoute Remote`)
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. Adicione jako autoryzowane identyfikatory URI przekierowań**
+**3. Adicione as Authorized Redirect URIs**
-Bez komentarza **„Autoryzowane identyfikatory URI przekierowań”**, rada:
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
```
-> Substitua `seu-servidor.com` pelo domínio lub IP do seu servidor (w tym porta se necessário, np.: `http://45.33.32.156:20128/callback`).
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. Zapisz i skopiuj jako poświadczenie**
+**4. Salve e copie as credenciais**
-Após criar, o Google mostrará o **Identyfikator klienta** i o **Tajemnica klienta**.
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. Skonfiguruj jako variáveis de ambiente**
+**5. Configure as variáveis de ambiente**
-Nie seu `.env` (lub nas variáveis de ambiente do Docker):
+No seu `.env` (ou nas variáveis de ambiente do Docker):
```bash
# Para Antigravity:
@@ -1439,7 +1964,7 @@ GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
```
-**6. Reinicie lub OmniRoute**
+**6. Reinicie o OmniRoute**
```bash
# Se usando npm:
@@ -1451,151 +1976,145 @@ docker restart omniroute
**7. Tente conectar novamente**
-Panel kontrolny → Dostawcy → Antygrawitacja (lub Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
-Agora o Google redirecionará corretamente dla `https://seu-servidor.com/callback` i autentyczna funkcja.
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### Obejście tymczasowe (sem configurar credenciais prróprias)
+#### Workaround temporário (sem configurar credenciais próprias)
-Jeśli chcesz uzyskać dostęp do **podręcznika URL**:
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. OmniRoute abrirá adres URL autoryzacji w Google
+1. O OmniRoute abrirá a URL de autorização do Google
2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
-3. **Skopiuj kompletny adres URL** da barra de endereço do seu przeglądarki (wiadomość que a página não carregue)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
-5. Kliknij je **„Połącz”**
+5. Clique em **"Connect"**
-> To obejście funkcji porque o kodigo de autorização na URL é válido niezależny do przekierowania ter carregado ou não.
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **Środowisko wykonawcze**: Node.js 18–22 LTS (⚠️ Node.js 24+ jest **nieobsługiwany** — `better-sqlite3` natywne pliki binarne są niekompatybilne)
-- **Język**: TypeScript 5.9 — **100% TypeScript** w `src/` i `open-sse/` (v1.0.6)
-- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
-- **Baza danych**: LowDB (JSON) + SQLite (stan domeny + logi proxy)
-- **Streaming**: zdarzenia wysyłane przez serwer (SSE)
-- **Auth**: OAuth 2.0 (PKCE) + JWT + klucze API
-- **Testowanie**: Uruchomienie testu Node.js (ponad 368 testów jednostkowych)
-- **CI/CD**: Akcje GitHub (automatyczne publikowanie npm + Docker Hub w momencie wydania)
-- **Strona internetowa**: [omniroute.online](https://omniroute.online)
-- **Pakiet**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **Doker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **Odporność**: wyłącznik automatyczny, wykładnicze wycofywanie, stado przeciwgrzmotowe, fałszowanie TLS
-
----
-
-## 📖 Dokumentacja
-
-| Dokument | Opis |
-| -------------------------------------------- | ----------------------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | Dostawcy, kombinacje, integracja CLI, wdrożenie |
-| [API Reference](docs/API_REFERENCE.md) | Wszystkie punkty końcowe z przykładami |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | Typowe problemy i rozwiązania |
-| [Architecture](docs/ARCHITECTURE.md) | Architektura systemu i elementy wewnętrzne |
-| [Contributing](CONTRIBUTING.md) | Konfiguracja i wytyczne dotyczące programowania |
-| [OpenAPI Spec](docs/openapi.yaml) | Specyfikacja OpenAPI 3.0 |
-| [Security Policy](SECURITY.md) | Zgłaszanie luk w zabezpieczeniach i praktyki bezpieczeństwa |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Kompletny przewodnik: konfiguracja VM + nginx + Cloudflare |
-| [Features Gallery](docs/FEATURES.md) | Wizualna wycieczka po panelu ze zrzutami ekranu |
-
-### 📸 Podgląd panelu
+## 🛠️ Tech Stack
-Kliknij, aby zobaczyć zrzuty ekranu panelu kontrolnego
+Click to expand tech stack details
-| Strona | Zrzut ekranu |
-| ------------------------- | ------------------------------------------------- |
-| **Dostawcy** |  |
-| **Kombinacje** |  |
-| **Analiza** |  |
-| **Zdrowie** |  |
-| **Tłumacz** |  |
-| **Ustawienia** |  |
-| **Narzędzia CLI** |  |
-| **Dzienniki użytkowania** |  |
-| **Punkt końcowy** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## Dokumentacja
-OmniRoute ma **ponad 210 funkcji zaplanowanych** w wielu fazach rozwoju. Oto kluczowe obszary:
-
-| Kategoria | Planowane funkcje | Najważniejsze |
-| -------------------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🧠 **Routing i inteligencja** | 25+ | Routing z najmniejszym opóźnieniem, routing oparty na tagach, wstępna inspekcja przydziału, wybór konta P2C |
-| 🔒 **Bezpieczeństwo i zgodność** | 20+ | Wzmocnienie SSRF, maskowanie poświadczeń, limit szybkości na punkt końcowy, zakres kluczy zarządzania |
-| 📊 **Obserwowalność** | 15+ | Integracja OpenTelemetry, monitorowanie kwot w czasie rzeczywistym, śledzenie kosztów według modelu |
-| 🔄 **Integracja dostawców** | 20+ | Rejestr modeli dynamicznych, czasy odnowienia dostawcy, Kodeks dla wielu kont, analiza przydziału Copilot |
-| ⚡ **Wydajność** | 15+ | Podwójna warstwa pamięci podręcznej, pamięć podręczna podpowiedzi, pamięć podręczna odpowiedzi, utrzymywanie transmisji strumieniowej, wsadowe API |
-| 🌐 **Ekosystem** | 10+ | WebSocket API, ładowanie konfiguracji na gorąco, rozproszony magazyn konfiguracji, tryb komercyjny |
-
-### 🔜 Już wkrótce
-
-- 🔗 **Integracja OpenCode** — natywna obsługa dostawców dla IDE kodowania OpenCode AI
-- 🔗 **Integracja z TRAE** — Pełne wsparcie dla platformy rozwojowej TRAE AI
-- 📦 **Batch API** — Asynchroniczne przetwarzanie wsadowe dla żądań masowych
-- 🎯 **Routing oparty na tagach** — Kieruj żądania na podstawie niestandardowych tagów i metadanych
-- 💰 **Strategia najniższych kosztów** — Automatycznie wybierz najtańszego dostępnego dostawcę
-
-> 📝 Pełna specyfikacja funkcji dostępna w [link](docs/new-features/) (217 szczegółowych specyfikacji)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 Współtwórcy
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Jak wnieść swój wkład
+### How to Contribute
-1. Forkuj repozytorium
-2. Utwórz gałąź funkcji (`git checkout -b feature/amazing-feature`)
-3. Zatwierdź zmiany (`git commit -m 'Add amazing feature'`)
-4. Wciśnij do oddziału (`git push origin feature/amazing-feature`)
-5. Otwórz żądanie ściągnięcia
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Szczegółowe wytyczne można znaleźć w [CONTRIBUTING.md](CONTRIBUTING.md).
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Wydanie nowej wersji
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Historia gwiazd
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Podziękowania
+## 🙏 Acknowledgments
-Specjalne podziękowania dla **[9router](https://github.com/decolua/9router)** autorstwa **[decolua](https://github.com/decolua)** — oryginalnego projektu, który zainspirował ten widelec. OmniRoute opiera się na tym niesamowitym fundamencie dzięki dodatkowym funkcjom, wielomodalnym interfejsom API i pełnemu przepisaniu TypeScriptu.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Specjalne podziękowania dla **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — oryginalnej implementacji Go, która zainspirowała ten port JavaScript.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Licencja
+## Licencja
-Licencja MIT — szczegółowe informacje można znaleźć w [LICENSE](LICENSE).
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Zbudowany z ❤️ dla programistów, którzy kodują 24 godziny na dobę, 7 dni w tygodniu
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/pl/docs/FEATURES.md b/docs/i18n/pl/docs/FEATURES.md
new file mode 100644
index 0000000000..d5b54bf992
--- /dev/null
+++ b/docs/i18n/pl/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Polski)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/pt-BR/README.md b/docs/i18n/pt-BR/README.md
index 047330588d..89c47c048b 100644
--- a/docs/i18n/pt-BR/README.md
+++ b/docs/i18n/pt-BR/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — O Gateway de IA Gratuito
+# 🚀 OmniRoute — The Free AI Gateway (Português (Brasil))
-### Nunca pare de programar. Roteamento inteligente para **modelos de IA GRATUITOS e baratos** com fallback automático.
-
-_Seu proxy de API universal — um endpoint, 36+ provedores, zero tempo de inatividade._
-
-**Chat Completions • Embeddings • Geração de Imagem • Vídeo • Música • Áudio • Reranking • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Provedor de IA Gratuito para seus agentes de programação favoritos
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Conecte qualquer IDE ou ferramenta CLI com IA através do OmniRoute — gateway de API gratuito para programação ilimitada._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,586 +162,527 @@ _Conecte qualquer IDE ou ferramenta CLI com IA através do OmniRoute — gateway
|
-📡 Todos os agentes se conectam via http://localhost:20128/v1 ou http://cloud.omniroute.online/v1 — uma configuração, modelos e cota ilimitados
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 Website](https://omniroute.online) • [🚀 Início Rápido](#-início-rápido) • [💡 Funcionalidades](#-funcionalidades-principais) • [📖 Docs](#-documentação) • [💰 Preços](#-preços-resumidos)
-
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Por que OmniRoute?
-
-**Pare de desperdiçar dinheiro e bater em limites:**
-
--
Cota de assinatura expira sem uso todo mês
--
Limites de taxa param você no meio da programação
--
APIs caras ($20-50/mês por provedor)
--
Trocar manualmente entre provedores
-
-**OmniRoute resolve isso:**
-
-- ✅ **Maximize assinaturas** - Rastreie cotas, use tudo antes do reset
-- ✅ **Fallback automático** - Assinatura → API Key → Barato → Gratuito, zero tempo de inatividade
-- ✅ **Multi-conta** - Round-robin entre contas por provedor
-- ✅ **Universal** - Funciona com Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, qualquer ferramenta CLI
-
----
-
-## 📧 Suporte
-
-> 💬 **Participe da comunidade!** [Grupo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Tire dúvidas, compartilhe dicas e fique atualizado.
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
- **Website**: [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)
-- **WhatsApp**: [Grupo da Comunidade](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Projeto Original**: [9router por decolua](https://github.com/decolua/9router)
+- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Como Funciona
+## 🔄 How It Works
```
┌─────────────┐
-│ Sua CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
+│ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
│ Tool │
└──────┬──────┘
│ http://localhost:20128/v1
↓
┌─────────────────────────────────────────┐
-│ OmniRoute (Roteador Inteligente) │
-│ • Tradução de formato (OpenAI ↔ Claude) │
-│ • Rastreamento de cota + Embeddings + Imagens │
-│ • Renovação automática de tokens │
+│ OmniRoute (Smart Router) │
+│ • Format translation (OpenAI ↔ Claude) │
+│ • Quota tracking + Embeddings + Images │
+│ • Auto token refresh │
└──────┬──────────────────────────────────┘
│
- ├─→ [Tier 1: ASSINATURA] Claude Code, Codex, Gemini CLI
- │ ↓ cota esgotada
+ ├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI
+ │ ↓ quota exhausted
├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
- │ ↓ limite de orçamento
- ├─→ [Tier 3: BARATO] GLM ($0.6/1M), MiniMax ($0.2/1M)
- │ ↓ limite de orçamento
- └─→ [Tier 4: GRATUITO] iFlow, Qwen, Kiro (ilimitado)
+ │ ↓ budget limit
+ ├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M)
+ │ ↓ budget limit
+ └─→ [Tier 4: FREE] iFlow, Qwen, Kiro (unlimited)
-Resultado: Nunca pare de programar, custo mínimo
+Result: Never stop coding, minimal cost
```
---
-## 🎯 O que o OmniRoute resolve — 30 dores reais e casos de uso
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Todo desenvolvedor que usa ferramentas de IA enfrenta esses problemas diariamente.** O OmniRoute foi criado para resolver todos eles, desde estouro de custos e bloqueios regionais até operações de protocolo e observabilidade de nível produção.
+> **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 protocol operations and enterprise observability.
-💸 1. "Pago uma assinatura cara e ainda sou interrompido por limites"
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Desenvolvedores pagam de $20 a $200/mês por Claude Pro, Codex Pro ou GitHub Copilot. Mesmo pagando, há teto de cota, limite de 5h, limites semanais ou por minuto. No meio da sessão de coding, o provedor para de responder e o desenvolvedor perde fluxo e produtividade.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Fallback Inteligente em 4 Tiers** — Se a cota de assinatura acabar, redireciona automaticamente para API Key → Barato → Gratuito sem intervenção manual
-- **Rastreamento de Cota em Tempo Real** — Exibe consumo de tokens ao vivo com contagem regressiva de reset (5h, diário, semanal)
-- **Suporte Multi-Conta** — Várias contas por provedor com round-robin automático; quando uma esgota, passa para a próxima
-- **Combos Personalizados** — Cadeias de fallback customizáveis com 6 estratégias (fill-first, round-robin, P2C, aleatório, least-used, cost-optimized)
-- **Cotas Business do Codex** — Monitoramento de cota de workspace Business/Team direto no dashboard
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. "Preciso usar múltiplos provedores, mas cada um tem uma API diferente"
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI usa um formato, Claude (Anthropic) usa outro, Gemini usa outro. Se o dev quer testar modelos de provedores diferentes ou fazer fallback entre eles, precisa reconfigurar SDKs, trocar endpoints e lidar com formatos incompatíveis. Provedores customizados (FriendLI, NIM) também têm endpoints não padronizados.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Endpoint Unificado** — Um único `http://localhost:20128/v1` serve como proxy para 36+ provedores
-- **Tradução de Formato** — Conversão automática e transparente: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-- **Sanitização de Resposta** — Remove campos fora do padrão (`x_groq`, `usage_breakdown`, `service_tier`) que quebram OpenAI SDK v1.83+
-- **Normalização de Roles** — Converte `developer` → `system` para provedores não-OpenAI; `system` → `user` para GLM/ERNIE
-- **Extração de Tags Think** — Extrai blocos `` de modelos como DeepSeek R1 para `reasoning_content` padronizado
-- **Saída Estruturada no Gemini** — Conversão automática de `json_schema` → `responseMimeType`/`responseSchema`
-- **`stream` padrão `false`** — Alinha com a especificação OpenAI e evita SSE inesperado em SDKs Python/Rust/Go
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. "Meu provedor de IA bloqueia minha região/país"
+🌐 3. "My AI provider blocks my region/country"
-Provedores como OpenAI/Codex bloqueiam acesso em determinadas regiões. Usuários recebem erros como `unsupported_country_region_territory` durante OAuth e conexões de API. Isso é especialmente frustrante para desenvolvedores de países emergentes.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Config de Proxy em 3 Níveis** — Proxy configurável em nível global (todo tráfego), por provedor e por conexão/chave
-- **Badges de Proxy por Cor** — Indicadores visuais: 🟢 proxy global, 🟡 proxy do provedor, 🔵 proxy da conexão, sempre mostrando o IP
-- **Troca de Token OAuth via Proxy** — O fluxo OAuth também passa pelo proxy, resolvendo `unsupported_country_region_territory`
-- **Teste de Conexão via Proxy** — Testes usam o proxy configurado (sem bypass direto)
-- **Suporte SOCKS5** — Suporte completo a proxy SOCKS5 para roteamento de saída
-- **Spoofing de Impressão TLS** — Fingerprint TLS estilo navegador via `wreq-js` para contornar detecção de bot
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. "Quero usar IA para programar, mas não tenho dinheiro"
+🆓 4. "I want to use AI for coding but I have no money"
-Nem todo mundo pode pagar $20–200/mês em assinaturas de IA. Estudantes, devs de países emergentes, hobistas e freelancers precisam de acesso a modelos de qualidade com custo zero.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Provedores Gratuitos nativos** — Suporte nativo a provedores 100% free: iFlow (8 modelos ilimitados), Qwen (3 ilimitados), Kiro (Claude grátis), Gemini CLI (180K/mês grátis)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Combos Apenas Gratuitos** — Cadeia `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/mês com zero downtime
-- **Créditos Gratuitos NVIDIA NIM** — 1000 créditos free integrados
-- **Estratégia Cost Optimized** — Estratégia que escolhe automaticamente o provedor mais barato disponível
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. "Preciso proteger meu gateway de IA contra acesso não autorizado"
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Ao expor um gateway de IA na rede (LAN, VPS, Docker), qualquer pessoa com o endereço pode consumir tokens/cota do desenvolvedor. Sem proteção, as APIs ficam vulneráveis a uso indevido, prompt injection e abuso.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Gestão de API Keys** — Geração, rotação e escopo por provedor com página dedicada em `/dashboard/api-manager`
-- **Permissões por Modelo** — Restringe chaves a modelos específicos (`openai/*`, padrões wildcard), com toggle Allow All/Restrict
-- **Proteção de Endpoint de API** — Exige chave para `/v1/models` e bloqueia provedores específicos da listagem
-- **Auth Guard + CSRF Protection** — Todas as rotas do dashboard protegidas com middleware `withAuth` + tokens CSRF
-- **Rate Limiter** — Limite por IP com janelas configuráveis
-- **Filtragem por IP** — Allowlist/blocklist para controle de acesso
-- **Proteção contra Prompt Injection** — Sanitização contra padrões maliciosos
-- **Criptografia AES-256-GCM** — Credenciais criptografadas em repouso
+- **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. "Meu provedor caiu e eu perdi meu fluxo de programação"
+🛑 6. "My provider went down and I lost my coding flow"
-Provedores de IA podem ficar instáveis, retornar erro 5xx ou atingir limites temporários de taxa. Se o dev depende de um único provedor, ele é interrompido. Sem circuit breaker, retries repetidos podem derrubar a aplicação.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Circuit Breaker por modelo** — Abre/fecha automaticamente com limiares e cooldown configuráveis (Closed/Open/Half-Open)
-- **Exponential Backoff** — Atrasos progressivos de retry
-- **Anti-Thundering Herd** — Proteção com mutex + semáforo contra tempestade de retries concorrentes
-- **Cadeias de Fallback em Combo** — Se o primário falhar, avança automaticamente na cadeia sem intervenção
-- **Circuit Breaker de Combo** — Desativa automaticamente provedores com falha dentro da cadeia
-- **Health Dashboard** — Monitoramento de uptime, estados de breaker, lockouts, estatísticas de cache e latência p50/p95/p99
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. "Configurar cada ferramenta de IA é tedioso e repetitivo"
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Desenvolvedores usam Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Cada ferramenta pede configuração diferente (endpoint, chave, modelo). Reconfigurar ao trocar de provedor ou modelo é perda de tempo.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Dashboard de Ferramentas CLI** — Página dedicada com setup em 1 clique para Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity e Cline
-- **Gerador de Config do GitHub Copilot** — Gera `chatLanguageModels.json` para VS Code com seleção em lote de modelos
-- **Onboarding Wizard** — Fluxo guiado de 4 etapas para novos usuários
-- **Um endpoint para todos os modelos** — Configure `http://localhost:20128/v1` uma vez e acesse 36+ provedores
+- **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 67+ providers
-🔑 8. "Gerenciar tokens OAuth de múltiplos provedores é um caos"
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI e Copilot usam OAuth 2.0 com tokens que expiram. Devs precisam reautenticar o tempo todo e lidar com erros como `client_secret is missing`, `redirect_uri_mismatch` e falhas em servidores remotos. OAuth em LAN/VPS é especialmente problemático.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Auto Token Refresh** — Tokens OAuth renovados em background antes da expiração
-- **OAuth 2.0 (PKCE) nativo** — Fluxo automático para Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen e iFlow
-- **OAuth Multi-Conta** — Múltiplas contas por provedor via extração de JWT/ID token
-- **Correções OAuth LAN/Remoto** — Detecção de IP privado para `redirect_uri` + modo manual de URL para servidores remotos
-- **OAuth atrás de Nginx** — Usa `window.location.origin` para compatibilidade com reverse proxy
-- **Guia de OAuth Remoto** — Passo a passo para credenciais Google Cloud em VPS/Docker
+- **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. "Não sei quanto estou gastando nem onde"
+📊 9. "I don't know how much I'm spending or where"
-Desenvolvedores usam vários provedores pagos, mas não têm visão unificada de gastos. Cada provedor tem seu dashboard de billing, sem consolidação. Custos inesperados podem se acumular.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Dashboard de Analytics de Custo** — Rastreamento de custo por token e gestão de orçamento por provedor
-- **Limites de Orçamento por Tier** — Teto de gasto por tier que aciona fallback automático
-- **Configuração de Preço por Modelo** — Preços configuráveis por modelo
-- **Estatísticas de Uso por API Key** — Contagem de requests e timestamp de último uso por chave
-- **Analytics Dashboard** — Cards, gráfico de uso por modelo e tabela de provedores com taxa de sucesso e latência
+- **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. "Não consigo diagnosticar erros e problemas nas chamadas de IA"
+🐛 10. "I can't diagnose errors and problems in AI calls"
-Quando uma chamada falha, o dev não sabe se foi rate limit, token expirado, formato incorreto ou erro do provedor. Logs ficam fragmentados em terminais diferentes. Sem observabilidade, debug vira tentativa e erro.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Dashboard de Logs Unificado** — 4 abas: Request Logs, Proxy Logs, Audit Logs e Console
-- **Visualizador de Console** — Viewer em tempo real estilo terminal com níveis por cor, auto-scroll, busca e filtros
-- **Proxy Logs em SQLite** — Logs persistentes que sobrevivem a reinícios do servidor
-- **Playground do Tradutor** — 4 modos de debug: Playground (tradução), Chat Tester (round-trip), Test Bench (lote), Live Monitor (tempo real)
-- **Telemetria de Request** — Latência p50/p95/p99 + rastreamento por X-Request-Id
-- **Logging em Arquivo com Rotação** — Interceptador de console grava tudo em JSON com rotação por tamanho
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. "Implantar e manter o gateway é complexo"
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Instalar, configurar e manter um proxy de IA em ambientes diferentes (local, VPS, Docker, cloud) exige muito trabalho. Problemas como caminhos hardcoded, `EACCES` em diretórios, conflito de portas e build cross-platform aumentam a fricção.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Instalação global via npm** — `npm install -g omniroute && omniroute` e pronto
-- **Docker Multi-Platform** — AMD64 + ARM64 nativo (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Perfis Docker Compose** — `base` (sem ferramentas CLI) e `cli` (com Claude Code, Codex, OpenClaw)
-- **App Desktop Electron** — App nativo para Windows/macOS/Linux com bandeja, auto-start e modo offline
-- **Modo de Porta Separada** — API e Dashboard em portas distintas para cenários avançados (reverse proxy, rede de containers)
-- **Cloud Sync** — Sincronização de configuração entre dispositivos via Cloudflare Workers
-- **Backups de DB** — Backup automático, restauração, export e import de todas as configurações
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. "A interface é só em inglês e meu time não fala inglês"
+🌍 12. "The interface is English-only and my team doesn't speak English"
-Times em países não anglófonos, especialmente na América Latina, Ásia e Europa, sofrem com interfaces só em inglês. A barreira de idioma reduz adoção e aumenta erros de configuração.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **i18n do Dashboard — 30 idiomas** — Mais de 500 chaves traduzidas, incluindo árabe, búlgaro, dinamarquês, alemão, espanhol, finlandês, francês, hebraico, hindi, húngaro, indonésio, italiano, japonês, coreano, malaio, holandês, norueguês, polonês, português (PT/BR), romeno, russo, eslovaco, sueco, tailandês, ucraniano, vietnamita, chinês, filipino e inglês
-- **Suporte RTL** — Suporte right-to-left para árabe e hebraico
-- **READMEs multilíngues** — 30 traduções completas de documentação
-- **Seletor de Idioma** — Ícone de globo no header para troca em tempo real
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. "Preciso de mais do que chat: embeddings, imagens, áudio"
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-IA não é só chat completion. Devs precisam gerar imagens, transcrever áudio, criar embeddings para RAG, reranquear documentos e moderar conteúdo. Cada API tem endpoint e formato diferentes.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Embeddings** — `/v1/embeddings` com 6 provedores e 9+ modelos
-- **Geração de Imagem** — `/v1/images/generations` com 10 provedores e 20+ modelos (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **Texto para Vídeo** — `/v1/videos/generations` com ComfyUI (AnimateDiff, SVD) e SD WebUI
-- **Texto para Música** — `/v1/music/generations` com ComfyUI (Stable Audio Open, MusicGen)
-- **Transcrição de Áudio** — `/v1/audio/transcriptions` com Whisper + Nvidia NIM, HuggingFace e Qwen3
-- **Texto para Fala (TTS)** — `/v1/audio/speech` com ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise e Qwen3
-- **Moderações** — `/v1/moderations` para checagens de segurança de conteúdo
-- **Reranking** — `/v1/rerank` para relevância de documentos
-- **Responses API** — Suporte completo a `/v1/responses` para Codex
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. "Não tenho como testar e comparar qualidade entre modelos"
+🧪 14. "I have no way to test and compare quality across models"
-Desenvolvedores querem saber qual modelo é melhor para cada caso de uso (código, tradução, raciocínio), mas comparar manualmente é lento. Não existem ferramentas integradas de avaliação na maioria das stacks.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Avaliações de LLM** — Golden set com 10 casos pré-carregados cobrindo saudação, matemática, geografia, geração de código, conformidade JSON, tradução, markdown e recusa de conteúdo inseguro
-- **4 Estratégias de Match** — `exact`, `contains`, `regex`, `custom` (função JS)
-- **Test Bench do Playground do Tradutor** — Testes em lote com múltiplas entradas/saídas esperadas e comparação entre provedores
-- **Chat Tester** — Round-trip completo com renderização visual da resposta
-- **Live Monitor** — Stream em tempo real de todas as requisições que passam pelo proxy
+- **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. "Preciso escalar sem perder performance"
+📈 15. "I need to scale without losing performance"
-À medida que o volume cresce, sem cache as mesmas perguntas geram custos duplicados. Sem idempotência, requisições duplicadas desperdiçam processamento. Também é necessário respeitar rate limits por provedor.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Cache Semântico** — Cache em duas camadas (assinatura + semântico) para reduzir custo e latência
-- **Idempotência de Request** — Janela de deduplicação de 5s para requisições idênticas
-- **Detecção de Rate Limit** — Rastreamento por provedor de RPM, intervalo mínimo e concorrência máxima
-- **Rate Limits Editáveis** — Padrões configuráveis em Settings → Resilience com persistência
-- **Cache de Validação de API Key** — Cache em 3 camadas para performance em produção
-- **Health Dashboard com Telemetria** — Latência p50/p95/p99, estatísticas de cache e uptime
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. "Quero controlar o comportamento dos modelos globalmente"
+🤖 16. "I want to control model behavior globally"
-Desenvolvedores podem querer todas as respostas em um idioma específico, com tom específico ou com limite de tokens de raciocínio. Configurar isso em cada ferramenta/requisição é impraticável.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Injeção de System Prompt** — Prompt global aplicado a todas as requisições
-- **Validação de Thinking Budget** — Controle de alocação de tokens de raciocínio por requisição (passthrough, auto, custom, adaptive)
-- **6 Estratégias de Roteamento** — Estratégias globais que definem como as requisições são distribuídas
-- **Wildcard Router** — Padrões `provider/*` roteiam dinamicamente para qualquer provedor
-- **Toggle de Combo** — Ativa/desativa combos diretamente no dashboard
-- **Toggle de Provedor** — Ativa/desativa todas as conexões de um provedor com um clique
-- **Provedores Bloqueados** — Exclui provedores específicos da listagem de `/v1/models`
+- **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
-🧰 17. "Preciso de ferramentas MCP como capacidades de primeira classe do produto"
+🧰 17. "I need MCP tools as first-class product capabilities"
-Muitos gateways de IA expõem MCP apenas como detalhe de implementação oculto. Times precisam de uma camada operacional visível e gerenciável.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- MCP aparece no menu do dashboard e na aba de protocolos em Endpoint
-- Página dedicada de gestão MCP com processo, ferramentas, escopos e auditoria
-- Quick-start embutido para `omniroute --mcp` e onboarding de clientes
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "Preciso de orquestração A2A com caminhos síncronos + streaming"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Fluxos de agentes precisam de respostas diretas e também de execuções longas com streaming e controle de ciclo de vida.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Endpoint A2A JSON-RPC (`POST /a2a`) com `message/send` e `message/stream`
-- Streaming SSE com propagação de estado terminal
-- APIs de ciclo de vida de tarefas para `tasks/get` e `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. "Preciso de saúde real do processo MCP, não status estimado"
+🛰️ 19. "I need real MCP process health, not guessed status"
-Times operacionais precisam saber se o MCP está realmente ativo, não apenas se uma API está respondendo.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Arquivo de heartbeat em runtime com PID, timestamps, transporte, quantidade de ferramentas e modo de escopo
-- API de status MCP combinando heartbeat + atividade recente
-- Cards de status na UI para processo/uptime/frescor do heartbeat
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "Preciso de execução auditável das ferramentas MCP"
+📋 20. "I need auditable MCP tool execution"
-Quando ferramentas alteram configuração ou disparam ações operacionais, os times precisam de rastreabilidade forense.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Auditoria de chamadas MCP baseada em SQLite
-- Filtros por ferramenta, sucesso/falha, chave de API e paginação
-- Tabela de auditoria no dashboard + endpoints de métricas para automação
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "Preciso de permissões MCP por escopo para cada integração"
+🔐 21. "I need scoped MCP permissions per integration"
-Clientes diferentes devem operar com privilégio mínimo por categoria de ferramenta.
+Different clients should have least-privilege access to tool categories.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- 9 escopos MCP granulares para controle de acesso às ferramentas
-- Aplicação de escopo e visibilidade na UI de gestão MCP
-- Postura segura por padrão para operações sensíveis
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. "Preciso de controles operacionais sem redeploy"
+⚙️ 22. "I need operational controls without redeploying"
-Times precisam de mudanças rápidas em runtime durante incidentes e picos de custo.
+Teams need quick runtime changes during incidents or cost events.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Troca de ativação de combo direto no dashboard de MCP
-- Aplicação de perfis de resiliência via pacotes de política prontos
-- Reset de circuit breaker no mesmo painel operacional
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. "Preciso de visibilidade ao vivo do ciclo de vida A2A e cancelamento"
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Sem visibilidade de lifecycle, incidentes de tarefas ficam difíceis de investigar e corrigir.
+Without lifecycle visibility, task incidents become hard to triage.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Listagem/filtragem de tarefas por estado/skill com paginação
-- Drill-down de metadados, eventos e artefatos da tarefa
-- Endpoint de cancelamento + ação de UI com confirmação
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. "Preciso de métricas de streams ativos para carga A2A"
+🌊 24. "I need active stream metrics for A2A load"
-Fluxos em streaming exigem visão operacional de concorrência e conexões ativas.
+Streaming workflows require operational insight into concurrency and live connections.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Contadores de streams ativos integrados ao status A2A
-- Timestamp da última tarefa e contagens por estado
-- Cards no dashboard A2A para monitoramento operacional em tempo real
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "Preciso de descoberta padrão de agente para clientes"
+🪪 25. "I need standard agent discovery for clients"
-Clientes externos e orquestradores precisam de metadados legíveis por máquina para onboarding automático.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Agent Card exposto em `/.well-known/agent.json`
-- Capacidades e skills exibidas na UI de gestão
-- API de status A2A inclui metadados de descoberta para automação
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "Preciso de descobribilidade de protocolos na experiência do produto"
+🧭 26. "I need protocol discoverability in the product UX"
-Se os usuários não encontram superfícies de protocolo, adoção e qualidade de suporte caem.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Entradas MCP e A2A na sidebar
-- Aba Protocolos em Endpoint com quick-start e status
-- Links do overview para dashboards dedicados de gestão
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "Preciso de validação end-to-end de protocolo com clientes reais"
+🧪 27. "I need end-to-end protocol validation with real clients"
-Testes mockados não bastam para validar compatibilidade de protocolo antes do release.
+Mock tests are not enough to validate protocol compatibility before release.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Suíte E2E que sobe a aplicação e usa transporte real do SDK MCP
-- Testes de cliente A2A para discovery, send, stream, get e cancel
-- Cross-check das validações com APIs de auditoria MCP e tarefas A2A
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. "Preciso de observabilidade unificada em todas as interfaces"
+📡 28. "I need unified observability across all interfaces"
-Separar observabilidade por protocolo cria pontos cegos e aumenta o MTTR.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Dashboards/logs/analytics unificados no mesmo produto
-- Saúde + auditoria + telemetria de requisição em OpenAI, MCP e A2A
-- APIs operacionais de status para automação
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "Preciso de um runtime único para proxy + tools + orquestração de agentes"
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Manter vários serviços separados aumenta custo operacional e modos de falha.
+Running many separate services increases operational cost and failure modes.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Proxy OpenAI-compatible, servidor MCP e servidor A2A na mesma stack
-- Autenticação, resiliência, armazenamento e observabilidade compartilhados
-- Modelo de políticas consistente em todas as superfícies de interação
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. "Preciso entregar workflows agênticos sem sprawl de glue code"
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Times perdem velocidade quando precisam costurar múltiplos serviços e scripts ad hoc.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Estratégia de endpoint unificada para clientes e agentes
-- UIs de gestão de protocolo e fluxos de validação/smoke embutidos
-- Base pronta para produção (segurança, logging, resiliência e backup)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Exemplos de Playbooks (Casos de Uso Integrados)
+### Example Playbooks (Integrated Use Cases)
-**Playbook A: Maximizar assinatura paga + backup barato**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -679,11 +690,11 @@ Combo: "maximize-claude"
2. glm/glm-4.7
3. if/kimi-k2-thinking
-Custo mensal: $20 + pequeno gasto de backup
-Resultado: qualidade maior, interrupção quase zero
+Monthly cost: $20 + small backup spend
+Outcome: higher quality, near-zero interruption
```
-**Playbook B: Stack de programação com custo zero**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -691,58 +702,149 @@ Combo: "free-forever"
2. if/kimi-k2-thinking
3. qw/qwen3-coder-plus
-Custo mensal: $0
-Resultado: fluxo de coding gratuito e estável
+Monthly cost: $0
+Outcome: stable free coding workflow
```
-## ⚡ Início Rápido
+**Playbook C: 24/7 always-on fallback chain**
-**1. Instale globalmente:**
+```txt
+Combo: "always-on"
+ 1. cc/claude-opus-4-6
+ 2. cx/gpt-5.2-codex
+ 3. glm/glm-4.7
+ 4. minimax/MiniMax-M2.1
+ 5. if/kimi-k2-thinking
+
+Outcome: deep fallback depth for deadline-critical workloads
+```
+
+**Playbook D: Agent ops with MCP + A2A**
+
+```txt
+1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
+2) Run A2A tasks via `message/send` and `message/stream`
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
+```
+
+---
+
+## 🆓 Start Free — Zero Configuration Cost
+
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Início Rápido
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Dashboard abre em `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Comando | Descrição |
-| ----------------------- | ------------------------------------- |
-| `omniroute` | Iniciar servidor (porta padrão 20128) |
-| `omniroute --port 3000` | Usar porta personalizada |
-| `omniroute --no-open` | Não abrir navegador automaticamente |
-| `omniroute --help` | Mostrar ajuda |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Conecte um provedor GRATUITO:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Dashboard → Provedores → Conectar **Claude Code** ou **Antigravity** → Login OAuth → Pronto!
+Optional split-port mode:
-**3. Use na sua ferramenta CLI:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Configurações:
- Endpoint: http://localhost:20128/v1
- API Key: [copie do dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**Pronto!** Comece a programar com modelos de IA GRATUITOS.
+### 2) Connect providers and create your API key
-**Alternativa — rodar a partir do código-fonte:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-OmniRoute está disponível como imagem Docker pública no [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Execução rápida:**
+**Quick run:**
```bash
docker run -d \
@@ -753,10 +855,10 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Com arquivo de ambiente:**
+**With environment file:**
```bash
-# Copie e edite o .env primeiro
+# Copy and edit .env first
cp .env.example .env
docker run -d \
@@ -768,348 +870,627 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Usando Docker Compose:**
+**Using Docker Compose:**
```bash
-# Perfil base (sem ferramentas CLI)
+# Base profile (no CLI tools)
docker compose --profile base up -d
-# Perfil CLI (Claude Code, Codex, OpenClaw integrados)
+# CLI profile (Claude Code, Codex, OpenClaw built-in)
docker compose --profile cli up -d
```
-| Imagem | Tag | Tamanho | Descrição |
-| ------------------------ | -------- | ------- | --------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | Última versão estável |
-| `diegosouzapw/omniroute` | `1.0.6` | ~250MB | Versão atual |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
+## 🖥️ Desktop App — Offline & Always-On
-## 🖥️
+> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
-> 🆕 **NOVO!** O OmniRoute agora está disponível como **aplicativo desktop nativo** para Windows, macOS e Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
-Execute o OmniRoute como um aplicativo desktop autônomo — sem terminal, sem navegador, sem internet necessária para modelos locais. O app baseado em Electron inclui:
-
-- 🖥️ **Janela Nativa** — Janela dedicada com integração à bandeja do sistema
-- 🔄 **Iniciar Automaticamente** — Inicie o OmniRoute ao fazer login no sistema
-- 🔔 **Notificações Nativas** — Receba alertas sobre esgotamento de cota ou problemas
-- ⚡ **Instalação com Um Clique** — NSIS (Windows), DMG (macOS), AppImage (Linux)
-- 🌐 **Modo Offline** — Funciona totalmente offline com servidor embarcado
+- 🖥️ **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
### Início Rápido
```bash
-# Modo desenvolvimento
+# Development mode
npm run electron:dev
-# Compilar para sua plataforma
-npm run electron:build # Plataforma atual
+# Build for your platform
+npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
-### Bandeja do Sistema
+### System Tray
-Quando minimizado, o OmniRoute fica na bandeja do sistema com ações rápidas:
+When minimized, OmniRoute lives in your system tray with quick actions:
-- Abrir dashboard
-- Alterar porta do servidor
-- Sair do aplicativo
+- Open dashboard
+- Change server port
+- Quit application
-📖 Documentação completa: [`electron/README.md`](electron/README.md)
+📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Preços Resumidos
+## 💰 Pricing at a Glance
-| Tier | Provedor | Custo | Reset de Cota | Melhor Para |
-| ----------------- | ----------------- | ---------------------------- | ----------------- | ------------------------------ |
-| **💳 ASSINATURA** | Claude Code (Pro) | $20/mês | 5h + semanal | Já é assinante |
-| | Codex (Plus/Pro) | $20-200/mês | 5h + semanal | Usuários OpenAI |
-| | Gemini CLI | **GRATUITO** | 180K/mês + 1K/dia | Todos! |
-| | GitHub Copilot | $10-19/mês | Mensal | Usuários GitHub |
-| **🔑 API KEY** | NVIDIA NIM | **GRATUITO** (1000 créditos) | Único | Testes gratuitos |
-| | DeepSeek | Por uso | Nenhum | Melhor preço/qualidade |
-| | Groq | Tier gratuito + pago | Limitado | Inferência ultra-rápida |
-| | xAI (Grok) | Por uso | Nenhum | Modelos Grok |
-| | Mistral | Tier gratuito + pago | Limitado | IA Europeia |
-| | OpenRouter | Por uso | Nenhum | 100+ modelos |
-| **💰 BARATO** | GLM-4.7 | $0.6/1M | Diário 10h | Backup econômico |
-| | MiniMax M2.1 | $0.2/1M | Rotativo 5h | Opção mais barata |
-| | Kimi K2 | $9/mês fixo | 10M tokens/mês | Custo previsível |
-| **🆓 GRATUITO** | iFlow | $0 | Ilimitado | 8 modelos gratuitos |
-| | Qwen | $0 | Ilimitado | 3 modelos gratuitos |
-| | Kiro | $0 | Ilimitado | Claude gratuito |
-| | LongCat 🆕 | **$0** (50M tok/dia 🔥) | 1 req/s | Maior cota grátis do mundo |
-| | Pollinations 🆕 | **$0** (sem chave API) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama |
-| | Cloudflare AI 🆕 | **$0** (10K Neurons/dia) | ~150 resp/dia | 50+ modelos, edge global |
-| | Scaleway AI 🆕 | **$0** (1M tokens total) | Limitado por taxa | EU/GDPR, Qwen3 235B, Llama 70B |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Dica Pro:** Comece com Gemini CLI (180K grátis/mês) + iFlow (ilimitado grátis) = $0 de custo!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Funcionalidades Principais
+---
-### 🧭 Gestão MCP + A2A (Camada Operacional)
+## 🆓 Free Models — What You Actually Get
-A maioria dos gateways de IA expõe MCP/A2A apenas como endpoints “escondidos”. O OmniRoute traz operação de primeira classe para os dois protocolos:
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-- **Descoberta na interface** — Entradas `MCP` e `A2A` na sidebar e aba `Protocolos` na página de Endpoint com quick-start e cartões de status.
-- **Painel operacional MCP** (`/dashboard/mcp`) — Status real do processo por heartbeat, inventário de ferramentas/scopes, auditoria com filtros e controles operacionais (trocar combo, aplicar perfil de resiliência, resetar breakers).
-- **Painel operacional A2A** (`/dashboard/a2a`) — Visão do agent card, ciclo de vida de tarefas por estado, contagem de streams ativos, drill-down/cancelamento de tasks e smoke tests de `message/send` e `message/stream`.
-- **APIs de monitoramento** — Endpoints `/api/mcp/*` e `/api/a2a/*` para status, tasks, auditoria e automações externas.
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-Por que isso é relevante:
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-- **Um runtime, três papéis**: router/proxy OpenAI-compatible + servidor de ferramentas MCP + servidor agente A2A.
-- **Governança unificada**: autenticação, auditoria e controles de resiliência compartilhados.
-- **Operação confiável**: times conseguem validar, monitorar e depurar comportamento dos protocolos sem sair do produto.
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-### 🧠 Roteamento e Inteligência
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-| Funcionalidade | O que Faz |
-| ----------------------------------------- | ---------------------------------------------------------------------------------- |
-| 🎯 **Fallback Inteligente 4 Tiers** | Auto-roteamento: Assinatura → API Key → Barato → Gratuito |
-| 📊 **Rastreamento de Cota em Tempo Real** | Contagem de tokens ao vivo + countdown de reset por provedor |
-| 🔄 **Tradução de Formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro transparente |
-| 👥 **Suporte Multi-Conta** | Múltiplas contas por provedor com seleção inteligente |
-| 🔄 **Renovação Automática de Token** | Tokens OAuth renovam automaticamente com retry |
-| 🎨 **Combos Personalizados** | 6 estratégias: fill-first, round-robin, p2c, random, least-used, cost-optimized |
-| 🧩 **Modelos Personalizados** | Adicione qualquer ID de modelo a qualquer provedor |
-| 🌐 **Roteador Wildcard** | Roteie padrões `provider/*` para qualquer provedor dinamicamente |
-| 🧠 **Budget de Raciocínio** | Modos passthrough, auto, custom e adaptativo para modelos de raciocínio |
-| � **Aliases de Modelo** | Redireciona IDs de modelos depreciados para substitutos atuais (built-in + custom) |
-| ⚡ **Degradação em Background** | Redireciona tarefas em background (títulos, resumos) para modelos mais baratos |
-| �💬 **Injeção de System Prompt** | System prompt global aplicado em todas as requisições |
-| 📄 **API Responses** | Suporte completo à API Responses da OpenAI (`/v1/responses`) para Codex |
+### 🟡 QWEN MODELS (Device Code Auth)
-### 🎵 APIs Multi-Modal
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-| Funcionalidade | O que Faz |
-| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Geração de Imagem** | `/v1/images/generations` — 10 provedores, 20+ modelos (cloud + local) |
-| 📐 **Embeddings** | `/v1/embeddings` — 6 provedores, 9+ modelos |
-| 🎤 **Transcrição de Áudio** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Texto para Fala** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🎬 **Geração de Vídeo** | `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD), SD WebUI |
-| 🎵 **Geração de Música** | `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen) |
-| 🛡️ **Moderações** | `/v1/moderations` — Verificações de segurança |
-| 🔀 **Reranking** | `/v1/rerank` — Reranking de relevância de documentos |
+### 🟣 GEMINI CLI (Google OAuth)
-### 🛡️ Resiliência e Segurança
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
-| Funcionalidade | O que Faz |
-| ----------------------------------- | ----------------------------------------------------------------------------- |
-| 🔌 **Circuit Breaker** | Trip/recover por modelo com limites configuráveis |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🛡️ **Anti-Thundering Herd** | Mutex + semáforo rate-limit para provedores com API key |
-| 🧠 **Cache Semântico** | Cache de duas camadas (assinatura + semântico) reduz custo e latência |
-| ⚡ **Idempotência de Requisição** | Janela de dedup de 5s para requisições duplicadas |
-| 🔒 **Spoofing de Fingerprint TLS** | Bypass de detecção de bot via TLS com wreq-js |
-| 🌐 **Filtragem de IP** | Allowlist/blocklist para controle de acesso à API |
-| 📊 **Rate Limits Editáveis** | RPM, gap mínimo e concorrência máxima configuráveis |
-| 💾 **Persistência de Rate Limits** | Limites aprendidos persistem via SQLite com debounce de 60s + 24h de validade |
-| 🔄 **Resiliência de Token Refresh** | Circuit breaker por provedor (5 falhas→30min) + timeout de 30s por tentativa |
-| 🛡 **Proteção de Endpoint API** | Gateway de Auth + bloqueio de provedores para o endpoint `/models` |
-| 🔒 **Visibilidade de Proxy** | Badges coloridos: 🟢 global, 🟡 provedor, 🔵 por-conexão com exibição de IP |
-| 🌐 **Proxy em 3 Níveis** | Configure proxies em nível global, por provedor ou por conexão |
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
-### 📊 Observabilidade e Analytics
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
-| Funcionalidade | O que Faz |
-| -------------------------------- | --------------------------------------------------------------------- |
-| 📝 **Logs de Requisição** | Modo debug com logs completos de request/response |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **Logs SQLite** | Logs de proxy persistentes sobrevivem a reinicializações |
-| 📊 **Dashboard de Analytics** | Recharts: cards de estatísticas, gráfico de uso, tabela de provedores |
-| 📈 **Rastreamento de Progresso** | Eventos de progresso SSE opt-in para streaming |
-| 🧪 **Avaliações de LLM** | Testes com conjunto golden e 4 estratégias de match |
-| 🔍 **Telemetria de Requisição** | Agregação de latência p50/p95/p99 + rastreamento X-Request-Id |
-| 📋 **Logs + Cotas** | Páginas dedicadas para navegação de logs e rastreamento de cotas |
-| 🏥 **Dashboard de Saúde** | Uptime, estados de circuit breaker, lockouts, stats de cache |
-| 💰 **Rastreamento de Custo** | Gestão de orçamento + configuração de preços por modelo |
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
-### ☁️ Deploy e Sincronização
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
-| Funcionalidade | O que Faz |
-| --------------------------------- | --------------------------------------------------------------------------------- |
-| 💾 **Cloud Sync** | Sincronize configurações entre dispositivos via Cloudflare Workers |
-| 🌐 **Deploy em Qualquer Lugar** | Localhost, VPS, Docker, Cloudflare Workers |
-| 🔑 **Gestão de API Keys** | Gere, rotacione e defina escopo de API keys por provedor |
-| 🧙 **Assistente de Configuração** | Setup guiado em 4 etapas para novos usuários |
-| 🔧 **Dashboard CLI Tools** | Configuração em um clique para Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **Backups de DB** | Backup, restauração, exportação e importação automática de todas as configurações |
-| 🌐 **Internacionalização** | i18n completo com next-intl — suporte a 30 idiomas com RTL |
-| 🌍 **Seletor de Idioma** | Ícone de globo no cabeçalho para troca entre 30 idiomas em tempo real |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Diretório de Dados Custom** | Variável `DATA_DIR` para sobrescrever o caminho padrão `~/.omniroute` |
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Detalhes das Funcionalidades
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Fallback Inteligente 4 Tiers
+Start MCP transport in stdio mode:
-Crie combos com fallback automático:
-
-```
-Combo: "my-coding-stack"
- 1. cc/claude-opus-4-6 (sua assinatura)
- 2. nvidia/llama-3.3-70b (API NVIDIA gratuita)
- 3. glm/glm-4.7 (backup barato, $0.6/1M)
- 4. if/kimi-k2-thinking (fallback gratuito)
-
-→ Troca automaticamente quando a cota acaba ou erros ocorrem
+```bash
+omniroute --mcp
```
-### 📊 Rastreamento de Cota em Tempo Real
+Recommended validation flow:
-- Consumo de tokens por provedor
-- Countdown de reset (5 horas, diário, semanal)
-- Estimativa de custo para tiers pagos
-- Relatórios de gastos mensais
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Tradução de Formato
+Useful APIs for automation:
-Tradução transparente entre formatos:
-
-- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
-- Sua ferramenta CLI envia formato OpenAI → OmniRoute traduz → Provedor recebe formato nativo
-- Funciona com qualquer ferramenta que suporte endpoints OpenAI customizados
-
-### 👥 Suporte Multi-Conta
-
-- Adicione múltiplas contas por provedor
-- Round-robin automático ou roteamento por prioridade
-- Fallback para próxima conta quando uma atinge a cota
-
-### 🔄 Renovação Automática de Token
-
-- Tokens OAuth renovam automaticamente antes de expirar
-- Sem necessidade de re-autenticação manual
-- Experiência transparente em todos os provedores
-
-### 🎨 Combos Personalizados
-
-- Crie combinações ilimitadas de modelos
-- 6 estratégias: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
-- Compartilhe combos entre dispositivos com Cloud Sync
-
-### 🏥 Dashboard de Saúde
-
-- Status do sistema (uptime, versão, uso de memória)
-- Estados de circuit breaker por provedor (Closed/Open/Half-Open)
-- Status de rate limit e lockouts ativos
-- Estatísticas de cache de assinatura
-- Telemetria de latência (p50/p95/p99) + cache de prompt
-- Reset de saúde com um clique
-
-### 🔧 Playground do Tradutor
-
-O OmniRoute inclui um poderoso Playground de Tradução integrado com **4 modos** para debug, teste e monitoramento de traduções de API:
-
-| Modo | Descrição |
-| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻 Playground** | Tradução direta entre formatos — cole qualquer corpo de requisição e veja instantaneamente como o OmniRoute traduz entre formatos (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Inclui templates de exemplo e auto-detecção de formato. |
-| **💬 Chat Tester** | Envie requisições reais pelo OmniRoute e veja a viagem completa: sua entrada, a requisição traduzida, a resposta do provedor, e a resposta traduzida de volta. Inestimável para validar roteamento de combos. |
-| **🧪 Test Bench** | Modo de teste em lote — defina múltiplos casos de teste com diferentes entradas e saídas esperadas, execute todos de uma vez, e compare resultados entre provedores e modelos. |
-| **📱 Live Monitor** | Monitoramento de requisições em tempo real — acompanhe requisições entrando conforme fluem pelo OmniRoute, veja traduções de formato acontecendo ao vivo, e identifique problemas instantaneamente. |
-
-**Acesso:** Dashboard → Translator (barra lateral)
-
-### 💾 Cloud Sync
-
-- Sincronize provedores, combos e configurações entre dispositivos
-- Sincronização automática em background
-- Armazenamento criptografado seguro
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
----
+
+🤝 A2A Setup (Agent2Agent)
-## 🧪 Avaliações (Evals)
+Discover the agent:
-OmniRoute inclui um framework de avaliação integrado para testar a qualidade de respostas de LLM contra um conjunto golden. Acesse via **Analytics → Evals** no dashboard.
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-### Conjunto Golden Integrado
+Send a task:
-O "OmniRoute Golden Set" pré-carregado contém 10 casos de teste cobrindo:
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-- Saudações, matemática, geografia, geração de código
-- Conformidade de formato JSON, tradução, markdown
-- Recusa de segurança (conteúdo prejudicial), contagem, lógica booleana
+Manage lifecycle:
-### Estratégias de Avaliação
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
-| Estratégia | Descrição | Exemplo |
-| ---------- | ---------------------------------------------- | -------------------------------- |
-| `exact` | Saída deve corresponder exatamente | `"4"` |
-| `contains` | Saída deve conter substring (case-insensitive) | `"Paris"` |
-| `regex` | Saída deve corresponder ao padrão regex | `"1.*2.*3"` |
-| `custom` | Função JS customizada retorna true/false | `(output) => output.length > 10` |
+Operational UI:
----
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
-## 📖 Guia de Configuração
+
-💳 Provedores por Assinatura
+🧪 End-to-end protocol validation
+
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
### Claude Code (Pro/Max)
```bash
-Dashboard → Provedores → Conectar Claude Code
-→ Login OAuth → Renovação automática de token
-→ Rastreamento de cota 5h + semanal
+Dashboard → Providers → Connect Claude Code
+→ OAuth login → Auto token refresh
+→ 5-hour + weekly quota tracking
-Modelos:
+Models:
cc/claude-opus-4-6
cc/claude-sonnet-4-5-20250929
cc/claude-haiku-4-5-20251001
```
-**Dica Pro:** Use Opus para tarefas complexas, Sonnet para velocidade. OmniRoute rastreia cota por modelo!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
```bash
-Dashboard → Provedores → Conectar Codex
-→ Login OAuth (porta 1455)
-→ Reset 5h + semanal
+Dashboard → Providers → Connect Codex
+→ OAuth login (port 1455)
+→ 5-hour + weekly reset
-Modelos:
+Models:
cx/gpt-5.2-codex
cx/gpt-5.1-codex-max
```
-### Gemini CLI (GRATUITO 180K/mês!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
-Dashboard → Provedores → Conectar Gemini CLI
+Dashboard → Providers → Connect Gemini CLI
→ Google OAuth
-→ 180K completions/mês + 1K/dia
+→ 180K completions/month + 1K/day
-Modelos:
+Models:
gc/gemini-3-flash-preview
gc/gemini-2.5-pro
```
-**Melhor Valor:** Tier gratuito enorme! Use antes dos tiers pagos.
+**Best Value:** Huge free tier! Use this before paid tiers.
### GitHub Copilot
```bash
-Dashboard → Provedores → Conectar GitHub
+Dashboard → Providers → Connect GitHub
→ OAuth via GitHub
-→ Reset mensal (1º do mês)
+→ Monthly reset (1st of month)
-Modelos:
+Models:
gh/gpt-5
gh/claude-4.5-sonnet
gh/gemini-3-pro
@@ -1118,95 +1499,95 @@ Modelos:
-🔑 Provedores por API Key
+🔑 API Key Providers
-### NVIDIA NIM (GRATUITO 1000 créditos!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Cadastre-se: [build.nvidia.com](https://build.nvidia.com)
-2. Obtenha API key gratuita (1000 créditos de inferência incluídos)
-3. Dashboard → Adicionar Provedor → NVIDIA NIM:
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
- API Key: `nvapi-your-key`
-**Modelos:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, e 50+ mais
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Dica Pro:** API compatível com OpenAI — funciona perfeitamente com a tradução de formato do OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Cadastre-se: [platform.deepseek.com](https://platform.deepseek.com)
-2. Obtenha API key
-3. Dashboard → Adicionar Provedor → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Modelos:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (Tier Gratuito Disponível!)
+### Groq (Free Tier Available!)
-1. Cadastre-se: [console.groq.com](https://console.groq.com)
-2. Obtenha API key (tier gratuito incluído)
-3. Dashboard → Adicionar Provedor → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Modelos:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Dica Pro:** Inferência ultra-rápida — melhor para programação em tempo real!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (100+ Modelos)
+### OpenRouter (100+ Models)
-1. Cadastre-se: [openrouter.ai](https://openrouter.ai)
-2. Obtenha API key
-3. Dashboard → Adicionar Provedor → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Modelos:** Acesse 100+ modelos de todos os principais provedores através de uma única API key.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Provedores Baratos (Backup)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (Reset diário, $0.6/1M)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Cadastre-se: [Zhipu AI](https://open.bigmodel.cn/)
-2. Obtenha API key do Plano Coding
-3. Dashboard → Adicionar API Key:
- - Provedor: `glm`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
- API Key: `your-key`
**Use:** `glm/glm-4.7`
-**Dica Pro:** Plano Coding oferece 3× cota a 1/7 do custo! Reset diário 10:00 AM.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (Reset 5h, $0.20/1M)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Cadastre-se: [MiniMax](https://www.minimax.io/)
-2. Obtenha API key
-3. Dashboard → Adicionar API Key
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
**Use:** `minimax/MiniMax-M2.1`
-**Dica Pro:** Opção mais barata para contexto longo (1M tokens)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 ($9/mês fixo)
+### Kimi K2 ($9/month flat)
-1. Assine: [Moonshot AI](https://platform.moonshot.ai/)
-2. Obtenha API key
-3. Dashboard → Adicionar API Key
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
**Use:** `kimi/kimi-latest`
-**Dica Pro:** $9/mês fixo por 10M tokens = $0.90/1M de custo efetivo!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 Provedores GRATUITOS (Backup de Emergência)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 modelos GRATUITOS)
+### iFlow (5 FREE models via OAuth)
```bash
-Dashboard → Conectar iFlow
-→ Login OAuth iFlow
-→ Uso ilimitado
+Dashboard → Connect iFlow
+→ iFlow OAuth login
+→ Unlimited usage
-Modelos:
+Models:
if/kimi-k2-thinking
if/qwen3-coder-plus
if/glm-4.7
@@ -1214,125 +1595,78 @@ Modelos:
if/deepseek-r1
```
-### Qwen (3 modelos GRATUITOS)
+### Qwen (4 FREE models via Device Code)
```bash
-Dashboard → Conectar Qwen
-→ Autorização por código de dispositivo
-→ Uso ilimitado
+Dashboard → Connect Qwen
+→ Device code authorization
+→ Unlimited usage
-Modelos:
+Models:
qw/qwen3-coder-plus
qw/qwen3-coder-flash
```
-### Kiro (Claude GRATUITO)
+### Kiro (Claude FREE)
```bash
-Dashboard → Conectar Kiro
-→ AWS Builder ID ou Google/GitHub
-→ Uso ilimitado
+Dashboard → Connect Kiro
+→ AWS Builder ID or Google/GitHub
+→ Unlimited usage
-Modelos:
+Models:
kr/claude-sonnet-4.5
kr/claude-haiku-4.5
```
-### LongCat AI (GRATUITO 50M tokens/dia!) 🆕
-
-1. Cadastre-se: [longcat.chat](https://longcat.chat) com e-mail ou telefone
-2. Gere uma chave de API gratuita
-3. Dashboard → Adicionar Provedor → LongCat
-
-**Modelos:**
-
-- `lc/LongCat-Flash-Lite` — **50M tokens/dia** 💥 (maior cota gratuita do mundo!)
-- `lc/LongCat-Flash-Chat` — 500K tokens/dia
-- `lc/LongCat-Flash-Thinking` — 500K tokens/dia (raciocínio)
-
-> 100% gratuito durante o beta público. Reset diário à meia-noite UTC.
-
-### Pollinations AI (SEM CHAVE NECESSÁRIA!) 🆕
-
-1. Adicione o provedor Pollinations no Dashboard
-2. Deixe o campo de chave API vazio (ou coloque qualquer string)
-3. Comece a usar imediatamente!
-
-**Modelos via `pol/`:** `openai` (GPT-5), `claude`, `gemini`, `deepseek`, `llama` (Llama 4)
-
-> Sem cadastro, sem chave, sem cartão de crédito. 1 req/15s ilimitado.
-
-### Cloudflare Workers AI (GRATUITO 10K Neurons/dia!) 🆕
-
-1. Cadastre-se: [dash.cloudflare.com](https://dash.cloudflare.com)
-2. Gere um API Token em Profile → API Tokens
-3. Copie seu Account ID (coluna direita do dashboard)
-4. Dashboard → Adicionar Provedor → Cloudflare AI
- - API Key: seu token
- - Account ID: seu account ID
-
-**Modelos via `cf/`:** `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, 50+ mais
-
-> 10K Neurons/dia ≈ 150 respostas de LLM ou 500s de transcrição Whisper gratuita!
-
-### Scaleway AI (1M tokens gratuitos!) 🆕
-
-1. Cadastre-se: [console.scaleway.com](https://console.scaleway.com)
-2. Gere uma chave de API IAM
-3. Dashboard → Adicionar Provedor → Scaleway
-
-**Modelos via `scw/`:** `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`
-
-> 1M tokens gratuitos para novas contas. Dados processados na 🇫🇷 França (EU/GDPR).
-
-🎨 Criar Combos
+🎨 Create Combos
-### Exemplo 1: Maximizar Assinatura → Backup Barato
+### Example 1: Maximize Subscription → Cheap Backup
```
-Dashboard → Combos → Criar Novo
+Dashboard → Combos → Create New
-Nome: premium-coding
-Modelos:
- 1. cc/claude-opus-4-6 (Assinatura primária)
- 2. glm/glm-4.7 (Backup barato, $0.6/1M)
- 3. minimax/MiniMax-M2.1 (Fallback mais barato, $0.20/1M)
+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 na CLI: premium-coding
+Use in CLI: premium-coding
```
-### Exemplo 2: Somente Gratuito (Custo Zero)
+### Example 2: Free-Only (Zero Cost)
```
-Nome: free-combo
-Modelos:
- 1. gc/gemini-3-flash-preview (180K grátis/mês)
- 2. if/kimi-k2-thinking (ilimitado)
- 3. qw/qwen3-coder-plus (ilimitado)
+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)
-Custo: $0 para sempre!
+Cost: $0 forever!
```
-🔧 Integração CLI
+🔧 CLI Integration
### Cursor IDE
```
-Configurações → Modelos → Avançado:
+Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
- OpenAI API Key: [do dashboard OmniRoute]
+ OpenAI API Key: [from OmniRoute dashboard]
Model: cc/claude-opus-4-6
```
### Claude Code
-Use a página **CLI Tools** no dashboard para configuração em um clique, ou edite `~/.claude/settings.json` manualmente.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1345,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Opção 1 — Dashboard (recomendado):**
+**Option 1 — Dashboard (recommended):**
```
-Dashboard → CLI Tools → OpenClaw → Selecionar Modelo → Aplicar
+Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Opção 2 — Manual:** Edite `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1367,199 +1701,420 @@ Dashboard → CLI Tools → OpenClaw → Selecionar Modelo → Aplicar
}
```
-> **Nota:** OpenClaw funciona apenas com OmniRoute local. Use `127.0.0.1` em vez de `localhost` para evitar problemas de resolução IPv6.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
### Cline / Continue / RooCode
```
-Configurações → Configuração de API:
- Provedor: OpenAI Compatible
+Settings → API Configuration:
+ Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
- API Key: [do dashboard OmniRoute]
+ API Key: [from OmniRoute dashboard]
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Solução de Problemas
+## Solução de Problemas
-Clique para expandir o guia de solução de problemas
+Click to expand troubleshooting guide
**"Language model did not provide messages"**
-- Cota do provedor esgotada → Verifique o rastreador de cota no dashboard
-- Solução: Use combo com fallback ou mude para tier mais barato
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
**Rate limiting**
-- Cota de assinatura esgotada → Fallback para GLM/MiniMax
-- Adicione combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**Token OAuth expirado**
+**OAuth token expired**
-- Renovado automaticamente pelo OmniRoute
-- Se persistir: Dashboard → Provedor → Reconectar
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Custos altos**
+**High costs**
-- Verifique estatísticas de uso em Dashboard → Custos
-- Mude modelo primário para GLM/MiniMax
-- Use tier gratuito (Gemini CLI, iFlow) para tarefas não-críticas
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Dashboard abre na porta errada**
+**Dashboard/API ports are wrong**
-- Defina `PORT=20128` e `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Erros de cloud sync**
+**Cloud sync errors**
-- Verifique se `BASE_URL` aponta para sua instância em execução
-- Verifique se `CLOUD_URL` aponta para seu endpoint cloud esperado
-- Mantenha valores `NEXT_PUBLIC_*` alinhados com valores do servidor
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Primeiro login não funciona**
+**First login not working**
-- Verifique `INITIAL_PASSWORD` no `.env`
-- Se não definido, senha padrão é `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Sem logs de requisição**
+**No request logs**
-- Defina `ENABLE_REQUEST_LOGS=true` no `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Teste de conexão mostra "Invalid" para provedores compatíveis com OpenAI**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Muitos provedores não expõem endpoint `/models`
-- OmniRoute v1.0.6+ inclui validação via chat completions como fallback
-- Certifique-se de que a base URL inclui sufixo `/v1`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-
+### 🔐 OAuth on a Remote Server
+
+
+
+
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
+
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
+
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
+
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solution: Configure your own OAuth credentials
+
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
---
-## 🛠️
+#### Temporary workaround (without custom credentials)
-- **Runtime**: Node.js 20+
-- **Linguagem**: TypeScript 5.9 — **100% TypeScript** em `src/` e `open-sse/` (v1.0.6)
-- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
-- **Banco de Dados**: LowDB (JSON) + SQLite (estado do domínio + logs de proxy)
-- **Streaming**: Server-Sent Events (SSE)
-- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
-- **Testes**: Node.js test runner (368+ testes unitários)
-- **CI/CD**: GitHub Actions (publicação automática npm + Docker Hub no release)
-- **Website**: [omniroute.online](https://omniroute.online)
-- **Pacote**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **Resiliência**: Circuit breaker, backoff exponencial, anti-thundering herd, spoofing TLS
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
---
-## 📖 Documentação
-
-| Documento | Descrição |
-| ----------------------------------------------- | ------------------------------------------------- |
-| [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, combos, integração CLI, deploy |
-| [Referência da API](docs/API_REFERENCE.md) | Todos os endpoints com exemplos |
-| [Solução de Problemas](docs/TROUBLESHOOTING.md) | Problemas comuns e soluções |
-| [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura do sistema e internos |
-| [Contribuindo](CONTRIBUTING.md) | Setup de desenvolvimento e diretrizes |
-| [Spec OpenAPI](docs/openapi.yaml) | Especificação OpenAPI 3.0 |
-| [Política de Segurança](SECURITY.md) | Reportar vulnerabilidades e práticas de segurança |
-| [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | Guia completo: VM + nginx + Cloudflare |
-| [Galeria de Features](docs/FEATURES.md) | Tour visual do dashboard com screenshots |
-
-### 📸 Preview do Dashboard
-
-Clique para ver screenshots do dashboard
+🇧🇷 Versão em Português
-| Página | Screenshot |
-| ----------------- | ------------------------------------------------- |
-| **Provedores** |  |
-| **Combos** |  |
-| **Analytics** |  |
-| **Saúde** |  |
-| **Tradutor** |  |
-| **Configurações** |  |
-| **CLI Tools** |  |
-| **Logs de Uso** |  |
-| **Endpoint** |  |
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
+
+#### Passo a passo
+
+**1. Acesse o Google Cloud Console**
+
+Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Crie um novo OAuth 2.0 Client ID**
+
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
+
+**3. Adicione as Authorized Redirect URIs**
+
+No campo **"Authorized redirect URIs"**, adicione:
+
+```
+https://seu-servidor.com/callback
+```
+
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
+
+**4. Salve e copie as credenciais**
+
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
+
+**5. Configure as variáveis de ambiente**
+
+No seu `.env` (ou nas variáveis de ambiente do Docker):
+
+```bash
+# Para Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+
+# Para Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+```
+
+**6. Reinicie o OmniRoute**
+
+```bash
+# Se usando npm:
+npm run dev
+
+# Se usando Docker:
+docker restart omniroute
+```
+
+**7. Tente conectar novamente**
+
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
+
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
+
+---
+
+#### Workaround temporário (sem configurar credenciais próprias)
+
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
+
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
+4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
+5. Clique em **"Connect"**
+
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🗺️
+
-O OmniRoute tem **210+ funcionalidades planejadas** em múltiplas fases de desenvolvimento. Áreas principais:
+## 🛠️ Tech Stack
-| Categoria | Features Planejadas | Destaques |
-| -------------------------------- | ------------------- | --------------------------------------------------------------------------- |
-| 🧠 **Roteamento e Inteligência** | 25+ | Roteamento por menor latência, roteamento por tags, pré-verificação de cota |
-| 🔒 **Segurança e Compliance** | 20+ | Hardening SSRF, cloaking de credenciais, rate-limit por endpoint |
-| 📊 **Observabilidade** | 15+ | Integração OpenTelemetry, monitoramento de cota em tempo real |
-| 🔄 **Integrações** | 20+ | Registro dinâmico de modelos, cooldowns de provedor |
-| ⚡ **Performance** | 15+ | Cache dupla camada, prompt cache, response cache, batch API |
-| 🌐 **Ecossistema** | 10+ | WebSocket API, config hot-reload, modo comercial |
+
+Click to expand tech stack details
-### 🔜 Em Breve
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
-- 🔗 **Integração com OpenCode** — Suporte nativo como provider para a IDE OpenCode
-- 🔗 **Integração com TRAE** — Suporte completo ao framework de desenvolvimento TRAE
-- 📦 **Batch API** — Processamento assíncrono em lote para requisições em massa
-- 🎯 **Roteamento por Tags** — Roteamento de requisições baseado em tags personalizadas
-- 💰 **Estratégia de Menor Custo** — Seleção automática do provedor mais barato
-
-> 📝 Especificações completas de features disponíveis em [`docs/new-features/`](docs/new-features/) (217 specs detalhadas)
+
---
-## 👥 Contribuidores
+## Documentação
+
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
+
+---
+
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Como Contribuir
+### How to Contribute
-1. Faça fork do repositório
-2. Crie sua branch de funcionalidade (`git checkout -b feature/amazing-feature`)
-3. Faça commit das suas alterações (`git commit -m 'Add amazing feature'`)
-4. Faça push para a branch (`git push origin feature/amazing-feature`)
-5. Abra um Pull Request
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Veja [CONTRIBUTING.md](CONTRIBUTING.md) para diretrizes detalhadas.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Lançando uma Nova Versão
+### Releasing a New Version
```bash
-# Crie um release — publicação no npm acontece automaticamente
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+# Create a release — npm publish happens automatically
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Histórico de Stars
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Agradecimentos
+## 🙏 Acknowledgments
-Agradecimento especial a **[9router](https://github.com/decolua/9router)** por **[decolua](https://github.com/decolua)** — o projeto original que inspirou este fork. OmniRoute se baseia nessa fundação incrível com funcionalidades adicionais, APIs multi-modal e uma reescrita completa em TypeScript.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Agradecimento especial a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — a implementação original em Go que inspirou esta adaptação em JavaScript.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Licença
+## Licença
-Licença MIT - veja [LICENSE](LICENSE) para detalhes.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Feito com ❤️ para desenvolvedores que programam 24/7
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/pt-BR/docs/FEATURES.md b/docs/i18n/pt-BR/docs/FEATURES.md
new file mode 100644
index 0000000000..e32bab7c3a
--- /dev/null
+++ b/docs/i18n/pt-BR/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Português (Brasil))
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/pt/README.md b/docs/i18n/pt/README.md
index fe08fe4db1..5b019e58c2 100644
--- a/docs/i18n/pt/README.md
+++ b/docs/i18n/pt/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — O gateway de IA gratuito
+# 🚀 OmniRoute — The Free AI Gateway (Português (Portugal))
-### Nunca pare de codificar. Roteamento inteligente para **modelos de IA GRATUITOS e de baixo custo** com fallback automático.
-
-_Seu proxy de API universal — um endpoint, mais de 36 provedores, tempo de inatividade zero._
-
-**Conclusões de bate-papo • Incorporações • Geração de imagem • Áudio • Reclassificação • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Provedor de IA gratuito para seus agentes de codificação favoritos
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Conecte qualquer ferramenta IDE ou CLI com tecnologia de IA por meio do OmniRoute - gateway de API gratuito para codificação ilimitada._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _Conecte qualquer ferramenta IDE ou CLI com tecnologia de IA por meio do OmniRou
|
-📡 Todos os agentes se conectam via http://localhost:20128/v1 ou http://cloud.omniroute.online/v1 — uma configuração, modelos ilimitados e cota
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Por que OmniRoute?
-
-**Pare de desperdiçar dinheiro e atingir limites:**
-
--
A cota de assinatura expira sem ser utilizada todos os meses
--
Os limites de taxa impedem você no meio da codificação
--
APIs caras (US$ 20-50/mês por provedor)
--
Troca manual entre provedores
-
-**OmniRoute resolve isso:**
-
-- ✅ **Maximize as assinaturas** - Rastreie a cota, use cada bit antes de redefinir
-- ✅ **Fullback automático** - Assinatura → Chave de API → Barato → Gratuito, tempo de inatividade zero
-- ✅ **Múltiplas contas** - Round-robin entre contas por provedor
-- ✅ **Universal** - Funciona com Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, qualquer ferramenta CLI
-
----
-
-## 📧 Suporte
-
-> 💬 **Junte-se à nossa comunidade!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Obtenha ajuda, compartilhe dicas e fique atualizado.
-
-- **Site**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **Problemas**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Projeto Original**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Como funciona
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,452 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 O que o OmniRoute resolve — 30 pontos reais de dor e casos de uso
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Todo desenvolvedor que usa ferramentas de IA enfrenta esses problemas diariamente.** O OmniRoute foi criado para resolver todos eles, desde custos excessivos até bloqueios regionais, desde fluxos quebrados de OAuth até operações de protocolo e observabilidade empresarial.
+> **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 protocol operations and enterprise observability.
-💸 1. "Eu pago por uma assinatura cara, mas ainda sou interrompido pelos limites"
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Os desenvolvedores pagam US$ 20–200/mês pelo Claude Pro, Codex Pro ou GitHub Copilot. Mesmo pagando, a cota tem um limite máximo – 5h de uso, limites semanais ou limites de taxa por minuto. No meio da sessão de codificação, o provedor para de responder e o desenvolvedor perde fluxo e produtividade.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Smart 4-Tier Fallback** — Se a cota de assinatura acabar, redireciona automaticamente para API Key → Barato → Gratuito sem intervenção manual
-- **Rastreamento de cota em tempo real** — Mostra o consumo de tokens em tempo real com contagem regressiva redefinida (5h, diariamente, semanalmente)
-- **Suporte para múltiplas contas** — Várias contas por provedor com round-robin automático — quando uma acabar, muda para a próxima
-- **Combos personalizados** — Cadeias alternativas personalizáveis com 6 estratégias de balanceamento (preencher primeiro, round-robin, P2C, aleatório, menos usado, com custo otimizado)
-- **Codex Business Quotas** — Monitoramento de cotas de espaço de trabalho de negócios/equipe diretamente no painel
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. "Preciso usar vários provedores, mas cada um tem uma API diferente"
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI usa um formato, Claude (Anthropic) usa outro, Gemini ainda outro. Se um desenvolvedor quiser testar modelos de diferentes provedores ou fazer fallback entre eles, ele precisará reconfigurar SDKs, alterar endpoints e lidar com formatos incompatíveis. Provedores personalizados (FriendLI, NIM) possuem endpoints de modelo não padrão.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Endpoint unificado** — Um único `http://localhost:20128/v1` serve como proxy para todos os mais de 36 provedores
-- **Tradução de formato** — Automática e transparente: OpenAI ↔ Claude ↔ Gemini ↔ API de respostas
-- **Response Sanitization** — Remove campos não padrão (`x_groq`, `usage_breakdown`, `service_tier`) que quebram o OpenAI SDK v1.83+
-- **Normalização de função** — Converte `developer` → `system` para provedores não-OpenAI; `system` → `user` para GLM/ERNIE
-- **Think Tag Extraction** — Extrai blocos `` de modelos como DeepSeek R1 em `reasoning_content` padronizado
-- **Saída estruturada para Gemini** — `json_schema` → conversão automática `responseMimeType`/`responseSchema`
-- **`stream` é padronizado como `false`** — Alinha-se com as especificações OpenAI, evitando SSE inesperado em SDKs Python/Rust/Go
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. "Meu provedor de IA bloqueia minha região/país"
+🌐 3. "My AI provider blocks my region/country"
-Provedores como OpenAI/Codex bloqueiam o acesso de determinadas regiões geográficas. Os usuários recebem erros como `unsupported_country_region_territory` durante conexões OAuth e API. Isto é especialmente frustrante para desenvolvedores de países em desenvolvimento.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Configuração de proxy de 3 níveis** — Proxy configurável em 3 níveis: global (todo o tráfego), por provedor (apenas um provedor) e por conexão/chave
-- **Selos de proxy codificados por cores** — Indicadores visuais: 🟢 proxy global, 🟡 proxy do provedor, 🔵 proxy de conexão, sempre mostrando o IP
-- **Troca de token OAuth por meio de proxy** — O fluxo OAuth também passa pelo proxy, resolvendo `unsupported_country_region_territory`
-- **Testes de conexão via proxy** — Os testes de conexão usam o proxy configurado (não há mais bypass direto)
-- **Suporte SOCKS5** — Suporte completo ao proxy SOCKS5 para roteamento de saída
-- **TLS Fingerprint Spoofing** — Impressão digital TLS semelhante a um navegador via `wreq-js` para ignorar a detecção de bot
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. "Quero usar IA para codificação, mas não tenho dinheiro"
+🆓 4. "I want to use AI for coding but I have no money"
-Nem todos podem pagar US$ 20–200/mês por assinaturas de IA. Estudantes, desenvolvedores de países emergentes, amadores e freelancers precisam de acesso a modelos de qualidade a custo zero.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Provedores de nível gratuito integrados** — Suporte nativo para provedores 100% gratuitos: iFlow (8 modelos ilimitados), Qwen (3 modelos ilimitados), Kiro (Claude grátis), Gemini CLI (180 mil/mês grátis)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Combos somente gratuitos** — Cadeia `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = US$ 0/mês com tempo de inatividade zero
-- **Créditos gratuitos NVIDIA NIM** — 1.000 créditos gratuitos integrados
-- **Estratégia de Custo Otimizado** — Estratégia de roteamento que escolhe automaticamente o provedor mais barato disponível
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. "Preciso proteger meu gateway de IA contra acesso não autorizado"
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Ao expor um gateway de IA à rede (LAN, VPS, Docker), qualquer pessoa com o endereço pode consumir os tokens/cota do desenvolvedor. Sem proteção, as APIs ficam vulneráveis ao uso indevido, injeção imediata e abuso.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Gerenciamento de chaves de API** — Geração, rotação e escopo por provedor com uma página `/dashboard/api-manager` dedicada
-- **Permissões em nível de modelo** — Restringir chaves de API a modelos específicos (`openai/*`, padrões curinga), com alternância Permitir tudo/Restringir
-- **API Endpoint Protection** — Exija uma chave para `/v1/models` e bloqueie provedores específicos da listagem
-- **Auth Guard + Proteção CSRF** — Todas as rotas do painel protegidas com middleware `withAuth` + tokens CSRF
-- **Rate Limiter** — Limitação de taxa por IP com janelas configuráveis
-- **Filtragem de IP** — Lista de permissões/lista de bloqueio para controle de acesso
-- **Prompt Injection Guard** — Sanitização contra padrões de prompt maliciosos
-- **Criptografia AES-256-GCM** — Credenciais criptografadas em repouso
+- **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. "Meu provedor caiu e perdi meu fluxo de codificação"
+🛑 6. "My provider went down and I lost my coding flow"
-Os provedores de IA podem ficar instáveis, retornar erros 5xx ou atingir limites de taxa temporários. Se um desenvolvedor depender de um único provedor, ele será interrompido. Sem disjuntores, tentativas repetidas podem travar o aplicativo.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Disjuntor por provedor** — Abertura/fechamento automático com limites e resfriamento configuráveis (Fechado/Aberto/Meio-aberto)
-- **Retirada exponencial** — Atrasos progressivos em novas tentativas
-- **Rebanho Anti-Trovão** — Proteção Mutex + semáforo contra tempestades de novas tentativas simultâneas
-- **Combo Fallback Chains** — Se o provedor primário falhar, ele cairá automaticamente na cadeia sem intervenção
-- **Combo Circuit Breaker** — Desativa automaticamente provedores com falha em uma cadeia de combinação
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-- **Health Dashboard** — Monitoramento de tempo de atividade, estados de disjuntores, bloqueios, estatísticas de cache, latência p50/p95/p99
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. "Configurar cada ferramenta de IA é tedioso e repetitivo"
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Os desenvolvedores usam Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Cada ferramenta precisa de uma configuração diferente (endpoint da API, chave, modelo). Reconfigurar ao trocar de provedor ou modelo é uma perda de tempo.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **CLI Tools Dashboard** — Página dedicada com configuração de um clique para Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-- **GitHub Copilot Config Generator** — Gera `chatLanguageModels.json` para VS Code com seleção de modelo em massa
-- **Assistente de integração** — Configuração guiada em 4 etapas para usuários iniciantes
-- **Um endpoint, todos os modelos** — Configure `http://localhost:20128/v1` uma vez, acesse mais de 36 provedores
+- **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 67+ providers
-🔑 8. "Gerenciar tokens OAuth de vários provedores é um inferno"
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot — todos usam OAuth 2.0 com tokens expirados. Os desenvolvedores precisam se autenticar novamente constantemente, lidar com `client_secret is missing`, `redirect_uri_mismatch` e falhas em servidores remotos. OAuth em LAN/VPS é particularmente problemático.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Atualização automática de token** — Os tokens OAuth são atualizados em segundo plano antes da expiração
-- **OAuth 2.0 (PKCE) integrado ** — Fluxo automático para Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **OAuth de várias contas** — Várias contas por provedor por meio de extração de token JWT/ID
-- **OAuth LAN/Remote Fix** — Detecção de IP privado para `redirect_uri` + modo URL manual para servidores remotos
-- **OAuth Behind Nginx** — Usa `window.location.origin` para compatibilidade de proxy reverso
-- **Guia OAuth remoto** — Guia passo a passo para credenciais do Google Cloud em VPS/Docker
+- **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. "Não sei quanto estou gastando ou onde"
+📊 9. "I don't know how much I'm spending or where"
-Os desenvolvedores usam vários provedores pagos, mas não têm uma visão unificada dos gastos. Cada provedor possui seu próprio painel de faturamento, mas não há visão consolidada. Custos inesperados podem se acumular.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Painel de análise de custos** — Acompanhamento de custos por token e gerenciamento de orçamento por provedor
-- **Limites de orçamento por nível** — Teto de gastos por nível que aciona substituto automático
-- **Configuração de preços por modelo** — Preços configuráveis por modelo
-- **Estatísticas de uso por chave de API** — Contagem de solicitações e carimbo de data/hora do último uso por chave
-- **Painel de análise** — Cartões de estatísticas, gráfico de uso do modelo, tabela de provedores com taxas de sucesso e latência
+- **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. "Não consigo diagnosticar erros e problemas em chamadas de IA"
+🐛 10. "I can't diagnose errors and problems in AI calls"
-Quando uma chamada falha, o desenvolvedor não sabe se foi um limite de taxa, um token expirado, um formato errado ou um erro do provedor. Logs fragmentados em diferentes terminais. Sem observabilidade, a depuração é uma tentativa e erro.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Painel de registros unificados** — 4 guias: registros de solicitação, registros de proxy, registros de auditoria, console
-- **Console Log Viewer** — Visualizador em estilo terminal em tempo real com níveis codificados por cores, rolagem automática, pesquisa, filtro
-- **SQLite Proxy Logs** — Logs persistentes que sobrevivem às reinicializações do servidor
-- **Translator Playground** — 4 modos de depuração: Playground (tradução de formato), Chat Tester (ida e volta), Test Bench (lote), Live Monitor (tempo real)
-- **Solicitar telemetria** — latência p50/p95/p99 + rastreamento X-Request-Id
-- **Registro baseado em arquivo com rotação** — O interceptador do console captura tudo no log JSON com rotação baseada em tamanho
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. "Implantar e manter o gateway é complexo"
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Instalar, configurar e manter um proxy de IA em diferentes ambientes (local, VPS, Docker, nuvem) exige muito trabalho. Problemas como caminhos codificados, `EACCES` em diretórios, conflitos de porta e compilações entre plataformas aumentam o atrito.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **instalação global npm** — `npm install -g omniroute && omniroute` — concluído
-- **Docker Multiplataforma** — AMD64 + ARM64 nativo (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Perfis Docker Compose** — `base` (sem ferramentas CLI) e `cli` (com Claude Code, Codex, OpenClaw)
-- **Aplicativo Electron Desktop** — Aplicativo nativo para Windows/macOS/Linux com bandeja do sistema, inicialização automática e modo offline
-- **Modo Split-Port** — API e Dashboard em portas separadas para cenários avançados (proxy reverso, rede de contêineres)
-- **Cloud Sync** — Sincronização de configuração entre dispositivos via Cloudflare Workers
-- **Backups de banco de dados** — Backup, restauração, exportação e importação automática de todas as configurações
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. "A interface é somente em inglês e minha equipe não fala inglês"
+🌍 12. "The interface is English-only and my team doesn't speak English"
-Equipes em países que não falam inglês, especialmente na América Latina, Ásia e Europa, enfrentam dificuldades com interfaces somente em inglês. As barreiras linguísticas reduzem a adoção e aumentam os erros de configuração.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Painel i18n — 30 idiomas** — Todas as mais de 500 teclas traduzidas, incluindo árabe, búlgaro, dinamarquês, alemão, espanhol, finlandês, francês, hebraico, hindi, húngaro, indonésio, italiano, japonês, coreano, malaio, holandês, norueguês, polonês, português (PT/BR), romeno, russo, eslovaco, sueco, tailandês, ucraniano, vietnamita, chinês, filipino, inglês
-- **Suporte RTL** — Suporte da direita para a esquerda para árabe e hebraico
-- **READMEs multilíngues** — 30 traduções completas de documentação
-- **Seletor de idioma** — Ícone de globo no cabeçalho para troca em tempo real
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. "Preciso de mais do que bate-papo - preciso de incorporações, imagens, áudio"
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-IA não é apenas conclusão de bate-papo. Os desenvolvedores precisam gerar imagens, transcrever áudio, criar embeddings para RAG, reclassificar documentos e moderar conteúdo. Cada API possui um endpoint e formato diferente.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Embeddings** — `/v1/embeddings` com 6 provedores e mais de 9 modelos
-- **Geração de imagem** — `/v1/images/generations` com 10 provedores e mais de 20 modelos (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **Texto para vídeo** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) e SD WebUI
-- **Texto para música** — `/v1/music/generations` — ComfyUI (áudio estável aberto, MusicGen)
-- **Transcrição de áudio** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Conversão de texto em fala** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + provedores existentes
-- **Moderações** — `/v1/moderations` — Verificações de segurança de conteúdo
-- **Reclassificação** — `/v1/rerank` — Reclassificação da relevância do documento
-- **API de respostas ** — Suporte completo a `/v1/responses` para Codex
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. "Não tenho como testar e comparar a qualidade entre modelos"
+🧪 14. "I have no way to test and compare quality across models"
-Os desenvolvedores querem saber qual modelo é melhor para seu caso de uso – código, tradução, raciocínio – mas comparar manualmente é lento. Não existem ferramentas de avaliação integradas.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Avaliações LLM** — Teste Golden Set com 10 casos pré-carregados cobrindo saudações, matemática, geografia, geração de código, conformidade com JSON, tradução, remarcação, recusa de segurança
-- **4 estratégias de correspondência** — `exact`, `contains`, `regex`, `custom` (função JS)
-- **Translator Playground Test Bench** — Teste em lote com múltiplas entradas e saídas esperadas, comparação entre fornecedores
-- **Testador de bate-papo** — Ida e volta completa com renderização de resposta visual
-- **Monitoramento ao vivo** — Transmissão em tempo real de todas as solicitações que passam pelo proxy
+- **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. "Preciso escalar sem perder desempenho"
+📈 15. "I need to scale without losing performance"
-À medida que o volume de solicitações aumenta, sem armazenar em cache as mesmas perguntas geram custos duplicados. Sem idempotência, solicitações duplicadas desperdiçam processamento. Os limites de tarifas por provedor devem ser respeitados.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Cache Semântico** — Cache de duas camadas (assinatura + semântica) reduz custo e latência
-- **Idempotência de solicitação** — janela de desduplicação de 5s para solicitações idênticas
-- **Detecção de limite de taxa** — RPM por provedor, intervalo mínimo e rastreamento simultâneo máximo
-- **Limites de taxa editáveis** — Padrões configuráveis em Configurações → Resiliência com persistência
-- **Cache de validação de chave de API** — cache de três camadas para desempenho de produção
-- **Health Dashboard com telemetria** — latência p50/p95/p99, estatísticas de cache, tempo de atividade
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. "Quero controlar o comportamento do modelo globalmente"
+🤖 16. "I want to control model behavior globally"
-Desenvolvedores que desejam todas as respostas em um idioma específico, com um tom específico ou que desejam limitar os tokens de raciocínio. Configurar isso em cada ferramenta/solicitação é impraticável.
+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.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- **Injeção de Prompt do Sistema** — Prompt global aplicado a todas as solicitações
-- **Thinking Budget Validation** — Controle de alocação de token de raciocínio por solicitação (passthrough, automático, personalizado, adaptativo)
-- **6 Estratégias de Roteamento** — Estratégias globais que determinam como as solicitações são distribuídas
-- **Wildcard Router** — Os padrões `provider/*` roteiam dinamicamente para qualquer provedor
-- **Combo Habilitar/Desabilitar Alternar** — Alternar combos diretamente do painel
-- **Alternância de provedor** — Habilite/desabilite todas as conexões de um provedor com um clique
-- **Provedores bloqueados** — Excluir provedores específicos da listagem `/v1/models`
+- **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
-🧰 17. "Preciso de ferramentas MCP como recursos de produto de primeira classe"
+🧰 17. "I need MCP tools as first-class product capabilities"
-Muitos gateways de IA expõem o MCP apenas como um detalhe de implementação oculto. As equipes precisam de uma camada operacional visível e gerenciável.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- MCP aparece na navegação do painel e na guia protocolo de endpoint
-- Página dedicada de gerenciamento de MCP com processos, ferramentas, escopos e auditoria
-- Início rápido integrado para `omniroute --mcp` e integração de cliente
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "Preciso de orquestração A2A com caminhos de tarefa de sincronização + fluxo"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Os fluxos de trabalho do agente precisam de respostas diretas e execução em streaming de longa duração com controle do ciclo de vida.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Endpoint A2A JSON-RPC (`POST /a2a`) com `message/send` e `message/stream`
-- Streaming SSE com propagação de estado terminal
-- APIs de ciclo de vida de tarefas para `tasks/get` e `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. "Preciso de integridade real do processo MCP, não de status adivinhado"
+🛰️ 19. "I need real MCP process health, not guessed status"
-As equipes operacionais precisam saber se o MCP está realmente ativo, e não apenas se uma API está acessível.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Arquivo de pulsação em tempo de execução com PID, carimbos de data/hora, transporte, contagem de ferramentas e modo de escopo
-- API de status MCP combinando pulsação + atividade recente
-- Cartões de status da interface do usuário para atualização de processo/tempo de atividade/pulsação
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "Preciso de execução auditável da ferramenta MCP"
+📋 20. "I need auditable MCP tool execution"
-Quando as ferramentas alteram a configuração ou acionam ações operacionais, as equipes precisam de rastreabilidade forense.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Registro de auditoria apoiado por SQLite para chamadas de ferramentas MCP
-- Filtros por ferramenta, sucesso/falha, chave de API e paginação
-- Tabela de auditoria do painel + endpoints de estatísticas para automação
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "Preciso de permissões MCP com escopo definido por integração"
+🔐 21. "I need scoped MCP permissions per integration"
-Clientes diferentes devem ter acesso com privilégios mínimos às categorias de ferramentas.
+Different clients should have least-privilege access to tool categories.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- 9 escopos MCP granulares para acesso controlado à ferramenta
-- Aplicação do escopo e visibilidade na UI de gerenciamento do MCP
-- Postura padrão segura para ferramentas operacionais
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. "Preciso de controles operacionais sem reimplantar"
+⚙️ 22. "I need operational controls without redeploying"
-As equipes precisam de mudanças rápidas no tempo de execução durante incidentes ou eventos de custo.
+Teams need quick runtime changes during incidents or cost events.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Alternar ativação combinada diretamente do painel MCP
-- Aplicar perfis de resiliência de pacotes de políticas predefinidos
-- Redefinir o estado do disjuntor no mesmo painel de operações
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. "Preciso de visibilidade e cancelamento do ciclo de vida da tarefa A2A ao vivo"
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Sem visibilidade do ciclo de vida, os incidentes de tarefas tornam-se difíceis de triagem.
+Without lifecycle visibility, task incidents become hard to triage.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Listagem/filtragem de tarefas por estado/habilidade com paginação
-- Detalhamento de metadados de tarefas, eventos e artefatos
-- Terminal de cancelamento de tarefa e ação de UI com confirmação
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. "Preciso de métricas de fluxo ativo para carga A2A"
+🌊 24. "I need active stream metrics for A2A load"
-Os fluxos de trabalho de streaming exigem insights operacionais sobre simultaneidade e conexões em tempo real.
+Streaming workflows require operational insight into concurrency and live connections.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Contadores de fluxo ativos integrados ao status A2A
-- Carimbo de data/hora da última tarefa e contagens por estado
-- Cartões de painel A2A para monitoramento de operações em tempo real
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "Preciso de descoberta de agente padrão para clientes"
+🪪 25. "I need standard agent discovery for clients"
-Clientes e orquestradores externos precisam de metadados legíveis por máquina para integração.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Cartão de agente exposto em `/.well-known/agent.json`
-- Capacidades e habilidades mostradas na UI de gerenciamento
-- A API de status A2A inclui metadados de descoberta para automação
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "Preciso de descoberta de protocolo na UX do produto"
+🧭 26. "I need protocol discoverability in the product UX"
-Se os usuários não conseguirem descobrir superfícies de protocolo, a adoção e a qualidade do suporte cairão.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Entradas da barra lateral para MCP e A2A
-- Guia Protocolos da página Endpoint com início rápido e status
-- Links da visão geral para painéis de gerenciamento dedicados
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "Preciso de validação de protocolo ponta a ponta com clientes reais"
+🧪 27. "I need end-to-end protocol validation with real clients"
-Os testes simulados não são suficientes para validar a compatibilidade do protocolo antes do lançamento.
+Mock tests are not enough to validate protocol compatibility before release.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Suíte E2E que inicializa o aplicativo e usa transporte de cliente SDK MCP real
-- Testes de cliente A2A para fluxos de descoberta, envio, streaming, obtenção e cancelamento
-- Verificação cruzada de afirmações com APIs de auditoria MCP e tarefas A2A
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. "Preciso de observabilidade unificada em todas as interfaces"
+📡 28. "I need unified observability across all interfaces"
-A divisão da observabilidade por protocolo cria pontos cegos e MTTR mais longo.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Painéis/logs/análises unificados em um produto
-- Saúde + auditoria + solicitação de telemetria nas camadas OpenAI, MCP e A2A
-- APIs operacionais para status e automação
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "Preciso de um tempo de execução para proxy + ferramentas + orquestração de agente"
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-A execução de muitos serviços separados aumenta o custo operacional e os modos de falha.
+Running many separate services increases operational cost and failure modes.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Proxy compatível com OpenAI, servidor MCP e servidor A2A em uma pilha
-- Autenticação compartilhada, resiliência, armazenamento de dados e observabilidade
-- Modelo de política consistente em todas as superfícies de interação
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. "Preciso enviar fluxos de trabalho de agente sem expansão de códigos colados"
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-As equipes perdem velocidade ao unir vários serviços e scripts ad hoc.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Como o OmniRoute resolve isso:**
+**How OmniRoute solves it:**
-- Estratégia unificada de endpoint para clientes e agentes
-- UIs de gerenciamento de protocolo integradas e caminhos de validação de fumaça
-- Fundações prontas para produção (segurança, registro, resiliência, backup)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Exemplos de manuais (casos de uso integrados)
+### Example Playbooks (Integrated Use Cases)
-**Manual A: Maximize a assinatura paga + backup barato**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -684,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Manual B: Pilha de codificação de custo zero**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -696,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Manual C: cadeia de fallback sempre ativa 24 horas por dia, 7 dias por semana**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -709,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Manual D: Operações de agente com MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Início rápido
+## 🆓 Start Free — Zero Configuration Cost
-**1. Instale globalmente:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Início Rápido
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 O painel abre às `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Comando | Descrição |
-| ----------------------- | ------------------------------------- |
-| `omniroute` | Iniciar servidor (porta padrão 20128) |
-| `omniroute --port 3000` | Usar porta personalizada |
-| `omniroute --no-open` | Não abra o navegador automaticamente |
-| `omniroute --help` | Mostrar ajuda |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Conecte um provedor GRATUITO:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Painel → Provedores → Conectar **Claude Code** ou **Antigravidade** → Login OAuth → Concluído!
+Optional split-port mode:
-**3. Use em sua ferramenta CLI:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**É isso aí!** Comece a codificar com modelos de IA GRATUITOS.
+### 2) Connect providers and create your API key
-**Alternativa – execute a partir da fonte:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-OmniRoute está disponível como uma imagem pública do Docker em [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Execução rápida:**
+**Quick run:**
```bash
docker run -d \
@@ -778,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Com arquivo de ambiente:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -793,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Usando Docker Compose:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -803,257 +880,552 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| Imagem | Etiqueta | Tamanho | Descrição |
-| ------------------------ | -------- | ------- | --------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250 MB | Última versão estável |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250 MB | Versão atual |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+### Início Rápido
+
```bash
-npm run electron:dev # Development mode
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Visão geral dos preços
+## 💰 Pricing at a Glance
-| Nível | Provedor | Custo | Redefinição de cota | Melhor para |
-| ------------------- | ------------------- | -------------------------- | ------------------------ | ----------------------- |
-| **💳 ASSINATURA** | Código Claude (Pro) | $ 20/mês | 5h + semanalmente | Já inscrito |
-| | Códice (Plus/Pro) | US$ 20-200/mês | 5h + semanalmente | Usuários OpenAI |
-| | Gêmeos CLI | **GRÁTIS** | 180 mil/mês + 1 mil/dia | Todos! |
-| | Copiloto GitHub | US$ 10-19/mês | Mensalmente | Usuários do GitHub |
-| **🔑 CHAVE DE API** | NVIDIA NIM | **GRÁTIS** (1000 créditos) | Único | Teste de nível gratuito |
-| | DeepSeek | Pagamento conforme uso | Nenhum | Melhor preço/qualidade |
-| | Groq | Nível gratuito + pago | Taxa limitada | Inferência ultrarrápida |
-| | xAI (Groque) | Pagamento conforme uso | Nenhum | Modelos Grok |
-| | Mistral | Nível gratuito + pago | Taxa limitada | IA Europeia |
-| | OpenRouter | Pagamento conforme uso | Nenhum | Mais de 100 modelos |
-| **💰 BARATO** | GLM-4.7 | US$ 0,6/1 milhão | Diariamente 10h | Backup de orçamento |
-| | MiniMax M2.1 | US$ 0,2/1 milhão | Rolamento de 5 horas | Opção mais barata |
-| | Kimi K2 | $ 9 / mês fixo | 10 milhões de tokens/mês | Custo previsível |
-| **🆓 GRÁTIS** | iFlow | $0 | Ilimitado | 8 modelos grátis |
-| | Qwen | $0 | Ilimitado | 3 modelos grátis |
-| | Kiro | $0 | Ilimitado | Cláudio grátis |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Dica profissional:** Comece com Gemini CLI (180 mil grátis/mês) + combo iFlow (gratuito ilimitado) = custo de $ 0!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Principais recursos
+---
-### 🧠 Roteamento e inteligência central
+## 🆓 Free Models — What You Actually Get
-| Recurso | O que faz |
-| -------------------------------------------- | -------------------------------------------------------------------------------------------------- |
-| 🎯 **Fullback inteligente de 4 camadas** | Roteamento automático: Assinatura → Chave de API → Barato → Grátis |
-| 📊 **Acompanhamento de cotas em tempo real** | Contagem de tokens ativos + contagem regressiva redefinida por provedor |
-| 🔄 **Tradução de formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro sem costura + higienização de resposta |
-| 👥 **Suporte para múltiplas contas** | Múltiplas contas por provedor com seleção inteligente |
-| 🔄 **Atualização automática de token** | Os tokens OAuth são atualizados automaticamente com nova tentativa |
-| 🎨 **Combos Personalizados** | 6 estratégias: preencher primeiro, round-robin, p2c, aleatório, menos usado, otimizado para custos |
-| 🧩 **Modelos Personalizados** | Adicione qualquer ID de modelo a qualquer provedor |
-| 🌐 **Roteador curinga** | Rotear padrões `provider/*` para qualquer provedor dinamicamente |
-| 🧠 **Pensando no Orçamento** | Modos de passagem, automático, personalizado e adaptativo para modelos de raciocínio |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **Injeção imediata do sistema** | Prompt de sistema global aplicado em todas as solicitações |
-| 📄 **API de respostas** | Suporte completo à API de respostas OpenAI (`/v1/responses`) para Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 APIs multimodais
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Recurso | O que faz |
-| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Geração de imagens** | `/v1/images/generations` — 4 provedores, mais de 9 modelos |
-| 📐 **Incorporações** | `/v1/embeddings` — 6 provedores, mais de 9 modelos |
-| 🎤 **Transcrição de áudio** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Conversão de texto em fala** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Moderações** | `/v1/moderations` — Verificações de segurança de conteúdo |
-| 🔀 **Reclassificação** | `/v1/rerank` — Reclassificação da relevância dos documentos |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Resiliência e segurança
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| Recurso | O que faz |
-| -------------------------------------------- | ------------------------------------------------------------------------------------ |
-| 🔌 **Disjuntor** | Abertura/fechamento automático por provedor com limites configuráveis |
-| 🛡️ **Rebanho Anti-Trovão** | Mutex + limite de taxa de semáforo para provedores de chaves de API |
-| 🧠 **Cache Semântico** | Cache de duas camadas (assinatura + semântica) reduz custo e latência |
-| ⚡ **Solicitar Idempotência** | Janela de desduplicação 5s para solicitações duplicadas |
-| 🔒 **Falsificação de impressão digital TLS** | Ignore a detecção de bot baseada em TLS via wreq-js |
-| 🌐 **Filtragem de IP** | Lista de permissões/lista de bloqueio para controle de acesso à API |
-| 📊 **Limites de taxas editáveis** | RPM configurável, intervalo mínimo e simultâneo máximo no nível do sistema |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **Proteção de endpoint de API** | Autenticação + bloqueio de provedor para o endpoint `/models` |
-| 🔒 **Visibilidade do proxy** | Crachás codificados por cores: 🟢 global, 🟡 provedor, 🔵 por conexão com display IP |
-| 🌐 **Configuração de proxy de 3 níveis** | Configurar proxies em nível global, por provedor ou por conexão |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 Observabilidade e análise
+### 🟡 QWEN MODELS (Device Code Auth)
-| Recurso | O que faz |
-| ------------------------------------------- | ------------------------------------------------------------------------------------------------ |
-| 📝 **Solicitar registro** | Modo de depuração com logs completos de solicitação/resposta |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **Logs de proxy SQLite** | Logs de proxy persistentes sobrevivem às reinicializações do servidor |
-| 📊 **Painel de análise** | Alimentado por recargas: cartões de estatísticas, gráfico de uso de modelo, tabela de provedores |
-| 📈 **Acompanhamento do progresso** | Eventos de progresso SSE opcionais para streaming |
-| 🧪 **Avaliações LLM** | Teste de Golden Set com 4 estratégias de jogo |
-| 🔍 **Solicitar Telemetria** | Agregação de latência p50/p95/p99 + rastreamento X-Request-Id |
-| 📋 **Painel de registros** | Página unificada de 4 guias: Logs de solicitação, Logs de proxy, Logs de auditoria, Console |
-| 🖥️ **Visualizador de registros do console** | Visualizador em estilo terminal em tempo real com filtro de nível, pesquisa, rolagem automática |
-| 📑 **Registro baseado em arquivo** | O interceptor do console captura toda a saída para o arquivo de log JSON com rotação |
-| 🏥 **Painel de saúde** | Tempo de atividade do sistema, estados de disjuntores, bloqueios, estatísticas de cache |
-| 💰 **Acompanhamento de custos** | Gestão orçamentária + configuração de preços por modelo |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ Implantação e sincronização
+### 🟣 GEMINI CLI (Google OAuth)
-| Recurso | O que faz |
-| --------------------------------------- | ------------------------------------------------------------------------------------ |
-| 💾 **Sincronização na nuvem** | Sincronize a configuração entre dispositivos por meio do Cloudflare Workers |
-| 🌐 **Implante em qualquer lugar** | Localhost, VPS, Docker, Cloudflare Workers |
-| 🔑 **Gerenciamento de chaves de API** | Gerar, alternar e definir o escopo de chaves de API por provedor |
-| 🧙 **Assistente de integração** | Configuração guiada em 4 etapas para usuários iniciantes |
-| 🔧 **Painel de Ferramentas CLI** | Configurar com um clique Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **Backups de banco de dados** | Backup, restauração, exportação e importação automáticos para todas as configurações |
-| 🌐 **Internacionalização** | i18n completo com next-intl — Suporte Inglês + Português (Brasil) |
-| 🌍 **Seletor de idioma** | Ícone de globo no cabeçalho para troca de idioma em tempo real (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Diretório de dados personalizado** | `DATA_DIR` env var para substituir o caminho de armazenamento padrão `~/.omniroute` |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Detalhes do recurso
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Fallback inteligente de 4 camadas
+Start MCP transport in stdio mode:
-Crie combos com fallback automático:
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 Rastreamento de cotas em tempo real
+Recommended validation flow:
-- Consumo de token por provedor
-- Redefinir contagem regressiva (5 horas, diariamente, semanalmente)
-- Estimativa de custos para níveis pagos
-- Relatórios mensais de gastos
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Tradução de formato
+Useful APIs for automation:
-Tradução perfeita entre formatos:
-
-- **OpenAI** ↔ **Claude** ↔ **Gêmeos** ↔ **Respostas OpenAI**
-- Sua ferramenta CLI envia o formato OpenAI → OmniRoute traduz → O provedor recebe o formato nativo
-- Funciona com qualquer ferramenta que suporte endpoints OpenAI personalizados
-- **Higienização de resposta** — Remove campos não padrão para compatibilidade estrita com o OpenAI SDK
-- **Normalização de funções** — `developer` → `system` para não-OpenAI; `system` → `user` para modelos GLM/ERNIE
-- ** Extração de tags Think ** — `` blocos → `reasoning_content` para modelos de pensamento
-- **Saída estruturada** — `json_schema` → `responseMimeType`/`responseSchema` de Gêmeos
-
-### 👥 Suporte para múltiplas contas
-
-- Adicione várias contas por provedor
-- Round-robin automático ou roteamento baseado em prioridade
-- Fallback para a próxima conta quando alguém atingir a cota
-
-### 🔄 Atualização automática de token
-
-- Os tokens OAuth são atualizados automaticamente antes da expiração
-- Não é necessária reautenticação manual
-- Experiência perfeita em todos os provedores
-
-### 🎨 Combos Personalizados
-
-- Crie combinações ilimitadas de modelos
-- 6 estratégias: preencher primeiro, round-robin, poder de duas escolhas, aleatório, menos usado, otimizado para custos
-- Compartilhe combos entre dispositivos com Cloud Sync
-
-### 🏥 Painel de saúde
-
-- Status do sistema (tempo de atividade, versão, uso de memória)
-- Estados do disjuntor por provedor (Fechado/Aberto/Meio-Aberto)
-- Status do limite de taxa e bloqueios ativos
-- Estatísticas de cache de assinatura
-- Telemetria de latência (p50/p95/p99) + cache de prompt
-- Redefinir o status de saúde com um clique
-
-### 🔧 Parque do Tradutor
-
-OmniRoute inclui um poderoso Translator Playground integrado com **4 modos** para depuração, teste e monitoramento de traduções de API:
-
-| Modo | Descrição |
-| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻 Parque Infantil** | Tradução direta de formato — cole qualquer corpo de solicitação de API e veja instantaneamente como o OmniRoute o traduz entre formatos de provedor (OpenAI ↔ Claude ↔ Gemini ↔ API de respostas). Inclui modelos de exemplo e detecção automática de formato. |
-| **💬 Testador de bate-papo** | Envie solicitações de chat reais por meio do OmniRoute e veja o percurso completo: sua entrada, a solicitação traduzida, a resposta do provedor e a resposta traduzida de volta. Inestimável para validar o roteamento combinado. |
-| **🧪 Bancada de testes** | Modo de teste em lote — defina vários casos de teste com diferentes entradas e resultados esperados, execute-os todos de uma vez e compare os resultados entre provedores e modelos. |
-| **📱Monitoramento ao vivo** | Monitoramento de solicitações em tempo real: observe as solicitações recebidas conforme elas fluem pelo OmniRoute, veja as traduções de formato acontecendo ao vivo e identifique problemas instantaneamente. |
-
-**Acesso:** Painel → Tradutor (barra lateral)
-
-### 💾 Sincronização na nuvem
-
-- Sincronize provedores, combos e configurações entre dispositivos
-- Sincronização automática em segundo plano
-- Armazenamento criptografado seguro
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Avaliações (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute inclui uma estrutura de avaliação integrada para testar a qualidade da resposta do LLM em relação a um conjunto dourado. Acesse-o em **Analytics → Evals** no painel.
+Discover the agent:
-### Conjunto Dourado Integrado
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-O "OmniRoute Golden Set" pré-carregado contém 10 casos de teste cobrindo:
+Send a task:
-- Saudações, matemática, geografia, geração de código
-- Conformidade com o formato JSON, tradução, remarcação
-- Recusa de segurança (conteúdo prejudicial), contagem, lógica booleana
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Estratégias de Avaliação
+Manage lifecycle:
-| Estratégia | Descrição | Exemplo |
-| ---------- | --------------------------------------------------------------------------- | -------------------------------- |
-| `exact` | A saída deve corresponder exatamente | `"4"` |
-| `contains` | A saída deve conter substring (sem distinção entre maiúsculas e minúsculas) | `"Paris"` |
-| `regex` | A saída deve corresponder ao padrão regex | `"1.*2.*3"` |
-| `custom` | Função JS personalizada retorna verdadeiro/falso | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Guia de configuração
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Provedores de assinatura
+🧪 End-to-end protocol validation
-### Código Claude (Pro/Max)
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
+
+### Claude Code (Pro/Max)
```bash
Dashboard → Providers → Connect Claude Code
@@ -1066,9 +1438,9 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**Dica profissional:** Use o Opus para tarefas complexas e o Sonnet para velocidade. OmniRoute rastreia cota por modelo!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
-### Codex OpenAI (Plus/Pro)
+### OpenAI Codex (Plus/Pro)
```bash
Dashboard → Providers → Connect Codex
@@ -1080,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (GRÁTIS 180K/mês!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1092,9 +1481,9 @@ Models:
gc/gemini-2.5-pro
```
-**Melhor valor:** Grande nível gratuito! Use isso antes dos níveis pagos.
+**Best Value:** Huge free tier! Use this before paid tiers.
-### GitHub Copiloto
+### GitHub Copilot
```bash
Dashboard → Providers → Connect GitHub
@@ -1110,88 +1499,88 @@ Models:
-🔑 Provedores de chave de API
+🔑 API Key Providers
-### NVIDIA NIM (1000 créditos GRÁTIS!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Inscreva-se: [build.nvidia.com](https://build.nvidia.com)
-2. Obtenha uma chave de API gratuita (1.000 créditos de inferência incluídos)
-3. Painel → Adicionar Provedor → NVIDIA NIM:
- - Chave API: `nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**Modelos:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` e mais de 50
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Dica profissional:** API compatível com OpenAI — funciona perfeitamente com a tradução de formato do OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Inscreva-se: [platform.deepseek.com](https://platform.deepseek.com)
-2. Obtenha a chave API
-3. Painel → Adicionar provedor → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Modelos:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (nível gratuito disponível!)
+### Groq (Free Tier Available!)
-1. Inscreva-se: [console.groq.com](https://console.groq.com)
-2. Obtenha a chave API (nível gratuito incluído)
-3. Painel → Adicionar Provedor → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Modelos:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Dica profissional:** Inferência ultrarrápida — melhor para codificação em tempo real!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (mais de 100 modelos)
+### OpenRouter (100+ Models)
-1. Inscreva-se: [openrouter.ai](https://openrouter.ai)
-2. Obtenha a chave API
-3. Painel → Adicionar Provedor → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Modelos:** acesse mais de 100 modelos de todos os principais fornecedores por meio de uma única chave de API.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Provedores baratos (backup)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (redefinição diária, US$ 0,6/1 milhão)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Inscreva-se: [Zhipu AI](https://open.bigmodel.cn/)
-2. Obtenha a chave API do plano de codificação
-3. Painel → Adicionar chave API:
- - Provedor: `glm`
- - Chave API: `your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**Usar:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Dica profissional:** O plano de codificação oferece cota 3× com custo de 1/7! Redefinir diariamente às 10h.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (redefinição de 5h, US$ 0,20/1 milhão)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Inscreva-se: [MiniMax](https://www.minimax.io/)
-2. Obtenha a chave API
-3. Painel → Adicionar chave API
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Usar:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Dica profissional:** Opção mais barata para contexto longo (1 milhão de tokens)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 (US$ 9/mês fixo)
+### Kimi K2 ($9/month flat)
-1. Inscreva-se: [Moonshot AI](https://platform.moonshot.ai/)
-2. Obtenha a chave API
-3. Painel → Adicionar chave API
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Usar:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Dica profissional:** $9 fixos/mês para 10 milhões de tokens = $0,90/custo efetivo de 1 milhão!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 Provedores GRATUITOS (backup de emergência)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 modelos GRATUITOS)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1206,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 modelos GRATUITOS)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1218,7 +1607,7 @@ Models:
qw/qwen3-coder-flash
```
-### Kiro (Claude GRÁTIS)
+### Kiro (Claude FREE)
```bash
Dashboard → Connect Kiro
@@ -1233,9 +1622,9 @@ Models:
-🎨 Criar Combos
+🎨 Create Combos
-### Exemplo 1: Maximize a assinatura → Backup barato
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1249,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### Exemplo 2: somente gratuito (custo zero)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1264,7 +1653,7 @@ Cost: $0 forever!
-🔧 Integração CLI
+🔧 CLI Integration
### Cursor IDE
@@ -1275,11 +1664,11 @@ Settings → Models → Advanced:
Model: cc/claude-opus-4-6
```
-### Código Cláudio
+### Claude Code
-Use a página **Ferramentas CLI** no painel para configuração com um clique ou edite `~/.claude/settings.json` manualmente.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
-### CLI do Codex
+### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
@@ -1288,15 +1677,15 @@ export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
```
-###OpenClaw
+### OpenClaw
-**Opção 1 — Painel (recomendado):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Opção 2 — Manual:** Editar `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1312,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **Observação:** OpenClaw só funciona com OmniRoute local. Use `127.0.0.1` em vez de `localhost` para evitar problemas de resolução de IPv6.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### Cline / Continuar / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1324,72 +1713,207 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Solução de problemas
+## Resolução de Problemas
-Clique para expandir o guia de solução de problemas
+Click to expand troubleshooting guide
-**"O modelo de linguagem não forneceu mensagens"**
+**"Language model did not provide messages"**
-- Cota do provedor esgotada → Verifique o rastreador de cota do painel
-- Solução: use o combo substituto ou mude para um nível mais barato
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-** Limitação de taxa **
+**Rate limiting**
-- Cota de assinatura esgotada → Fallback para GLM/MiniMax
-- Adicionar combinação: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**O token OAuth expirou**
+**OAuth token expired**
-- Atualizado automaticamente pelo OmniRoute
-- Se os problemas persistirem: Painel → Provedor → Reconectar
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Custos elevados**
+**High costs**
-- Verifique as estatísticas de uso em Painel → Custos
-- Mude o modelo primário para GLM/MiniMax
-- Use o nível gratuito (Gemini CLI, iFlow) para tarefas não críticas
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Painel abre na porta errada**
+**Dashboard/API ports are wrong**
-- Definir `PORT=20128` e `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Erros de sincronização na nuvem**
+**Cloud sync errors**
-- Verifique `BASE_URL` aponta para sua instância em execução
-- Verifique os pontos `CLOUD_URL` para o endpoint de nuvem esperado
-- Mantenha os valores `NEXT_PUBLIC_*` alinhados com os valores do lado do servidor
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Primeiro login não funciona**
+**First login not working**
-- Verifique `INITIAL_PASSWORD` em `.env`
-- Se não definida, a senha substituta é `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Sem registros de solicitação**
+**No request logs**
-- Definir `ENABLE_REQUEST_LOGS=true` em `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**O teste de conexão mostra "Inválido" para provedores compatíveis com OpenAI**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Muitos provedores não expõem um endpoint `/models`
-- OmniRoute v1.0.6+ inclui validação de fallback por meio de conclusões de chat
-- Certifique-se de que o URL base inclua o sufixo `/v1`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 OAuth
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ IMPORTANTE para usuários com OmniRoute em VPS/Docker/servidor remoto**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-#### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para autenticação. O Google exige que um `redirect_uri` usado no fluxo OAuth seja **exatamente** uma das URIs pré-cadastradas no Google Cloud Console do aplicativo.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-As credenciais OAuth incorporadas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solution: Configure your own OAuth credentials
+
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
```
Error 400: redirect_uri_mismatch
@@ -1397,23 +1921,23 @@ Error 400: redirect_uri_mismatch
#### Solução: Configure suas próprias credenciais OAuth
-Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com o URI do seu servidor.
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
-####Passo a passo
+#### Passo a passo
-**1. Acesse o Console do Google Cloud**
+**1. Acesse o Google Cloud Console**
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
-**2. Crie um novo ID de cliente OAuth 2.0**
+**2. Crie um novo OAuth 2.0 Client ID**
-- Clique em **"+ Criar credenciais"** → **"ID do cliente OAuth"**
-- Tipo de aplicativo: **"Aplicativo Web"**
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. Adicionar como URIs de redirecionamento autorizados**
+**3. Adicione as Authorized Redirect URIs**
-No campo **"URIs de redirecionamento autorizados"**, adicionado:
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
@@ -1425,7 +1949,7 @@ https://seu-servidor.com/callback
Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. Configurar como variáveis de ambiente**
+**5. Configure as variáveis de ambiente**
No seu `.env` (ou nas variáveis de ambiente do Docker):
@@ -1452,150 +1976,145 @@ docker restart omniroute
**7. Tente conectar novamente**
-Painel → Provedores → Antigravidade (ou Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-#### Solução alternativa temporária (sem configurar credenciais próprias)
+#### Workaround temporário (sem configurar credenciais próprias)
Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. O OmniRoute abrirá uma URL de autorização do Google
+1. O OmniRoute abrirá a URL de autorização do Google
2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
-3. **Copie a URL completa** da barra de endereço do seu navegador (mesmo que a página não carregue)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
-5. Clique em **"Conectar"**
+5. Clique em **"Connect"**
-> Esta solução alternativa funciona porque o código de autorização na URL é válido, independentemente do redirecionamento ter sido carregado ou não.
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **Tempo de execução**: Node.js 18–22 LTS (⚠️ Node.js 24+ **não é compatível** — `better-sqlite3` binários nativos são incompatíveis)
-- **Idioma**: TypeScript 5.9 — **100% TypeScript** em `src/` e `open-sse/` (v1.0.6)
-- **Estrutura**: Next.js 16 + React 19 + Tailwind CSS 4
-- **Banco de dados**: LowDB (JSON) + SQLite (estado do domínio + logs de proxy)
-- **Streaming**: eventos enviados pelo servidor (SSE)
-- **Autenticação**: OAuth 2.0 (PKCE) + JWT + chaves de API
-- **Testes**: executor de testes Node.js (mais de 368 testes de unidade)
-- **CI/CD**: GitHub Actions (publicação automática de npm + Docker Hub no lançamento)
-- **Site**: [omniroute.online](https://omniroute.online)
-- **Pacote**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **Resiliência**: Disjuntor, espera exponencial, rebanho anti-trovão, falsificação de TLS
-
----
-
-## 📖 Documentação
-
-| Documento | Descrição |
-| -------------------------------------------- | ------------------------------------------------------ |
-| [User Guide](docs/USER_GUIDE.md) | Provedores, combos, integração CLI, implantação |
-| [API Reference](docs/API_REFERENCE.md) | Todos os endpoints com exemplos |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | Problemas e soluções comuns |
-| [Architecture](docs/ARCHITECTURE.md) | Arquitetura do sistema e componentes internos |
-| [Contributing](CONTRIBUTING.md) | Configuração e diretrizes de desenvolvimento |
-| [OpenAPI Spec](docs/openapi.yaml) | Especificação OpenAPI 3.0 |
-| [Security Policy](SECURITY.md) | Relatórios de vulnerabilidades e práticas de segurança |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Guia completo: configuração de VM + nginx + Cloudflare |
-| [Features Gallery](docs/FEATURES.md) | Tour visual do painel com capturas de tela |
-
-### 📸 Visualização do painel
+## 🛠️ Tech Stack
-Clique para ver as capturas de tela do painel
+Click to expand tech stack details
-| Página | Captura de tela |
-| -------------------- | ------------------------------------------------- |
-| **Fornecedores** |  |
-| **Combos** |  |
-| **Análise** |  |
-| **Saúde** |  |
-| **Tradutor** |  |
-| **Configurações** |  |
-| **Ferramentas CLI** |  |
-| **Registros de uso** |  |
-| **Ponto final** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## Documentação
-OmniRoute tem **210+ recursos planejados** em diversas fases de desenvolvimento. Aqui estão as principais áreas:
-
-| Categoria | Recursos planejados | Destaques |
-| --------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------ |
-| 🧠 **Roteamento e Inteligência** | 25+ | Roteamento de menor latência, roteamento baseado em tags, simulação de cota, seleção de conta P2C |
-| 🔒 **Segurança e Conformidade** | 20+ | Proteção SSRF, camuflagem de credenciais, limite de taxa por endpoint, escopo de chave de gerenciamento |
-| 📊 **Observabilidade** | 15+ | Integração OpenTelemetry, monitoramento de cotas em tempo real, rastreamento de custos por modelo |
-| 🔄 **Integrações com Provedores** | 20+ | Registro de modelo dinâmico, resfriamento de provedor, Codex multicontas, análise de cotas do Copilot |
-| ⚡ **Desempenho** | 15+ | Camada de cache dupla, cache de prompt, cache de resposta, manutenção de atividade de streaming, API em lote |
-| 🌐 **Ecossistema** | 10+ | API WebSocket, configuração hot-reload, armazenamento de configuração distribuído, modo comercial |
-
-### 🔜 Em breve
-
-- 🔗 **Integração OpenCode** — Suporte de provedor nativo para o IDE de codificação OpenCode AI
-- 🔗 **Integração TRAE** — Suporte total para a estrutura de desenvolvimento TRAE AI
-- 📦 **API Batch** — Processamento assíncrono em lote para solicitações em massa
-- 🎯 **Roteamento baseado em tags** — Roteie solicitações com base em tags personalizadas e metadados
-- 💰 **Estratégia de custo mais baixo** — Selecione automaticamente o provedor mais barato disponível
-
-> 📝 Especificações completas de recursos disponíveis em [link](docs/new-features/) (217 especificações detalhadas)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 Colaboradores
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Como contribuir
+### How to Contribute
-1. Bifurque o repositório
-2. Crie sua ramificação de recursos (`git checkout -b feature/amazing-feature`)
-3. Confirme suas alterações (`git commit -m 'Add amazing feature'`)
-4. Envie para a ramificação (`git push origin feature/amazing-feature`)
-5. Abra uma solicitação pull
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Consulte [CONTRIBUTING.md](CONTRIBUTING.md) para obter diretrizes detalhadas.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Lançando uma nova versão
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 História das Estrelas
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Agradecimentos
+## 🙏 Acknowledgments
-Agradecimentos especiais a **[9router](https://github.com/decolua/9router)** de **[decolua](https://github.com/decolua)** — o projeto original que inspirou este fork. OmniRoute se baseia nessa base incrível com recursos adicionais, APIs multimodais e uma reescrita completa do TypeScript.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Agradecimentos especiais a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — a implementação Go original que inspirou esta versão JavaScript.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Licença
+## Licença
-Licença MIT - consulte [LICENSE](LICENSE) para obter detalhes.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Construído com ❤️ para desenvolvedores que codificam 24 horas por dia, 7 dias por semana
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/pt/docs/FEATURES.md b/docs/i18n/pt/docs/FEATURES.md
new file mode 100644
index 0000000000..d9e681286c
--- /dev/null
+++ b/docs/i18n/pt/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Português (Portugal))
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/ro/README.md b/docs/i18n/ro/README.md
index 714c05a393..4d5f1c4ba7 100644
--- a/docs/i18n/ro/README.md
+++ b/docs/i18n/ro/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — Gateway-ul gratuit AI
+# 🚀 OmniRoute — The Free AI Gateway (Română)
-### Nu opriți niciodată codificarea. Dirijare inteligentă către **modele AI GRATUITE și cu costuri reduse** cu rezervă automată.
-
-_Proxy-ul dvs. universal API - un punct final, peste 36 de furnizori, zero timpi de nefuncționare._
-
-**Finalizări de chat • Încorporare • Generare de imagini • Audio • Reclasificare • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Furnizor AI gratuit pentru agenții tăi preferați de codare
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Conectați orice instrument IDE sau CLI alimentat de AI prin OmniRoute — gateway API gratuit pentru codare nelimitată._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _Conectați orice instrument IDE sau CLI alimentat de AI prin OmniRoute — gate
|
-📡 Toți agenții se conectează prin http://localhost:20128/v1 sau http://cloud.omniroute.online.online/v1 modele și cotă nelimitate
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 De ce OmniRoute?
-
-**Nu mai risipi banii și nu mai atingeți limitele:**
-
--
Cota de abonament expiră neutilizată în fiecare lună
--
Limitele ratelor te opresc la mijloc de codare
--
API-uri scumpe (20-50 USD/lună per furnizor)
--
Comutare manuală între furnizori
-
-**OmniRoute rezolvă asta:**
-
-- ✅ **Maximizați abonamentele** - Urmăriți cota, utilizați fiecare bit înainte de resetare
-- ✅ **Auto de rezervă** - Abonament → Cheie API → Ieftin → Gratuit, timp de nefuncționare zero
-- ✅ **Multi-cont** - Round-robin între conturi pentru fiecare furnizor
-- ✅ **Universal** - Funcționează cu Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, orice instrument CLI
-
----
-
-## 📧 Suport
-
-> 💬 **Alăturați-vă comunității noastre!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Obțineți ajutor, împărtășiți sfaturi și fiți la curent.
-
-- **Site web**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **Probleme**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Proiect original**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Cum funcționează
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,453 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 Ce rezolvă OmniRoute — 30 de puncte reale de durere și cazuri de utilizare
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Fiecare dezvoltator care folosește instrumente AI se confruntă zilnic cu aceste probleme.** OmniRoute a fost creat pentru a le rezolva pe toate - de la depășiri de costuri la blocaje regionale, de la fluxuri OAuth întrerupte la operațiuni de protocol și observabilitate a întreprinderii.
+> **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 protocol operations and enterprise observability.
-💸 1. „Plătesc pentru un abonament scump, dar tot sunt întrerupt de limite”
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Dezvoltatorii plătesc 20–200 USD/lună pentru Claude Pro, Codex Pro sau GitHub Copilot. Chiar și plătind, cota are un plafon - 5 ore de utilizare, limite săptămânale sau limite de tarif pe minut. La mijlocul sesiunii de codare, furnizorul nu mai răspunde și dezvoltatorul își pierde fluxul și productivitatea.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Smart 4-Tier Fallback** — Dacă cota de abonament se epuizează, redirecționează automat la cheia API → Ieftin → Gratuit fără intervenție manuală
-- **Urmărirea cotelor în timp real** — Afișează consumul de simboluri în timp real cu numărătoarea inversă de resetare (5 ore, zilnic, săptămânal)
-- **Asistență pentru mai multe conturi** — Conturi multiple per furnizor cu turneu automat automat — când unul se epuizează, trece la următorul
-- **Combinații personalizate** — Lanțuri de rezervă personalizabile cu 6 strategii de echilibrare (fill-first, round-robin, P2C, aleatoriu, cel mai puțin utilizat, optimizat din punct de vedere al costurilor)
-- **Cote de afaceri Codex** — Monitorizarea cotelor de spațiu de lucru pentru afaceri/echipe direct în tabloul de bord
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. „Trebuie să folosesc mai mulți furnizori, dar fiecare are un API diferit”
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI folosește un format, Claude (Anthropic) folosește altul, Gemini încă altul. Dacă un dezvoltator dorește să testeze modele de la diferiți furnizori sau să se retragă între aceștia, trebuie să reconfigureze SDK-urile, să schimbe punctele finale, să se ocupe de formate incompatibile. Furnizorii personalizați (FriendLI, NIM) au puncte finale de model non-standard.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Unified Endpoint** — Un singur `http://localhost:20128/v1` servește drept proxy pentru toți cei 36 de furnizori și mai sus
-- **Traducerea formatului** — Automată și transparentă: OpenAI ↔ Claude ↔ Gemeni ↔ Responses API
-- **Response Sanitization** — Elimina câmpurile nestandard (`x_groq`, `usage_breakdown`, `service_tier`) care încalcă OpenAI SDK v1.83+
-- **Normalizarea rolurilor** — Convertește `developer` → `system` pentru furnizorii non-OpenAI; `system` → `user` pentru GLM/ERNIE
-- **Think Tag Extraction** — Extrage blocurile `` de la modele precum DeepSeek R1 în `reasoning_content` standardizat
-- **Ieșire structurată pentru Gemeni** — `json_schema` → `responseMimeType`/`responseSchema` conversie automată
-- **`stream` este implicit `false`** — Se aliniază cu specificațiile OpenAI, evitând SSE neașteptat în SDK-urile Python/Rust/Go
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. „Furnizorul meu AI îmi blochează regiunea/țara”
+🌐 3. "My AI provider blocks my region/country"
-Furnizori precum OpenAI/Codex blochează accesul din anumite regiuni geografice. Utilizatorii primesc erori precum `unsupported_country_region_territory` în timpul conexiunilor OAuth și API. Acest lucru este frustrant în special pentru dezvoltatorii din țările în curs de dezvoltare.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **3-Level Proxy Config** — Proxy configurabil la 3 niveluri: global (tot traficul), per furnizor (doar un singur furnizor) și per conexiune/cheie
-- **Insigne de proxy cu coduri de culoare** — Indicatori vizuali: 🟢 proxy global, 🟡 proxy furnizor, 🔵 proxy de conexiune, indicând întotdeauna IP-ul
-- **Schimb de jetoane OAuth prin proxy** — fluxul OAuth trece și prin proxy, rezolvând `unsupported_country_region_territory`
-- **Teste de conexiune prin proxy** — Testele de conexiune folosesc proxy-ul configurat (nu mai este ocolire directă)
-- **Support SOCKS5** — Suport complet SOCKS5 proxy pentru rutarea de ieșire
-- **TLS Fingerprint Spoofing** — Amprenta TLS asemănătoare unui browser prin `wreq-js` pentru a ocoli detectarea botului
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. „Vreau să folosesc AI pentru codare, dar nu am bani”
+🆓 4. "I want to use AI for coding but I have no money"
-Nu toată lumea poate plăti 20–200 USD/lună pentru abonamentele AI. Studenții, dezvoltatorii din țările emergente, pasionații și freelancerii au nevoie de acces la modele de calitate la cost zero.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Free Tier Providers Built-in** — Suport nativ pentru furnizori 100% gratuiti: iFlow (8 modele nelimitate), Qwen (3 modele nelimitate), Kiro (Claude gratuit), Gemini CLI (180K/lună gratuit)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Combinații numai gratuite** — Lanțul `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 0 USD/lună fără timp de nefuncționare
-- **Credite gratuite NVIDIA NIM** — 1000 de credite gratuite integrate
-- **Cost Optimized Strategy** — Strategie de rutare care alege automat cel mai ieftin furnizor disponibil
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. „Trebuie să-mi protejez poarta AI de accesul neautorizat”
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Când expuneți un gateway AI în rețea (LAN, VPS, Docker), oricine are adresa poate consuma jetoanele/cota dezvoltatorului. Fără protecție, API-urile sunt vulnerabile la utilizare greșită, injectare promptă și abuz.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Gestionarea cheilor API** — Generare, rotație și definire pentru fiecare furnizor cu o pagină dedicată `/dashboard/api-manager`
-- **Permisiuni la nivel de model** — Restricționați cheile API la anumite modele (`openai/*`, modele cu caractere metalice), cu comutatorul Permite toate/Restricționați
-- **API Endpoint Protection** — Solicitați o cheie pentru `/v1/models` și blocați anumiți furnizori din listă
-- **Auth Guard + CSRF Protection** — Toate rutele tabloului de bord sunt protejate cu middleware `withAuth` + jetoane CSRF
-- **Rate Limiter** — Limitarea ratei per-IP cu ferestre configurabile
-- **Filtrare IP** — Lista permisă/lista blocată pentru controlul accesului
-- **Prompt Injection Guard** — Igienizare împotriva tiparelor de prompte rău intenționate
-- **Criptare AES-256-GCM** — Acreditări criptate în repaus
+- **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. „Furnizorul meu a căzut și mi-am pierdut fluxul de codare”
+🛑 6. "My provider went down and I lost my coding flow"
-Furnizorii de AI pot deveni instabili, pot returna erori 5xx sau pot atinge limitele temporare ale ratei. Dacă un dezvoltator depinde de un singur furnizor, acesta este întrerupt. Fără întreruptoare, reîncercări repetate pot bloca aplicația.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Circuit Breaker per furnizor** - Deschidere/închidere automată cu praguri configurabile și răcire (Închis/Deschis/Pe jumătate deschis)
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-- **Backoff exponențial** — Întârzieri progresive ale reîncercării
-- **Anti-Thundering Herd** — Mutex + protecție semafor împotriva furtunilor concurente de reîncercare
-- **Combo Fallback Chains** — Dacă furnizorul principal eșuează, trece automat prin lanț fără nicio intervenție
-- **Combo Circuit Breaker** — Dezactivează automat furnizorii care eșuează dintr-un lanț combinat
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-- **Tabloul de bord pentru sănătate** — Monitorizare timp de funcționare, stări întrerupătoare de circuit, blocări, statistici cache, latență p50/p95/p99
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. „Configurarea fiecărui instrument AI este plictisitoare și repetitivă”
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Dezvoltatorii folosesc Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Fiecare instrument are nevoie de o configurație diferită (punct final API, cheie, model). Reconfigurarea la schimbarea de furnizor sau de model este o pierdere de timp.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **CLI Tools Dashboard** — pagină dedicată cu setare cu un singur clic pentru Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-- **GitHub Copilot Config Generator** — generează `chatLanguageModels.json` pentru VS Code cu selecția în bloc a modelului
-- **Onboarding Wizard** — Configurare ghidată în 4 pași pentru utilizatorii debutanți
-- **Un punct final, toate modelele** — Configurați `http://localhost:20128/v1` o dată, accesați peste 36 de furnizori
+- **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 67+ providers
-🔑 8. „Gestionarea jetoanelor OAuth de la mai mulți furnizori este un iad”
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot - toate folosesc OAuth 2.0 cu token-uri care expiră. Dezvoltatorii trebuie să se reautentifice în mod constant, să se ocupe de `client_secret is missing`, `redirect_uri_mismatch` și defecțiunile de pe serverele de la distanță. OAuth pe LAN/VPS este deosebit de problematică.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Reîmprospătare automată a simbolurilor** — jetoanele OAuth se reîmprospătează în fundal înainte de expirare
-- **OAuth 2.0 (PKCE) încorporat** — Flux automat pentru Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **OAuth cu mai multe conturi** — Conturi multiple per furnizor prin extragerea jetonului JWT/ID
-- **OAuth LAN/Remediere la distanță** — Detectare IP privată pentru `redirect_uri` + modul URL manual pentru servere la distanță
-- **OAuth în spatele Nginx** — Utilizează `window.location.origin` pentru compatibilitatea cu proxy invers
-- **Ghid OAuth la distanță** — Ghid pas cu pas pentru acreditările Google Cloud pe VPS/Docker
+- **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. „Nu știu cât cheltuiesc sau unde”
+📊 9. "I don't know how much I'm spending or where"
-Dezvoltatorii folosesc mai mulți furnizori plătiți, dar nu au o viziune unificată asupra cheltuielilor. Fiecare furnizor are propriul tablou de bord de facturare, dar nu există o vizualizare consolidată. Costurile neașteptate se pot acumula.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Tabloul de bord pentru analiza costurilor** — Urmărirea costurilor pe token și gestionarea bugetului per furnizor
-- **Limite bugetare pe nivel** — Plafonul de cheltuieli pe nivel care declanșează o rezervă automată
-- **Configurație de preț pe model** — Prețuri configurabile pe model
-- **Statistici de utilizare per cheie API** — Numărul de solicitări și marcajul temporal al ultimei utilizări per cheie
-- **Tabloul de bord de analiză** — Carduri cu statistici, diagramă de utilizare a modelului, tabel cu furnizori cu rate de succes și latență
+- **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. „Nu pot diagnostica erorile și problemele în apelurile AI”
+🐛 10. "I can't diagnose errors and problems in AI calls"
-Când un apel eșuează, dezvoltatorul nu știe dacă a fost o limită de rată, un simbol expirat, un format greșit sau o eroare a furnizorului. Jurnalele fragmentate pe diferite terminale. Fără observabilitate, depanarea este o încercare și eroare.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Tabloul de bord pentru jurnalele unificate** — 4 file: jurnalele de solicitare, jurnalele proxy, jurnalele de audit, consolă
-- **Console Log Viewer** — Vizualizator în timp real în stil terminal cu niveluri codificate în culori, defilare automată, căutare, filtru
-- **SQLite Proxy Logs** — Jurnale persistente care supraviețuiesc repornirilor serverului
-- **Translator Playground** — 4 moduri de depanare: Playground (traducere format), Chat Tester (dus-întors), Test Bench (lot), Live Monitor (în timp real)
-- **Solicitare telemetrie** — latență p50/p95/p99 + urmărire X-Request-Id
-- **Înregistrare bazată pe fișiere cu rotație** — Interceptor de consolă captează totul în jurnalul JSON cu rotație bazată pe dimensiune
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. „Implementarea și întreținerea gateway-ului este complexă”
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Instalarea, configurarea și menținerea unui proxy AI în diferite medii (local, VPS, Docker, cloud) necesită multă muncă. Probleme precum căile codificate hard, `EACCES` pe directoare, conflictele de porturi și versiunile pe mai multe platforme adaugă fricțiuni.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **npm global install** — `npm install -g omniroute && omniroute` — finalizat
-- **Docker Multi-Platform** - AMD64 + ARM64 nativ (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Docker Compose Profiles** — `base` (fără instrumente CLI) și `cli` (cu Claude Code, Codex, OpenClaw)
-- **Electron Desktop App** — aplicație nativă pentru Windows/macOS/Linux cu bară de sistem, pornire automată, mod offline
-- **Split-Port Mode** — API și tablou de bord pe porturi separate pentru scenarii avansate (reverse proxy, rețea container)
-- **Cloud Sync** — Configurați sincronizarea între dispozitive prin Cloudflare Workers
-- **Backups DB** — Backup automat, restaurare, export și import al tuturor setărilor
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. „Interfața este doar în limba engleză și echipa mea nu vorbește engleză”
+🌍 12. "The interface is English-only and my team doesn't speak English"
-Echipele din țările care nu vorbesc engleza, în special din America Latină, Asia și Europa, se luptă cu interfețele doar în limba engleză. Barierele lingvistice reduc adoptarea și cresc erorile de configurare.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Tabloul de bord i18n — 30 de limbi** — Toate cele peste 500 de taste traduse, inclusiv arabă, bulgară, daneză, germană, spaniolă, finlandeză, franceză, ebraică, hindi, maghiară, indoneziană, italiană, japoneză, coreeană, malay, olandeză, norvegiană, poloneză, portugheză (PT/BR), română, rusă, slovacă, suedeză, thailandeză, ucraineană, filipineză, engleză, chineză, vietnameză,
-- ** Suport RTL** — Suport de la dreapta la stânga pentru arabă și ebraică
-- **ReadME-uri în mai multe limbi** — 30 de traduceri complete de documentație
-- **Selector de limbă** — Pictograma glob în antet pentru comutare în timp real
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. „Am nevoie de mai mult decât de chat — am nevoie de încorporare, imagini, audio”
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-AI nu este doar finalizarea chatului. Dezvoltatorii trebuie să genereze imagini, să transcrie sunetul, să creeze înglobări pentru RAG, să reclasifice documentele și să modereze conținutul. Fiecare API are un punct final și un format diferit.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Embeddings** — `/v1/embeddings` cu 6 furnizori și peste 9 modele
-- **Generarea imaginii** — `/v1/images/generations` cu 10 furnizori și peste 20 de modele (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) și SD WebUI
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
-- **Transcriere audio** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + furnizori existenți
-- **Moderări** — `/v1/moderations` — Verificări de siguranță a conținutului
-- **Reclasificare** — `/v1/rerank` — Reclasificarea relevanței documentului
-- **Responses API** — Suport complet `/v1/responses` pentru Codex
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. „Nu am cum să testez și să compar calitatea între modele”
+🧪 14. "I have no way to test and compare quality across models"
-Dezvoltatorii vor să știe care model este cel mai bun pentru cazul lor de utilizare - cod, traducere, raționament - dar compararea manuală este lentă. Nu există instrumente de evaluare integrate.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Evaluări LLM** — Testarea setului de aur cu 10 cazuri preîncărcate care acoperă salutări, matematică, geografie, generare de cod, conformitate cu JSON, traducere, reducere, refuz de siguranță
-- **4 strategii de potrivire** — `exact`, `contains`, `regex`, `custom` (funcția JS)
-- **Translator Playground Test Bench** — Testare în loturi cu mai multe intrări și rezultate așteptate, comparație între furnizori
-- **Tester de chat** — Tur complet dus-întors cu randare vizuală a răspunsului
-- **Live Monitor** — Flux în timp real al tuturor solicitărilor care circulă prin proxy
+- **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. „Trebuie să mă scalez fără a pierde performanța”
+📈 15. "I need to scale without losing performance"
-Pe măsură ce volumul cererilor crește, fără memorarea în cache aceleași întrebări generează costuri duplicate. Fara idempotenta, cererile duplicate procesarea deseurilor. Limitele de tarife pentru fiecare furnizor trebuie respectate.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **Cache semantic** — Cache-ul pe două niveluri (semnătură + semantică) reduce costurile și latența
-- **Request Idempotency** — fereastră de deduplicare 5s pentru cereri identice
-- **Rate Limit Detection** — RPM per furnizor, interval minim și urmărire simultană maximă
-- **Limite de rată editabile** — Valori implicite configurabile în Setări → Reziliență cu persistență
-- **API Key Validation Cache** — cache pe 3 niveluri pentru performanța producției
-- **Tabloul de bord pentru sănătate cu telemetrie** — latență p50/p95/p99, statistici cache, timp de funcționare
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. „Vreau să controlez comportamentul modelului la nivel global”
+🤖 16. "I want to control model behavior globally"
-Dezvoltatori care doresc toate răspunsurile într-o anumită limbă, cu un anumit ton sau care doresc să limiteze simbolurile de raționament. Configurarea acestui lucru în fiecare instrument/cerere nu este practică.
+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.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- **System Prompt Injection** — Prompt global aplicat tuturor solicitărilor
-- **Thinking Budget Validation** — Controlul raționării alocării token-ului per cerere (transmis, automat, personalizat, adaptiv)
-- **6 Strategii de rutare** — Strategii globale care determină modul în care sunt distribuite cererile
-- **Wildcard Router** — modelele `provider/*` sunt direcționate dinamic către orice furnizor
-- **Combo Activare/Dezactivare Comutare** — Comută combo direct din tabloul de bord
-- **Comutare furnizor** — Activați/dezactivați toate conexiunile pentru un furnizor cu un singur clic
-- **Furnizori blocați** — Excludeți anumiți furnizori din lista `/v1/models`
+- **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
-🧰 17. „Am nevoie de instrumente MCP ca capabilități de produs de primă clasă”
+🧰 17. "I need MCP tools as first-class product capabilities"
-Multe gateway-uri AI expun MCP doar ca un detaliu ascuns de implementare. Echipele au nevoie de un nivel de operare vizibil și ușor de gestionat.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- MCP apare în panoul de bord de navigare și fila de protocol final
-- Pagina de management MCP dedicată cu proces, instrumente, domenii și audit
-- Pornire rapidă încorporată pentru `omniroute --mcp` și integrarea clientului
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. „Am nevoie de orchestrare A2A cu sincronizare + căi de activități de flux”
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Fluxurile de lucru ale agenților necesită atât răspunsuri directe, cât și execuție în flux de lungă durată, cu control ciclului de viață.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Punct final A2A JSON-RPC (`POST /a2a`) cu `message/send` și `message/stream`
-- Streaming SSE cu propagare a stării terminale
-- API-uri pentru ciclul de viață al sarcinilor pentru `tasks/get` și `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. „Am nevoie de sănătate reală a procesului MCP, nu de stare ghicită”
+🛰️ 19. "I need real MCP process health, not guessed status"
-Echipele operaționale trebuie să știe dacă MCP este de fapt în viață, nu doar dacă un API este accesibil.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Fișier runtime heartbeat cu PID, marcaje de timp, transport, număr de instrumente și modul de aplicare
-- API de stare MCP care combină bătăile inimii + activitatea recentă
-- Carduri de stare a interfeței de utilizare pentru prospețimea procesului/uptime/inima
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. „Am nevoie de o execuție auditabilă a instrumentului MCP”
+📋 20. "I need auditable MCP tool execution"
-Când instrumentele modifică configurația sau declanșează acțiuni operaționale, echipele au nevoie de trasabilitate criminalistică.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Înregistrare de audit susținută de SQLite pentru apelurile instrumentelor MCP
-- Filtrează după instrument, succes/eșec, cheie API și paginare
-- Tabelul de audit al tabloului de bord + punctele finale de statistici pentru automatizare
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. „Am nevoie de permisiuni MCP pentru fiecare integrare”
+🔐 21. "I need scoped MCP permissions per integration"
-Clienții diferiți ar trebui să aibă cel mai mic privilegiu de acces la categoriile de instrumente.
+Different clients should have least-privilege access to tool categories.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- 9 lunete MCP granulare pentru acces controlat la instrumente
-- Aplicarea domeniului de aplicare și vizibilitatea în interfața de utilizare a managementului MCP
-- Poziție implicită sigură pentru instrumentele operaționale
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. „Am nevoie de controale operaționale fără redistribuire”
+⚙️ 22. "I need operational controls without redeploying"
-Echipele au nevoie de modificări rapide ale timpului de rulare în timpul incidentelor sau evenimentelor de cost.
+Teams need quick runtime changes during incidents or cost events.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Comutați activarea comboi direct din tabloul de bord MCP
-- Aplicați profiluri de rezistență din pachetele de politici predefinite
-- Resetați starea întreruptorului de la același panou de operare
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. „Am nevoie de vizibilitate și anulare a ciclului de viață a sarcinii A2A live”
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Fără vizibilitatea ciclului de viață, incidentele sarcinilor devin greu de triat.
+Without lifecycle visibility, task incidents become hard to triage.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Listarea sarcinilor/filtrarea după stare/abilitate cu paginare
-- Detaliați metadatele sarcinii, evenimentele și artefactele
-- Punct final de anulare a sarcinii și acțiune UI cu confirmare
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. „Am nevoie de valori de flux active pentru încărcarea A2A”
+🌊 24. "I need active stream metrics for A2A load"
-Fluxurile de lucru în flux necesită o perspectivă operațională privind concurența și conexiunile live.
+Streaming workflows require operational insight into concurrency and live connections.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Contoare active de flux integrate în starea A2A
-- Marcaj de timp pentru ultima sarcină și numărătoare pentru fiecare stat
-- Carduri de bord A2A pentru monitorizarea operațiunilor în timp real
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. „Am nevoie de descoperire de agenți standard pentru clienți”
+🪪 25. "I need standard agent discovery for clients"
-Clienții externi și orchestratorii au nevoie de metadate care pot fi citite de mașină pentru integrare.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Card de agent expus la `/.well-known/agent.json`
-- Capacități și abilități afișate în UI de management
-- API-ul de stare A2A include metadate de descoperire pentru automatizare
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. „Am nevoie de descoperirea protocolului în produsul UX”
+🧭 26. "I need protocol discoverability in the product UX"
-Dacă utilizatorii nu pot descoperi suprafețele de protocol, calitatea adoptării și a suportului scade.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Intrări din bara laterală pentru MCP și A2A
-- Pagina Endpoint Fila Protocoale cu pornire rapidă și stare
-- Link-uri de la prezentare generală la tablouri de bord dedicate de management
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. „Am nevoie de validarea protocolului end-to-end cu clienți reali”
+🧪 27. "I need end-to-end protocol validation with real clients"
-Testele simulate nu sunt suficiente pentru a valida compatibilitatea protocolului înainte de lansare.
+Mock tests are not enough to validate protocol compatibility before release.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Suita E2E care pornește aplicația și utilizează transportul clientului MCP SDK real
-- Testele client A2A pentru descoperirea, trimiterea, transmiterea în flux, obținerea și anularea fluxurilor
-- Verificați încrucișați afirmațiile cu auditul MCP și API-urile pentru sarcini A2A
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. „Am nevoie de observabilitate unificată pe toate interfețele”
+📡 28. "I need unified observability across all interfaces"
-Împărțirea observabilității în funcție de protocol creează puncte oarbe și MTTR mai lung.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Tablouri de bord/jurnale/analitice unificate într-un singur produs
-- Sănătate + audit + solicitare de telemetrie în straturi OpenAI, MCP și A2A
-- API-uri operaționale pentru stare și automatizare
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. „Am nevoie de un timp de rulare pentru proxy + instrumente + orchestrare agent”
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Rularea multor servicii separate crește costurile operaționale și modurile de eșec.
+Running many separate services increases operational cost and failure modes.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Proxy compatibil OpenAI, server MCP și server A2A într-o singură stivă
-- Autentificare partajată, rezistență, stocare de date și observabilitate
-- Model de politică consistent pe toate suprafețele de interacțiune
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. „Trebuie să trimit fluxuri de lucru agentice fără extinderea codului lipici”
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Echipele își pierd din viteza atunci când realizează mai multe servicii și scripturi ad-hoc.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Cum o rezolvă OmniRoute:**
+**How OmniRoute solves it:**
-- Strategie unificată pentru clienți și agenți
-- Interfețe de utilizare a protocolului încorporate și căi de validare a fumului
-- Baze pregătite pentru producție (securitate, logare, rezistență, backup)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Exemple de manuale (cazuri de utilizare integrate)
+### Example Playbooks (Integrated Use Cases)
-**Playbook A: Maximizați abonamentul plătit + backup ieftin**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -685,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Playbook B: teanc de codare cu costuri zero**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -697,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Playbook C: lanț alternativ permanent activ 24/7**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -710,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Playbook D: Agentul operează cu MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Pornire rapidă
+## 🆓 Start Free — Zero Configuration Cost
-**1. Instalați la nivel global:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Pornire rapidă
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Tabloul de bord se deschide la `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Comanda | Descriere |
-| ----------------------- | ---------------------------------------- |
-| `omniroute` | Porniți serverul (portul implicit 20128) |
-| `omniroute --port 3000` | Utilizați portul personalizat |
-| `omniroute --no-open` | Nu deschideți automat browserul |
-| `omniroute --help` | Arată ajutor |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Conectați un furnizor GRATUIT:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Tabloul de bord → Furnizori → Conectare **Claude Code** sau **Antigravity** → Conectare OAuth → Gata!
+Optional split-port mode:
-**3. Utilizați în instrumentul dvs. CLI:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**Asta este!** Începeți să codați cu modele AI GRATUITE.
+### 2) Connect providers and create your API key
-**Alternativă - rulează de la sursă:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-OmniRoute este disponibil ca imagine publică Docker pe [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Alergare rapidă:**
+**Quick run:**
```bash
docker run -d \
@@ -779,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Cu fișierul de mediu:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -794,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Utilizarea Docker Compose:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -804,258 +880,552 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| Imagine | Etichetă | Dimensiune | Descriere |
-| ------------------------ | -------- | ---------- | ----------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | Ultima versiune stabilă |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Versiunea curentă |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+### Pornire rapidă
+
```bash
-npm run electron:dev # Development mode
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Prețurile dintr-o privire
+## 💰 Pricing at a Glance
-| Nivelul | Furnizor | Cost | Resetare cotă | Cel mai bun pentru |
-| ---------------- | ----------------- | ---------------------------- | --------------------------- | ------------------------- |
-| **💳 ABONARE** | Claude Code (Pro) | 20 USD/lună | 5h + săptămânal | Deja abonat |
-| | Codex (Plus/Pro) | 20-200 USD/lună | 5h + săptămânal | Utilizatori OpenAI |
-| | Gemeni CLI | **GRATIS** | 180K/lună + 1K/zi | Toată lumea! |
-| | GitHub Copilot | 10-19 USD/lună | Lunar | utilizatorii GitHub |
-| **🔑 CHEIA API** | NVIDIA NIM | **GRATIS** (1000 de credite) | O singură dată | Testare gratuită la nivel |
-| | DeepSeek | Plată-pe-utilizare | Niciuna | Cel mai bun preț/calitate |
-| | Groq | Nivel gratuit + plătit | Tarif limitat | Inferență ultra-rapidă |
-| | xAI (Grok) | Plată-pe-utilizare | Niciuna | Modele Grok |
-| | Mistral | Nivel gratuit + plătit | Tarif limitat | IA europeană |
-| | OpenRouter | Plată-pe-utilizare | Niciuna | 100+ modele |
-| **💰 IEFTIN** | GLM-4.7 | 0,6 USD/1 milion | Zilnic 10:00 | Backup buget |
-| | MiniMax M2.1 | 0,2 USD/1 milion | rulare de 5 ore | Cea mai ieftină opțiune |
-| | Kimi K2 | 9 USD/lună plat | 10 milioane de jetoane/lună | Cost previzibil |
-| **🆓 GRATUIT** | iFlow | $0 | Nelimitat | 8 modele gratuite |
-| | Qwen | $0 | Nelimitat | 3 modele gratuite |
-| | Kiro | $0 | Nelimitat | Claude liber |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Sfat profesionist:** Începeți cu Gemini CLI (180K gratuit/lună) + iFlow (gratuit nelimitat) combo = cost 0 USD!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Caracteristici cheie
+---
-### 🧠 Core Routing & Intelligence
+## 🆓 Free Models — What You Actually Get
-| Caracteristica | Ce face |
-| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
-| 🎯 **Backback inteligent pe 4 niveluri** | Rută automată: Abonament → Cheie API → Ieftin → Gratuit |
-| 📊 **Urmărirea cotelor în timp real** | Numărătoare de jetoane live + numărătoare inversă de resetare per furnizor |
-| 🔄 **Traducerea formatului** | OpenAI ↔ Claude ↔ Gemeni ↔ Cursor ↔ Kiro fără întreruperi + dezinfectare răspuns |
-| 👥 **Asistență pentru mai multe conturi** | Conturi multiple per furnizor cu selecție inteligentă |
-| 🔄 **Reîmprospătare automată a simbolului** | Tokenurile OAuth se reîmprospătează automat cu reîncercarea |
-| 🎨 **Combinații personalizate** | 6 strategii: fill-first, round-robin, p2c, aleatoriu, cel mai puțin utilizat, optimizat din punct de vedere al costurilor |
-| 🧩 **Modele personalizate** | Adăugați orice ID de model oricărui furnizor |
-| 🌐 **Wildcard Router** | Dirijați dinamic modelele `provider/*` către orice furnizor |
-| 🧠 **Buget de gândire** | Moduri de trecere, automat, personalizat și adaptiv pentru modelele de raționament |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **System Prompt Injection** | Prompt de sistem global aplicat pentru toate solicitările |
-| 📄 **Responses API** | Compatibilitate completă cu OpenAI Responses API (`/v1/responses`) pentru Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 API-uri multimodale
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Caracteristica | Ce face |
-| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Generarea imaginii** | `/v1/images/generations` — 4 furnizori, peste 9 modele |
-| 📐 **Inglobări** | `/v1/embeddings` — 6 furnizori, peste 9 modele |
-| 🎤 **Transcriere audio** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Text-to-speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Moderații** | `/v1/moderations` — Verificări de siguranță a conținutului |
-| 🔀 **Reclasificare** | `/v1/rerank` — Reclasificarea relevanței documentului |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Reziliență și securitate
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| Caracteristica | Ce face |
-| -------------------------------------- | -------------------------------------------------------------------------------------- |
-| 🔌 **Disjunctor** | Deschidere/închidere automată pentru fiecare furnizor cu praguri configurabile |
-| 🛡️ **Turmă Anti-Tunete** | Limită de rată Mutex + semafor pentru furnizorii de chei API |
-| 🧠 **Cache semantic** | Cache-ul pe două niveluri (semnătură + semantică) reduce costurile și latența |
-| ⚡ **Solicita Idempotenta** | Fereastra de dedup 5s pentru cereri duplicate |
-| 🔒 **TLS Fingerprint Spoofing** | Ocoliți detectarea botului bazată pe TLS prin wreq-js |
-| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
-| 🌐 **Filtrare IP** | Lista permisă/lista blocată pentru controlul accesului API |
-| 📊 **Limite de rată editabile** | RPM configurabil, interval minim și concurență maximă la nivel de sistem |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **Protecție API Endpoint** | Autentificare + blocare furnizor pentru punctul final `/models` |
-| 🔒 **Vizibilitatea proxy** | Ecusoane cu coduri de culoare: 🟢 global, 🟡 furnizor, 🔵 per conexiune cu afișaj IP |
-| 🌐 **Configurare proxy pe 3 niveluri** | Configurați proxy-uri la nivel global, per furnizor sau per conexiune |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 Observabilitate și analiză
+### 🟡 QWEN MODELS (Device Code Auth)
-| Caracteristica | Ce face |
-| -------------------------------------- | ------------------------------------------------------------------------------------------------- |
-| 📝 **Solicitare înregistrare** | Modul de depanare cu jurnalele complete de cereri/răspuns |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **Jurnale proxy SQLite** | Jurnalele proxy persistente supraviețuiesc repornirilor de server |
-| 📊 **Tabloul de bord de analiză** | Recharts-powered: carduri cu statistici, diagramă de utilizare a modelului, tabel furnizor |
-| 📈 **Urmărirea progresului** | Înscrieți-vă evenimentele de progres SSE pentru streaming |
-| 🧪 **Evaluări LLM** | Testarea setului de aur cu 4 strategii de meci |
-| 🔍 **Solicitare telemetrie** | agregare latență p50/p95/p99 + urmărire X-Request-Id |
-| 📋 **Tabloul de bord jurnal** | Pagina unificată cu 4 file: Jurnalele de solicitări, Jurnalele proxy, Jurnalele de audit, Consolă |
-| 🖥️ **Console Log Viewer** | Vizualizator în timp real în stil terminal cu filtru de nivel, căutare, defilare automată |
-| 📑 **Înregistrare pe bază de fișiere** | Interceptor de consolă captează toate ieșirile în fișierul jurnal JSON cu rotație |
-| 🏥 **Tabloul de bord pentru sănătate** | Timp de funcționare a sistemului, stări întrerupătoare, blocări, statistici cache |
-| 💰 **Urmărirea costurilor** | Gestionarea bugetului + configurarea prețurilor pe model |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ Implementare și sincronizare
+### 🟣 GEMINI CLI (Google OAuth)
-| Caracteristica | Ce face |
-| ------------------------------------- | ------------------------------------------------------------------------------- |
-| 💾 **Cloud Sync** | Sincronizați configurația între dispozitive prin Cloudflare Workers |
-| 🌐 **Implementează oriunde** | Localhost, VPS, Docker, lucrători Cloudflare |
-| 🔑 **Administrarea cheilor API** | Generați, rotiți și stabiliți cheile API pentru fiecare furnizor |
-| 🧙 **Onboarding Wizard** | Configurare ghidată în 4 pași pentru utilizatorii debutanți |
-| 🔧 **Tabloul de bord CLI Tools** | Configurați cu un singur clic Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **Backup-uri DB** | Backup automat, restaurare, export și import pentru toate setările |
-| 🌐 **Internaționalizare** | I18n complet cu next-intl — suport engleză + portugheză (Brazilia) |
-| 🌍 **Selector de limbă** | Pictograma glob în antet pentru schimbarea limbii în timp real (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Director de date personalizate** | `DATA_DIR` env var pentru a înlocui calea de stocare implicită `~/.omniroute` |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Detalii caracteristică
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Smart 4-Tier Fallback
+Start MCP transport in stdio mode:
-Creați combinații cu rezervă automată:
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 Urmărirea cotelor în timp real
+Recommended validation flow:
-- Consumul de token per furnizor
-- Resetați numărătoarea inversă (5 ore, zilnic, săptămânal)
-- Estimarea costurilor pentru nivelurile plătite
-- Rapoarte lunare de cheltuieli
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Format traducere
+Useful APIs for automation:
-Traducere fără întreruperi între formate:
-
-- **OpenAI** ↔ **Claude** ↔ **Gemeni** ↔ **Răspunsuri OpenAI**
-- Instrumentul dvs. CLI trimite formatul OpenAI → OmniRoute traduce → Furnizorul primește formatul nativ
-- Funcționează cu orice instrument care acceptă puncte finale personalizate OpenAI
-- **Sanitizarea răspunsului** — Elimina câmpurile nestandard pentru compatibilitate strictă cu OpenAI SDK
-- **Normalizarea rolurilor** — `developer` → `system` pentru non-OpenAI; `system` → `user` pentru modelele GLM/ERNIE
-- **Think tag extraction** — blocuri `` → `reasoning_content` pentru modele de gândire
-- **Ieșire structurată** — `json_schema` → `responseMimeType`/`responseSchema` a lui Gemeni
-
-### 👥 Suport pentru mai multe conturi
-
-- Adăugați mai multe conturi pentru fiecare furnizor
-- Auto round-robin sau rutare bazată pe prioritate
-- Revenire la următorul cont când cineva atinge cota
-
-### 🔄 Reîmprospătare automată a simbolului
-
-- Tokenurile OAuth se reîmprospătează automat înainte de expirare
-- Nu este nevoie de re-autentificare manuală
-- Experiență perfectă pentru toți furnizorii
-
-### 🎨 Combo personalizate
-
-- Creați combinații de modele nelimitate
-- 6 strategii: umplere întâi, round-robin, putere cu două alegeri, aleatoriu, cel mai puțin utilizat, optimizat din punct de vedere al costurilor
-- Partajați combo-uri pe dispozitive cu Cloud Sync
-
-### 🏥 Tabloul de bord pentru sănătate
-
-- Starea sistemului (timp de funcționare, versiune, utilizare a memoriei)
-- Stări întrerupătoarelor de circuit pentru fiecare furnizor (Închis/Deschis/Pe jumătate deschis)
-- Starea limitei ratei și blocajele active
-- Statistici de cache pentru semnături
-- Telemetrie latență (p50/p95/p99) + cache prompt
-- Resetați starea de sănătate cu un singur clic
-
-### 🔧 Translator Playground
-
-OmniRoute include un puternic Translator Playground încorporat cu **4 moduri** pentru depanare, testare și monitorizare a traducerilor API:
-
-| Modul | Descriere |
-| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| **💻 Loc de joacă** | Traducere directă a formatului — inserați orice corp de solicitare API și vedeți instantaneu cum îl traduce OmniRoute între formatele de furnizor (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Include exemple de șabloane și detecție automată a formatului. |
-| **💬 Tester de chat** | Trimiteți cereri reale de chat prin OmniRoute și vedeți întregul drum dus-întors: intrarea dvs., solicitarea tradusă, răspunsul furnizorului și răspunsul tradus înapoi. Neprețuit pentru validarea rutei combinate. |
-| **🧪 Banc de testare** | Mod de testare în loturi — definiți mai multe cazuri de testare cu diferite intrări și rezultate așteptate, rulați-le pe toate simultan și comparați rezultatele între furnizori și modele. |
-| **📱 Monitor live** | Monitorizare în timp real a cererilor — urmăriți cererile primite în timp ce acestea trec prin OmniRoute, vedeți traducerile formatului care au loc în direct și identificați problemele instantaneu. |
-
-**Acces:** Tabloul de bord → Traducător (bara laterală)
-
-### 💾 Cloud Sync
-
-- Sincronizați furnizorii, combo-urile și setările pe dispozitive
-- Sincronizare automată în fundal
-- Stocare securizată criptată
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Evaluări (Evaluări)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute include un cadru de evaluare încorporat pentru a testa calitatea răspunsului LLM față de un set de aur. Accesați-l prin **Analitice → Evaluări** în tabloul de bord.
+Discover the agent:
-### Set de aur încorporat
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-„Setul de Aur OmniRoute” preîncărcat conține 10 cazuri de testare care acoperă:
+Send a task:
-- Salutări, matematică, geografie, generare de cod
-- Conformitatea formatului JSON, traducere, reducere
-- Refuz de siguranță (conținut dăunător), numărare, logică booleană
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Strategii de evaluare
+Manage lifecycle:
-| Strategie | Descriere | Exemplu |
-| ---------- | ------------------------------------------------------------------------- | -------------------------------- |
-| `exact` | Ieșirea trebuie să se potrivească exact cu | `"4"` |
-| `contains` | Ieșirea trebuie să conțină subșir (indiferență de majuscule și minuscule) | `"Paris"` |
-| `regex` | Ieșirea trebuie să se potrivească cu modelul regex | `"1.*2.*3"` |
-| `custom` | Funcția JS personalizată returnează adevărat/fals | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Ghid de configurare
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Furnizori de abonament
+🧪 End-to-end protocol validation
-### Cod Claude (Pro/Max)
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
+
+### Claude Code (Pro/Max)
```bash
Dashboard → Providers → Connect Claude Code
@@ -1068,7 +1438,7 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**Sfat profesionist:** Folosiți Opus pentru sarcini complexe, Sonnet pentru viteză. OmniRoute urmărește cota per model!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
@@ -1082,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (GRATIS 180K/lună!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1094,7 +1481,7 @@ Models:
gc/gemini-2.5-pro
```
-**Cea mai bună valoare:** Nivel gratuit imens! Utilizați acest lucru înainte de nivelurile plătite.
+**Best Value:** Huge free tier! Use this before paid tiers.
### GitHub Copilot
@@ -1112,88 +1499,88 @@ Models:
-🔑 Furnizori de chei API
+🔑 API Key Providers
-### NVIDIA NIM (1000 de credite GRATUITE!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Înscrieți-vă: [build.nvidia.com](https://build.nvidia.com)
-2. Obțineți cheia API gratuită (1000 de credite de inferență incluse)
-3. Tabloul de bord → Adăugați furnizor → NVIDIA NIM:
- - Cheie API: `nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**Modele:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` și peste 50 de altele
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Sfat profesional:** API compatibil cu OpenAI - funcționează perfect cu traducerea formatului OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Înscrieți-vă: [platform.deepseek.com](https://platform.deepseek.com)
-2. Obțineți cheia API
-3. Tabloul de bord → Adăugați furnizor → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Modele:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (nivel gratuit disponibil!)
+### Groq (Free Tier Available!)
-1. Înscrieți-vă: [console.groq.com](https://console.groq.com)
-2. Obțineți cheia API (nivel gratuit inclus)
-3. Tabloul de bord → Adăugați furnizor → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Modele:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Sfat profesionist:** Inferență ultra-rapidă - cel mai bun pentru codare în timp real!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (100+ modele)
+### OpenRouter (100+ Models)
-1. Înscrieți-vă: [openrouter.ai](https://openrouter.ai)
-2. Obțineți cheia API
-3. Tabloul de bord → Adăugare furnizor → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Modele:** Accesați peste 100 de modele de la toți furnizorii importanți printr-o singură cheie API.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Furnizori ieftini (backup)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (Resetare zilnică, 0,6 USD/1 milion)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Înscrieți-vă: [Zhipu AI](https://open.bigmodel.cn/)
-2. Obțineți cheia API din Coding Plan
-3. Tabloul de bord → Adăugați cheia API:
- - Furnizor: `glm`
- - Cheie API: `your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**Utilizați:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Sfat profesionist:** Planul de codare oferă cotă de 3 ori la 1/7 cost! Resetați zilnic la 10:00.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (resetare 5 ore, 0,20 USD/1 milion)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Înscrieți-vă: [MiniMax](https://www.minimax.io/)
-2. Obțineți cheia API
-3. Tabloul de bord → Adăugați cheia API
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Utilizați:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Sfat pro:** Cea mai ieftină opțiune pentru context lung (1 milion de jetoane)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 (9 USD/lună fix)
+### Kimi K2 ($9/month flat)
-1. Abonați-vă: [Moonshot AI](https://platform.moonshot.ai/)
-2. Obțineți cheia API
-3. Tabloul de bord → Adăugați cheia API
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Utilizați:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Sfat profesionist:** Fix 9 USD/lună pentru 10 milioane de jetoane = 0,90 USD/cost efectiv de 1 milion!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 Furnizori GRATUITI (Backup de urgență)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 modele GRATUITE)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1208,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 modele GRATUITE)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1220,7 +1607,7 @@ Models:
qw/qwen3-coder-flash
```
-### Kiro (Claude GRATUIT)
+### Kiro (Claude FREE)
```bash
Dashboard → Connect Kiro
@@ -1235,9 +1622,9 @@ Models:
-🎨 Creați combinații
+🎨 Create Combos
-### Exemplul 1: Maximizați abonamentul → Backup ieftin
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1251,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### Exemplul 2: Numai gratuit (cost zero)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1266,7 +1653,7 @@ Cost: $0 forever!
-🔧 Integrare CLI
+🔧 CLI Integration
### Cursor IDE
@@ -1277,9 +1664,9 @@ Settings → Models → Advanced:
Model: cc/claude-opus-4-6
```
-### Claude Cod
+### Claude Code
-Utilizați pagina **Instrumente CLI** din tabloul de bord pentru configurarea cu un singur clic sau editați manual `~/.claude/settings.json`.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1292,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Opțiunea 1 — Tabloul de bord (recomandat):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Opțiunea 2 — Manual:** Editați `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1314,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **Notă:** OpenClaw funcționează numai cu OmniRoute local. Utilizați `127.0.0.1` în loc de `localhost` pentru a evita problemele de rezoluție IPv6.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### Cline / Continuare / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1326,110 +1713,245 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Depanare
+## Depanare
-Faceți clic pentru a extinde ghidul de depanare
+Click to expand troubleshooting guide
-**„Modelul de limbă nu a furnizat mesaje”**
+**"Language model did not provide messages"**
-- Cota de furnizor epuizată → Verificați instrumentul de urmărire a cotei din tabloul de bord
-- Soluție: utilizați alternativă combinată sau treceți la un nivel mai ieftin
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**Limitarea ratei**
+**Rate limiting**
-- Scăderea cotei de abonament → Fallback la GLM/MiniMax
-- Adăugați combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**Tokenul OAuth a expirat**
+**OAuth token expired**
-- Reîmprospătat automat de OmniRoute
-- Dacă problemele persistă: Dashboard → Provider → Reconnect
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Costuri mari**
+**High costs**
-- Verificați statisticile de utilizare în Tabloul de bord → Costuri
-- Comutați modelul principal la GLM/MiniMax
-- Utilizați nivelul gratuit (Gemini CLI, iFlow) pentru sarcini necritice
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Tabloul de bord se deschide pe portul greșit**
+**Dashboard/API ports are wrong**
-- Setați `PORT=20128` și `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Erori de sincronizare în cloud**
+**Cloud sync errors**
-- Verificați `BASE_URL` puncte către instanța dvs. care rulează
-- Verificați `CLOUD_URL` puncte către punctul final din cloud așteptat
-- Păstrați valorile `NEXT_PUBLIC_*` aliniate cu valorile de pe partea serverului
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Prima conectare nu funcționează**
+**First login not working**
-- Verificați `INITIAL_PASSWORD` în `.env`
-- Dacă nu este setată, parola de rezervă este `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Fără jurnal de solicitare**
+**No request logs**
-- Setați `ENABLE_REQUEST_LOGS=true` în `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Testul de conectare arată „Invalid” pentru furnizorii compatibili cu OpenAI**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Mulți furnizori nu expun un punct final `/models`
-- OmniRoute v1.0.6+ include validarea de rezervă prin finalizarea chatului
-- Asigurați-vă că adresa URL de bază include sufixul `/v1`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 OAuth
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ IMPORTANT pentru utilizatorii cu OmniRoute în VPS/Docker/servidor remoto**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-#### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-Pentru autentificare, **Antigravity** și **Gemini CLI** folosesc **Google OAuth 2.0**. O Google exige que a `redirect_uri` utilizat nu fluxo OAuth seja **exatamente** uma das URIs pre-cadastradas no Google Cloud Console do aplicative.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-As credenciais OAuth embutidas no OmniRoute esteo cadastradas **apenas for `localhost`**. Când accesați OmniRoute într-un server la distanță (ex: `https://omniroute.meuservidor.com`), sau Google respinge autentificarea com:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### Soluție: Configurați propriile acreditări OAuth
+#### Solution: Configure your own OAuth credentials
-Você necesita criar um **OAuth 2.0 Client ID** nu Google Cloud Console ca URI pentru server.
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
#### Passo a passo
-**1. Acces sau Google Cloud Console**
+**1. Acesse o Google Cloud Console**
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
-**2. Plângeți nou OAuth 2.0 Client ID**
+**2. Crie um novo OAuth 2.0 Client ID**
-- Faceți clic pe **"+ Create Credentials"** → **"OAuth client ID"**
-- Tip de aplicație: **"Aplicație web"**
-- Nume: scolha qualquer nome (ex: `OmniRoute Remote`)
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. Adăugați ca URI de redirecționare autorizate**
+**3. Adicione as Authorized Redirect URIs**
-No campo **„URI-uri de redirecționare autorizate”**, adiție:
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
```
-> Substitue `seu-servidor.com` pelo domínio sau IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. Salve și copie ca credenciais**
+**4. Salve e copie as credenciais**
-Após criar, o Google afișează o **Client ID** e o **Client Secret**.
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. Configurați ca variabile de mediu**
+**5. Configure as variáveis de ambiente**
-Nu ai `.env` (ai variat de ambient do Docker):
+No seu `.env` (ou nas variáveis de ambiente do Docker):
```bash
# Para Antigravity:
@@ -1452,152 +1974,147 @@ npm run dev
docker restart omniroute
```
-**7. Tente connect novamente**
+**7. Tente conectar novamente**
-Tabloul de bord → Furnizori → Antigravity (sau Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
-Agora sau Google redirecționează corect pentru `https://seu-servidor.com/callback` și funcționează autenticação.
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### Soluție temporară (sem configurar credenciais proprias)
+#### Workaround temporário (sem configurar credenciais próprias)
-Nu vă rugăm să vă convingeți acum, dar este posibil să utilizați sau să fluxați **manual de URL**:
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. OmniRoute deschide o adresă URL de autorizare Google
-2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no server remote)
-3. **Copiați o adresă URL completă** da bara de accesare a browserului (mesmo que a page não carregue)
-4. Cole essa URL nu există câmpuri care nu apar modal de conexão pentru OmniRoute
-5. Faceți clic pe **„Conectați-vă”**
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
+4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
+5. Clique em **"Connect"**
-> Această soluție de soluționare funcționează deoarece codul de autorizare a URL-ului este valabil independent de redirecționare pentru a încărca sau nu.
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ este **nu este acceptat** - `better-sqlite3` binarele native sunt incompatibile)
-- **Limba**: TypeScript 5.9 — **100% TypeScript** în `src/` și `open-sse/` (v1.0.6)
-- **Cadru**: Next.js 16 + React 19 + Tailwind CSS 4
-- **Bază de date**: LowDB (JSON) + SQLite (starea domeniului + jurnalele proxy)
-- **Streaming**: evenimente trimise de server (SSE)
-- **Auth**: OAuth 2.0 (PKCE) + JWT + chei API
-- **Testare**: Runner de testare Node.js (368+ teste unitare)
-- **CI/CD**: GitHub Actions (publicare automată npm + Docker Hub la lansare)
-- **Site web**: [omniroute.online](https://omniroute.online)
-- **Pachet**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **Reziliență**: întrerupător de circuit, backoff exponențial, turmă anti-tunet, falsificare TLS
-
----
-
-## 📖 Documentație
-
-| Document | Descriere |
-| -------------------------------------------- | --------------------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | Furnizori, combo-uri, integrare CLI, implementare |
-| [API Reference](docs/API_REFERENCE.md) | Toate punctele finale cu exemple |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | Probleme și soluții comune |
-| [Architecture](docs/ARCHITECTURE.md) | Arhitectura sistemului și elementele interne |
-| [Contributing](CONTRIBUTING.md) | Configurare și linii directoare de dezvoltare |
-| [OpenAPI Spec](docs/openapi.yaml) | Specificație OpenAPI 3.0 |
-| [Security Policy](SECURITY.md) | Raportarea vulnerabilităților și practicile de securitate |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Ghid complet: VM + nginx + configurare Cloudflare |
-| [Features Gallery](docs/FEATURES.md) | Tur vizual al tabloului de bord cu capturi de ecran |
-
-### 📸 Previzualizarea tabloului de bord
+## 🛠️ Tech Stack
-Faceți clic pentru a vedea capturile de ecran de pe tabloul de bord
+Click to expand tech stack details
-| Pagina | Captură de ecran |
-| ------------------------ | ------------------------------------------------- |
-| **Furnizori** |  |
-| **Combo** |  |
-| **Analitice** |  |
-| **Sănătate** |  |
-| **Translator** |  |
-| **Setări** |  |
-| **Instrumente CLI** |  |
-| **Jurnale de utilizare** |  |
-| **Punctul final** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## Documentație
-OmniRoute are **210+ funcții planificate** în mai multe faze de dezvoltare. Iată domeniile cheie:
-
-| Categoria | Caracteristici planificate | Repere |
-| --------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
-| 🧠 **Routing & Intelligence** | 25+ | Rutare cu cea mai mică latență, rutare bazată pe etichete, verificare preliminară a cotei, selecție contului P2C |
-| 🔒 **Securitate și conformitate** | 20+ | Întărirea SSRF, acoperirea acreditărilor, limita de rată per punct final, domeniul de aplicare al cheii de management |
-| 📊 **Observabilitate** | 15+ | Integrarea OpenTelemetry, monitorizarea cotelor în timp real, urmărirea costurilor per model |
-| 🔄 **Integrări furnizori** | 20+ | Registrul modelului dinamic, perioadele de încărcare ale furnizorului, Codexul cu mai multe conturi, analiza cotelor Copilot |
-| ⚡ **Performanță** | 15+ | Strat cache dublu, cache prompt, cache de răspuns, streaming keepalive, API batch |
-| 🌐 **Ecosistem** | 10+ | WebSocket API, config hot-reload, magazin de configurare distribuit, mod comercial |
-
-### 🔜 În curând
-
-- 🔗 **Integrare OpenCode** — Suport furnizor nativ pentru IDE-ul de codare OpenCode AI
-- 🔗 **Integrare TRAE** — Suport complet pentru cadrul de dezvoltare TRAE AI
-- 📦 **Batch API** — Procesare asincronă în lot pentru solicitări în bloc
-- 🎯 **Rutare bazată pe etichete** — Solicitări de rutare bazate pe etichete și metadate personalizate
-- 💰 **Strategia cu cel mai mic cost** — Selectați automat cel mai ieftin furnizor disponibil
-
-> 📝 Specificații complete ale caracteristicilor disponibile în [link](docs/new-features/) (217 specificații detaliate)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 Colaboratori
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Cum să contribui
+### How to Contribute
-1. Bifurcați depozitul
-2. Creați-vă ramura caracteristică (`git checkout -b feature/amazing-feature`)
-3. Afișează modificările (`git commit -m 'Add amazing feature'`)
-4. Apăsați la ramură (`git push origin feature/amazing-feature`)
-5. Deschideți o cerere de tragere
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Consultați [CONTRIBUTING.md](CONTRIBUTING.md) pentru instrucțiuni detaliate.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Lansarea unei noi versiuni
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Istoria stelelor
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Mulțumiri
+## 🙏 Acknowledgments
-Mulțumiri speciale pentru **[9router](https://github.com/decolua/9router)** de **[decolua](https://github.com/decolua)** — proiectul original care a inspirat această furcă. OmniRoute se bazează pe această bază incredibilă cu funcții suplimentare, API-uri multimodale și o rescrie completă TypeScript.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Mulțumiri speciale pentru **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — implementarea Go originală care a inspirat acest port JavaScript.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Licență
+## Licență
-Licență MIT - consultați [LICENSE](LICENSE) pentru detalii.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Construit cu ❤️ pentru dezvoltatorii care codifică 24/7
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/ro/docs/FEATURES.md b/docs/i18n/ro/docs/FEATURES.md
new file mode 100644
index 0000000000..e0625281eb
--- /dev/null
+++ b/docs/i18n/ro/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Română)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/ru/README.md b/docs/i18n/ru/README.md
index 04d93215f8..386283d3d0 100644
--- a/docs/i18n/ru/README.md
+++ b/docs/i18n/ru/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — Бесплатный AI Gateway
+# 🚀 OmniRoute — The Free AI Gateway (Русский)
-### Никогда не прекращайте программировать. Умная маршрутизация к **БЕСПЛАТНЫМ и дешёвым AI-моделям** с автоматическим fallback.
-
-_Ваш универсальный API-прокси — одна точка доступа, 36+ провайдеров, нулевой простой._
-
-**Chat Completions • Embeddings • Генерация изображений • Аудио • Reranking • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Бесплатный AI-провайдер для ваших любимых агентов программирования
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Подключайте любую IDE или CLI-инструмент с AI через OmniRoute — бесплатный API gateway для неограниченного программирования._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,586 +162,527 @@ _Подключайте любую IDE или CLI-инструмент с AI ч
|
-📡 Все агенты подключаются через http://localhost:20128/v1 или http://cloud.omniroute.online/v1 — одна конфигурация, неограниченные модели и квота
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 Сайт](https://omniroute.online) • [🚀 Быстрый старт](#-быстрый-старт) • [💡 Функции](#-основные-функции) • [📖 Документация](#-документация) • [💰 Цены](#-обзор-цен)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Почему OmniRoute?
-
-**Перестаньте тратить деньги и упираться в лимиты:**
-
--
Квота подписки истекает неиспользованной каждый месяц
--
Лимиты скорости останавливают вас посреди программирования
--
Дорогие API ($20-50/месяц за провайдера)
--
Ручное переключение между провайдерами
-
-**OmniRoute решает это:**
-
-- ✅ **Максимизируйте подписки** — Отслеживайте квоты, используйте всё до сброса
-- ✅ **Автоматический fallback** — Подписка → API Key → Дешёвый → Бесплатный, нулевой простой
-- ✅ **Мульти-аккаунт** — Round-robin между аккаунтами каждого провайдера
-- ✅ **Универсальный** — Работает с Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, любым CLI-инструментом
-
----
-
-## 📧 Поддержка
-
-> 💬 **Присоединяйтесь к сообществу!** [Группа WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Получайте помощь, делитесь советами и оставайтесь в курсе.
-
-- **Сайт**: [omniroute.online](https://omniroute.online)
+- **Website**: [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)
-- **WhatsApp**: [Группа сообщества](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Оригинальный проект**: [9router от decolua](https://github.com/decolua/9router)
+- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Как это работает
+## 🔄 How It Works
```
┌─────────────┐
-│ Ваш CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
+│ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
│ Tool │
└──────┬──────┘
│ http://localhost:20128/v1
↓
┌─────────────────────────────────────────┐
-│ OmniRoute (Умный маршрутизатор) │
-│ • Трансляция формата (OpenAI ↔ Claude) │
-│ • Отслеживание квот + Embeddings + Изображения │
-│ • Автообновление токенов │
+│ OmniRoute (Smart Router) │
+│ • Format translation (OpenAI ↔ Claude) │
+│ • Quota tracking + Embeddings + Images │
+│ • Auto token refresh │
└──────┬──────────────────────────────────┘
│
- ├─→ [Tier 1: ПОДПИСКА] Claude Code, Codex, Gemini CLI
- │ ↓ квота исчерпана
- ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM и др.
- │ ↓ лимит бюджета
- ├─→ [Tier 3: ДЕШЁВЫЙ] GLM ($0.6/1M), MiniMax ($0.2/1M)
- │ ↓ лимит бюджета
- └─→ [Tier 4: БЕСПЛАТНЫЙ] iFlow, Qwen, Kiro (неограниченно)
+ ├─→ [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
```
---
-## 🎯 Что решает OmniRoute — 30 реальных проблем и вариантов использования
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Каждый разработчик, использующий инструменты искусственного интеллекта, ежедневно сталкивается с этими проблемами.** OmniRoute был создан для решения всех этих проблем — от перерасхода средств до региональных блоков, от нарушенных потоков OAuth до операций протокола и наблюдения за предприятием.
+> **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 protocol operations and enterprise observability.
-💸 1. «Я плачу за дорогую подписку, но меня все равно прерывают лимиты»
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Разработчики платят 20–200 долларов в месяц за Claude Pro, Codex Pro или GitHub Copilot. Даже при оплате квота имеет потолок — 5 часов использования, еженедельные лимиты или поминутные ограничения. В середине сеанса кодирования провайдер перестает отвечать, и разработчик теряет поток и производительность.
+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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Умный 4-уровневый резерв** — если квота подписки исчерпана, происходит автоматическое перенаправление на API-ключ → Дешево → Бесплатно без вмешательства вручную.
-- **Отслеживание квот в реальном времени** — показывает потребление токенов в режиме реального времени с обратным отсчетом сброса (5 часов, ежедневно, еженедельно).
-- **Поддержка нескольких учетных записей** — Несколько учетных записей у каждого провайдера с автоматическим циклическим перебором — когда один из них заканчивается, переключается на следующий
-- **Пользовательские комбинации** — Настраиваемые резервные цепочки с 6 стратегиями балансировки (сначала заполняемые, циклический, P2C, случайные, наименее используемые, с оптимизацией затрат)
-- **Бизнес-квоты Кодекса** — мониторинг квот рабочего пространства для бизнеса/команды непосредственно на панели управления.
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. «Мне нужно использовать несколько поставщиков, но у каждого свой API»
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI использует один формат, Claude (Anthropic) — другой, Gemini — третий. Если разработчик хочет протестировать модели от разных поставщиков или использовать резервный вариант между ними, ему необходимо перенастроить SDK, изменить конечные точки, разобраться с несовместимыми форматами. Пользовательские поставщики (FriendLI, NIM) имеют нестандартные конечные точки модели.
+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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Единая конечная точка** — один `http://localhost:20128/v1` служит прокси для всех 36+ провайдеров.
-- **Перевод формата** — Автоматический и прозрачный: OpenAI ↔ Claude ↔ Gemini ↔ API ответов
-- **Очистка ответов** — удаляются нестандартные поля (`x_groq`, `usage_breakdown`, `service_tier`), которые нарушают OpenAI SDK v1.83+.
-- **Нормализация ролей** — преобразует `developer` в `system` для поставщиков, не поддерживающих OpenAI; `system` → `user` для GLM/ERNIE
-- **Think Tag Extraction** — извлекает блоки `` из таких моделей, как DeepSeek R1, в стандартизированный `reasoning_content`.
-- **Структурированный вывод для Gemini** — автоматическое преобразование `json_schema` → `responseMimeType`/`responseSchema`.
-- **`stream` по умолчанию — `false`** — соответствует спецификации OpenAI, что позволяет избежать неожиданного SSE в SDK Python/Rust/Go.
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. «Мой провайдер ИИ блокирует мой регион/страну»
+🌐 3. "My AI provider blocks my region/country"
-Такие провайдеры, как OpenAI/Codex, блокируют доступ из определенных географических регионов. Пользователи получают ошибки типа `unsupported_country_region_territory` во время подключений OAuth и API. Особенно это расстраивает разработчиков из развивающихся стран.
+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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **3-уровневая конфигурация прокси** — настраиваемый прокси-сервер на трех уровнях: глобальный (весь трафик), для каждого провайдера (только один провайдер) и для каждого соединения/ключа.
-- **Значки прокси с цветной кодировкой** — Визуальные индикаторы: 🟢 глобальный прокси, 🟡 прокси-сервер провайдера, 🔵 прокси-сервер подключения, всегда показывающий IP-адрес.
-- **Обмен токенов OAuth через прокси** — поток OAuth также проходит через прокси, решая проблему `unsupported_country_region_territory`.
-- **Тесты подключения через прокси** — тесты подключения используют настроенный прокси-сервер (прямого обхода больше нет)
-- **Поддержка SOCKS5** — Полная поддержка прокси-сервера SOCKS5 для исходящей маршрутизации.
-- **Подмена отпечатка пальца TLS** — отпечаток TLS, подобный браузеру, через `wreq-js` для обхода обнаружения ботов.
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. «Я хочу использовать ИИ для кодирования, но у меня нет денег»
+🆓 4. "I want to use AI for coding but I have no money"
-Не каждый может платить 20–200 долларов в месяц за подписку на ИИ. Студентам, разработчикам из развивающихся стран, любителям и фрилансерам нужен доступ к качественным моделям по нулевой цене.
+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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Встроенные провайдеры уровня бесплатного пользования** — Встроенная поддержка 100% бесплатных провайдеров: iFlow (8 моделей с неограниченным количеством пользователей), Qwen (3 модели с неограниченным количеством пользователей), Kiro (Claude бесплатно), Gemini CLI (180 тысяч в месяц бесплатно).
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Комбинации только бесплатно** — цепочка `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 0 долларов США в месяц без простоев.
-- **Бесплатные кредиты NVIDIA NIM** — интегрировано 1000 бесплатных кредитов.
-- **Стратегия оптимизации затрат** — стратегия маршрутизации, которая автоматически выбирает самого дешевого доступного провайдера.
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. «Мне нужно защитить мой AI-шлюз от несанкционированного доступа»
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-При предоставлении доступа к сети AI-шлюза (LAN, VPS, Docker) любой, у кого есть адрес, может использовать токены/квоту разработчика. Без защиты API уязвимы для неправильного использования, быстрого внедрения и злоупотреблений.
+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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Управление ключами API** — генерация, ротация и определение области действия для каждого поставщика с помощью специальной страницы `/dashboard/api-manager`.
-- **Разрешения на уровне модели** — Ограничьте использование ключей API определенными моделями (`openai/*`, шаблоны подстановочных знаков) с помощью переключателя Разрешить все/Ограничить.
-- **API Endpoint Protection** — требует ключ для `/v1/models` и блокирует определенных поставщиков из списка.
-- **Auth Guard + защита CSRF** — все маршруты информационной панели защищены промежуточным программным обеспечением `withAuth` + токенами CSRF.
-- **Ограничитель скорости** — ограничение скорости для каждого IP с помощью настраиваемых окон.
-- **IP-фильтрация** — список разрешенных/блокированных для контроля доступа.
-- **Prompt Injection Guard** — очистка от вредоносных шаблонов подсказок.
-- **Шифрование AES-256-GCM** — неактивные учетные данные зашифрованы.
+- **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. «Мой провайдер вышел из строя, и я потерял процесс кодирования»
+🛑 6. "My provider went down and I lost my coding flow"
-Поставщики ИИ могут работать нестабильно, возвращать ошибки 5xx или достигать временных ограничений скорости. Если разработчик зависит от одного провайдера, его работу прерывают. Без автоматических выключателей повторные попытки могут привести к сбою приложения.
+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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Выключатель для каждого поставщика** — автоматическое открытие/закрытие с настраиваемыми пороговыми значениями и временем восстановления (закрыто/открыто/полуоткрыто).
-- **Экспоненциальная задержка** – прогрессивная задержка повторных попыток.
-- **Anti-Thundering Herd** — Мьютекс + защита семафора от одновременных штормов повторных попыток.
-- **Комбо-резервные цепочки** — в случае сбоя основного поставщика автоматически проходит через цепочку без вмешательства.
-- **Комбо-выключатель** — автоматически отключает неисправных поставщиков в комбинированной цепочке.
-- **Панель работоспособности** — мониторинг работоспособности, состояния автоматических выключателей, блокировки, статистика кэша, задержка p50/p95/p99.
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. «Настройка каждого инструмента искусственного интеллекта утомительна и повторяется»
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Разработчики используют Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Для каждого инструмента требуется своя конфигурация (конечная точка API, ключ, модель). Перенастройка при смене провайдера или модели — пустая трата времени.
+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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Панель инструментов CLI** — выделенная страница с настройкой в один клик Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline.
-- **Генератор конфигураций GitHub Copilot** — генерирует `chatLanguageModels.json` для кода VS с массовым выбором модели.
-- **Мастер адаптации** — пошаговая пошаговая настройка для начинающих пользователей.
-- **Одна конечная точка, все модели** — настройте `http://localhost:20128/v1` один раз и получите доступ к более чем 36 поставщикам услуг.
+- **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 67+ providers
-🔑 8. «Управление токенами OAuth от нескольких провайдеров — это ад»
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot — все используют OAuth 2.0 с токенами с истекающим сроком действия. Разработчикам необходимо постоянно проходить повторную аутентификацию, иметь дело с `client_secret is missing`, `redirect_uri_mismatch` и сбоями на удаленных серверах. OAuth в LAN/VPS особенно проблематичен.
+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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Автоматическое обновление токенов** — токены OAuth обновляются в фоновом режиме до истечения срока их действия.
-- **Встроенный OAuth 2.0 (PKCE)** — автоматический поток для Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow.
-- **OAuth с несколькими учетными записями** – несколько учетных записей для каждого провайдера посредством извлечения токена JWT/ID.
-- **OAuth LAN/Remote Fix** — обнаружение частного IP-адреса для `redirect_uri` + ручной режим URL-адреса для удаленных серверов.
-- **OAuth за Nginx** — использует `window.location.origin` для совместимости с обратным прокси-сервером.
-- **Руководство по удаленному OAuth** — пошаговое руководство по учетным данным Google Cloud на VPS/Docker.
+- **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. «Я не знаю, сколько и куда я трачу»
+📊 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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Панель анализа затрат** — отслеживание затрат на каждый токен и управление бюджетом для каждого поставщика.
-- **Ограничения бюджета на уровень** — потолок расходов на уровень, который запускает автоматический возврат к резервному варианту.
-- **Конфигурация цен на модель** — настраиваемые цены на модель.
-- **Статистика использования каждого ключа API** — количество запросов и временная метка последнего использования для каждого ключа.
-- **Панель аналитики** — карточки статистики, диаграмма использования модели, таблица поставщиков с показателями успеха и задержкой.
+- **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. «Я не могу диагностировать ошибки и проблемы в вызовах ИИ»
+🐛 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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Панель управления унифицированными журналами** — 4 вкладки: журналы запросов, журналы прокси, журналы аудита, консоль.
-- **Консольный просмотр журнала** — просмотрщик в режиме терминала в режиме реального времени с уровнями с цветовой кодировкой, автоматической прокруткой, поиском и фильтрацией.
-- **Журналы прокси-сервера SQLite** — постоянные журналы, сохраняющиеся после перезапуска сервера.
-- **Площадка транслятора (Translator Playground)** — 4 режима отладки: Площадка (перевод формата), Тестер чата (туда и обратно), Тестовый стенд (пакетный), Мониторинг в реальном времени (в режиме реального времени).
-- **Запрос телеметрии** — задержка p50/p95/p99 + отслеживание X-Request-Id
-- **Журналирование на основе файлов с ротацией** — перехватчик консоли записывает все в журнал JSON с ротацией на основе размера.
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. «Развертывание и обслуживание шлюза сложны»
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Установка, настройка и обслуживание прокси-сервера AI в различных средах (локальных, VPS, Docker, облаке) — трудоемкий процесс. Такие проблемы, как жестко запрограммированные пути, `EACCES` в каталогах, конфликты портов и кроссплатформенные сборки, добавляют проблем.
+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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **глобальная установка npm** — `npm install -g omniroute && omniroute` — выполнено
-- **Мультиплатформенность Docker** — встроенная версия AMD64 + ARM64 (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Профили Docker Compose** — `base` (без инструментов CLI) и `cli` (с Claude Code, Codex, OpenClaw)
-- **Electron Desktop App** — собственное приложение для Windows/macOS/Linux с панелью задач, автозапуском и автономным режимом.
-- **Режим разделения портов** — API и панель мониторинга на отдельных портах для расширенных сценариев (обратный прокси-сервер, сеть контейнеров).
-- **Cloud Sync** — синхронизация конфигурации между устройствами через Cloudflare Workers.
-- **Резервные копии БД** — автоматическое резервное копирование, восстановление, экспорт и импорт всех настроек.
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. «Интерфейс только на английском языке, и моя команда не говорит по-английски»
+🌍 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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Панель управления i18n — 30 языков** — Все более 500 клавиш переведены, включая арабский, болгарский, датский, немецкий, испанский, финский, французский, иврит, хинди, венгерский, индонезийский, итальянский, японский, корейский, малайский, голландский, норвежский, польский, португальский (PT/BR), румынский, русский, словацкий, шведский, тайский, украинский, вьетнамский, китайский, филиппинский, английский
-- **Поддержка RTL** — поддержка написания справа налево для арабского языка и иврита.
-- **Многоязычные файлы README** — 30 полных переводов документации.
-- **Выбор языка** — значок глобуса в заголовке для переключения в реальном времени.
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. «Мне нужно больше, чем просто чат — мне нужны вложения, изображения, аудио»
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-ИИ — это не просто завершение чата. Разработчикам необходимо генерировать изображения, расшифровывать аудио, создавать вложения для RAG, изменять ранжирование документов и модерировать контент. Каждый API имеет свою конечную точку и формат.
+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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Встраивания** — `/v1/embeddings` с 6 поставщиками и более чем 9 моделями.
-- **Генерация изображений** — `/v1/images/generations` с 10 поставщиками и более чем 20 моделями (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigradity, SD WebUI, ComfyUI)
-- **Преобразование текста в видео** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) и SD WebUI.
-- **Преобразование текста в музыку** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
-- **Аудиотранскрипция** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Преобразование текста в речь** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT и + существующие поставщики
-- **Модерация** — `/v1/moderations` — Проверка безопасности контента.
-- **Реранжирование** — `/v1/rerank` — Изменение ранжирования релевантности документа.
-- **API ответов** — полная поддержка `/v1/responses` для Кодекса.
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. «У меня нет возможности тестировать и сравнивать качество разных моделей»
+🧪 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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Оценки LLM** — тестирование золотого набора с 10 предварительно загруженными вариантами, охватывающими приветствия, математику, географию, генерацию кода, соответствие JSON, перевод, уценку, отказ от безопасности.
-- **4 стратегии сопоставления** — `exact`, `contains`, `regex`, `custom` (функция JS)
-- **Тестовый стенд (Testbed)** — пакетное тестирование с несколькими входными данными и ожидаемыми результатами, сравнение между поставщиками.
-- **Тестер чата** — полный цикл с визуальным отображением ответов.
-- **Живой монитор** — поток всех запросов, проходящих через прокси, в реальном времени.
+- **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. «Мне нужно масштабироваться без потери производительности»
+📈 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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Семантический кеш** — двухуровневый кеш (сигнатура + семантика) снижает стоимость и задержку.
-- **Request Idempotency** — окно дедупликации 5 с для идентичных запросов.
-- **Обнаружение ограничения скорости** — число оборотов в минуту для каждого провайдера, минимальный разрыв и максимальное одновременное отслеживание.
-- **Редактируемые ограничения скорости** — настраиваемые значения по умолчанию в меню «Настройки» → «Устойчивость с постоянством».
-- **Кэш проверки ключей API** — трехуровневый кеш для повышения производительности.
-- **Панель состояния с телеметрией** — задержка p50/p95/p99, статистика кэша, время безотказной работы.
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. «Я хочу глобально контролировать поведение модели»
+🤖 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.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- **Внедрение системных подсказок** — глобальное приглашение применяется ко всем запросам.
-- **Продуманная проверка бюджета** — контроль распределения токенов для каждого запроса (сквозной, автоматический, пользовательский, адаптивный)
-- **6 стратегий маршрутизации** — глобальные стратегии, определяющие распределение запросов.
-- **Маршрутизатор с подстановочными знаками** — шаблоны `provider/*` динамически маршрутизируются к любому поставщику.
-- **Переключение/включение комбо** — переключение комбо непосредственно с панели управления.
-- **Переключение поставщика** — включение/отключение всех подключений к провайдеру одним щелчком мыши.
-- **Заблокированные поставщики** — исключить определенных поставщиков из списка `/v1/models`.
+- **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
-🧰 17. «Мне нужны инструменты MCP как первоклассные возможности продукта»
+🧰 17. "I need MCP tools as first-class product capabilities"
-Многие шлюзы AI предоставляют MCP только как скрытую деталь реализации. Командам нужен видимый и управляемый операционный уровень.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- MCP отображается на панели навигации панели управления и на вкладке протокола конечной точки.
-- Отдельная страница управления MCP с процессами, инструментами, объемами работ и аудитом.
-- Встроенное краткое руководство по `omniroute --mcp` и адаптации клиентов.
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. «Мне нужна оркестровка A2A с путями задач синхронизации и потоковой передачи»
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Рабочие процессы агента требуют как прямых ответов, так и длительного потокового выполнения с контролем жизненного цикла.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- Конечная точка A2A JSON-RPC (`POST /a2a`) с `message/send` и `message/stream`.
-- Потоковая передача SSE с распространением состояния терминала
-- API жизненного цикла задач для `tasks/get` и `tasks/cancel`.
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. «Мне нужно реальное состояние процесса MCP, а не угаданный статус»
+🛰️ 19. "I need real MCP process health, not guessed status"
-Оперативным группам необходимо знать, действительно ли MCP работает, а не только доступен ли API.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- Файл контрольного сигнала времени выполнения с PID, временными метками, транспортом, количеством инструментов и режимом области действия.
-- API статуса MCP, объединяющий пульс + недавнюю активность
-- Карты состояния пользовательского интерфейса для актуальности процессов, времени безотказной работы и пульса.
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. «Мне нужно проверяемое выполнение инструмента MCP»
+📋 20. "I need auditable MCP tool execution"
-Когда инструменты изменяют конфигурацию или запускают действия операционной системы, командам необходима судебно-медицинская отслеживаемость.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- Ведение журнала аудита на основе SQLite для вызовов инструментов MCP.
-- Фильтры по инструменту, успеху/неуспеху, ключу API и нумерации страниц.
-- Таблица аудита панели мониторинга + конечные точки статистики для автоматизации
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. «Мне нужны ограниченные разрешения MCP для каждой интеграции»
+🔐 21. "I need scoped MCP permissions per integration"
-Разные клиенты должны иметь минимальный доступ к категориям инструментов.
+Different clients should have least-privilege access to tool categories.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- 9 детальных областей MCP для контролируемого доступа к инструментам
-- Обеспечение соблюдения границ и видимость в пользовательском интерфейсе управления MCP.
-- Безопасное положение по умолчанию для рабочих инструментов.
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. «Мне нужен оперативный контроль без передислокации»
+⚙️ 22. "I need operational controls without redeploying"
-Командам необходимы быстрые изменения во время выполнения во время инцидентов или событий, связанных с затратами.
+Teams need quick runtime changes during incidents or cost events.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- Переключение комбо-активации прямо с панели управления MCP.
-- Применение профилей устойчивости из предварительно определенных пакетов политик.
-- Сброс состояния автоматического выключателя с той же панели управления.
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. «Мне нужна оперативная видимость и отмена жизненного цикла задачи A2A»
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Без прозрачности жизненного цикла инциденты с задачами становится трудно сортировать.
+Without lifecycle visibility, task incidents become hard to triage.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- Список задач/фильтрация по состоянию/навыку с нумерацией страниц
-- Детализация метаданных задачи, событий и артефактов.
-- Конечная точка отмены задачи и действие пользовательского интерфейса с подтверждением.
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. «Мне нужны метрики активного потока для загрузки A2A»
+🌊 24. "I need active stream metrics for A2A load"
-Рабочие процессы потоковой передачи требуют оперативного понимания параллелизма и живых соединений.
+Streaming workflows require operational insight into concurrency and live connections.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- Счетчики активных потоков интегрированы в статус A2A
-- Временная метка последней задачи и количество состояний
-- Карты информационной панели A2A для мониторинга операций в реальном времени.
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. «Мне нужно стандартное обнаружение агента для клиентов»
+🪪 25. "I need standard agent discovery for clients"
-Внешним клиентам и оркестраторам для адаптации необходимы машиночитаемые метаданные.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- Карта агента открыта по адресу `/.well-known/agent.json`.
-- Возможности и навыки, отображаемые в пользовательском интерфейсе управления.
-- API статуса A2A включает метаданные обнаружения для автоматизации.
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. «Мне нужна возможность обнаружения протокола в UX продукта»
+🧭 26. "I need protocol discoverability in the product UX"
-Если пользователи не могут обнаружить поверхности протокола, качество внедрения и поддержки снижается.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- Записи на боковой панели для MCP и A2A.
-- Вкладка «Протоколы» на странице конечной точки с быстрым запуском и статусом.
-- Ссылки из обзора на специальные панели управления.
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. «Мне нужна сквозная проверка протокола с реальными клиентами»
+🧪 27. "I need end-to-end protocol validation with real clients"
-Пробных тестов недостаточно для проверки совместимости протокола перед выпуском.
+Mock tests are not enough to validate protocol compatibility before release.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- Пакет E2E, который загружает приложение и использует настоящий клиентский транспорт MCP SDK.
-- Клиент A2A тестирует потоки обнаружения, отправки, потоковой передачи, получения и отмены.
-- Перекрестная проверка утверждений с помощью API-интерфейсов аудита MCP и задач A2A.
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. «Мне нужна унифицированная наблюдаемость на всех интерфейсах»
+📡 28. "I need unified observability across all interfaces"
-Разделение наблюдаемости по протоколам создает «слепые зоны» и увеличивает MTTR.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- Унифицированные дашборды/логи/аналитика в одном продукте
-- Здоровье + аудит + телеметрия запросов на уровнях OpenAI, MCP и A2A.
-- Операционные API для статуса и автоматизации
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. «Мне нужна одна среда выполнения для прокси + инструментов + оркестровки агентов»
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Запуск множества отдельных служб увеличивает эксплуатационные расходы и количество видов сбоев.
+Running many separate services increases operational cost and failure modes.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- OpenAI-совместимый прокси, сервер MCP и сервер A2A в одном стеке
-- Общая аутентификация, устойчивость, хранилище данных и наблюдаемость.
-- Согласованная модель политики на всех поверхностях взаимодействия.
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. «Мне нужно реализовать агентские рабочие процессы без разрастания связующего кода»
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Команды теряют скорость при объединении нескольких специальных сервисов и сценариев.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Как OmniRoute решает эту проблему:**
+**How OmniRoute solves it:**
-- Единая стратегия конечных точек для клиентов и агентов
-- Встроенные пользовательские интерфейсы управления протоколами и пути проверки дыма.
-- Готовые к работе основы (безопасность, ведение журналов, отказоустойчивость, резервное копирование)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Примеры сборников сценариев (интегрированные варианты использования)
+### Example Playbooks (Integrated Use Cases)
-**Пособие А: максимальное использование платной подписки + дешевое резервное копирование**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -683,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Пособие Б: стек кодирования с нулевой стоимостью**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -695,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Пособие C: Всегда работающая резервная цепочка 24 часа в сутки, 7 дней в неделю**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -708,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Сборник D: Операции агента с помощью MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Быстрый старт
+## 🆓 Start Free — Zero Configuration Cost
-**1. Установите глобально:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Быстрый старт
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Dashboard открывается на `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Команда | Описание |
-| ----------------------- | ------------------------------------------ |
-| `omniroute` | Запустить сервер (порт по умолчанию 20128) |
-| `omniroute --port 3000` | Использовать другой порт |
-| `omniroute --no-open` | Не открывать браузер автоматически |
-| `omniroute --help` | Показать справку |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Подключите БЕСПЛАТНОГО провайдера:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Dashboard → Провайдеры → Подключить **Claude Code** или **Antigravity** → OAuth вход → Готово!
+Optional split-port mode:
-**3. Используйте в CLI-инструменте:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Настройки:
- Endpoint: http://localhost:20128/v1
- API Key: [скопируйте из dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**Готово!** Начните программировать с БЕСПЛАТНЫМИ AI-моделями.
+### 2) Connect providers and create your API key
-**Альтернатива — запуск из исходного кода:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-OmniRoute доступен как публичный Docker-образ на [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Быстрый запуск:**
+**Quick run:**
```bash
docker run -d \
@@ -777,10 +855,10 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**С файлом окружения:**
+**With environment file:**
```bash
-# Скопируйте и отредактируйте .env
+# Copy and edit .env first
cp .env.example .env
docker run -d \
@@ -792,295 +870,627 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Используя Docker Compose:**
+**Using Docker Compose:**
```bash
-# Базовый профиль (без CLI-инструментов)
+# Base profile (no CLI tools)
docker compose --profile base up -d
-# CLI-профиль (Claude Code, Codex, OpenClaw встроены)
+# CLI profile (Claude Code, Codex, OpenClaw built-in)
docker compose --profile cli up -d
```
-| Образ | Тег | Размер | Описание |
-| ------------------------ | -------- | ------ | -------------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | Последний стабильный релиз |
-| `diegosouzapw/omniroute` | `1.0.6` | ~250MB | Текущая версия |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
+## 🖥️ Desktop App — Offline & Always-On
-## 🖥️
+> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
-> 🆕 **НОВИНКА!** OmniRoute теперь доступен как **нативное настольное приложение** для Windows, macOS и Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
-- 🖥️ **Нативное Окно** — Выделенное окно с интеграцией в системный трей
-- 🔄 **Автозапуск** — Запуск OmniRoute при входе в систему
-- 🔔 **Нативные Уведомления** — Оповещения об исчерпании квоты
-- ⚡ **Установка в Один Клик** — NSIS (Windows), DMG (macOS), AppImage (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 # Режим разработки
-npm run electron:build # Текущая платформа
+# Development mode
+npm run electron:dev
+
+# Build for your platform
+npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
-📖 Полная документация: [`electron/README.md`](electron/README.md)
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
+📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Обзор цен
+## 💰 Pricing at a Glance
-| Tier | Провайдер | Стоимость | Сброс квоты | Лучше всего для |
-| ----------------- | ----------------- | ----------------------------- | ------------------ | -------------------------------- |
-| **💳 ПОДПИСКА** | Claude Code (Pro) | $20/мес | 5ч + еженедельно | Уже подписан |
-| | Codex (Plus/Pro) | $20-200/мес | 5ч + еженедельно | Пользователи OpenAI |
-| | Gemini CLI | **БЕСПЛАТНО** | 180K/мес + 1K/день | Все! |
-| | GitHub Copilot | $10-19/мес | Ежемесячно | Пользователи GitHub |
-| **🔑 API KEY** | NVIDIA NIM | **БЕСПЛАТНО** (1000 кредитов) | Одноразово | Бесплатное тестирование |
-| | DeepSeek | По использованию | Нет | Лучшее соотношение цена/качество |
-| | Groq | Беспл. уровень + платный | Ограничено | Сверхбыстрый вывод |
-| | xAI (Grok) | По использованию | Нет | Модели Grok |
-| | Mistral | Беспл. уровень + платный | Ограничено | Европейский AI |
-| | OpenRouter | По использованию | Нет | 100+ моделей |
-| **💰 ДЕШЁВЫЙ** | GLM-4.7 | $0.6/1M | Ежедневно 10ч | Бюджетный бэкап |
-| | MiniMax M2.1 | $0.2/1M | 5ч ротация | Самый дешёвый вариант |
-| | Kimi K2 | $9/мес фикс | 10M токенов/мес | Предсказуемая цена |
-| **🆓 БЕСПЛАТНЫЙ** | iFlow | $0 | Неограниченно | 8 бесплатных моделей |
-| | Qwen | $0 | Неограниченно | 3 бесплатные модели |
-| | Kiro | $0 | Неограниченно | Claude бесплатно |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Совет:** Начните с Gemini CLI (180K бесплатно/мес) + iFlow (неограниченно бесплатно) = $0!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Основные функции
+---
-### 🧠 Маршрутизация и интеллект
+## 🆓 Free Models — What You Actually Get
-| Функция | Что делает |
-| ------------------------------------------- | ----------------------------------------------------------------------------- |
-| 🎯 **Умный 4-уровневый Fallback** | Авто-маршрутизация: Подписка → API Key → Дешёвый → Бесплатный |
-| 📊 **Отслеживание квот в реальном времени** | Счётчик токенов в реальном времени + обратный отсчёт до сброса |
-| 🔄 **Трансляция формата** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro бесшовно |
-| 👥 **Мульти-аккаунт** | Несколько аккаунтов на провайдера с интеллектуальным выбором |
-| 🔄 **Автообновление токенов** | OAuth-токены обновляются автоматически с повторами |
-| 🎨 **Пользовательские комбо** | 6 стратегий: fill-first, round-robin, p2c, random, least-used, cost-optimized |
-| 🧩 **Пользовательские модели** | Добавьте любой ID модели к любому провайдеру |
-| 🌐 **Wildcard-маршрутизатор** | Маршрутизируйте паттерны `provider/*` к любому провайдеру динамически |
-| 🧠 **Бюджет рассуждений** | Режимы passthrough, auto, custom и adaptive для моделей рассуждений |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **Инъекция System Prompt** | Глобальный system prompt для всех запросов |
-| 📄 **API Responses** | Полная поддержка OpenAI Responses API (`/v1/responses`) для Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 Мультимодальные API
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Функция | Что делает |
-| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Генерация изображений** | `/v1/images/generations` — 4 провайдера, 9+ моделей |
-| 📐 **Embeddings** | `/v1/embeddings` — 6 провайдеров, 9+ моделей |
-| 🎤 **Транскрипция аудио** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Текст в речь** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Модерация** | `/v1/moderations` — Проверки безопасности контента |
-| 🔀 **Reranking** | `/v1/rerank` — Переранжирование релевантности |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Устойчивость и безопасность
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| Функция | Что делает |
-| -------------------------------- | -------------------------------------------------------------------------------------- |
-| 🔌 **Circuit Breaker** | Авто-открытие/закрытие по провайдеру с настраиваемыми порогами |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🛡️ **Anti-Thundering Herd** | Mutex + семафор для API key провайдеров |
-| 🧠 **Семантический кеш** | Двухуровневый кеш (сигнатура + семантика) снижает стоимость |
-| ⚡ **Идемпотентность запросов** | 5с окно дедупликации для дублирующихся запросов |
-| 🔒 **Спуфинг TLS Fingerprint** | Обход обнаружения ботов через wreq-js |
-| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
-| 🌐 **Фильтрация IP** | Allowlist/blocklist для контроля доступа к API |
-| 📊 **Настраиваемые Rate Limits** | Настраиваемые RPM, минимальный интервал, макс. конкуррентность |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 Наблюдаемость и аналитика
+### 🟡 QWEN MODELS (Device Code Auth)
-| Функция | Что делает |
-| -------------------------------- | ------------------------------------------------------------------------ |
-| 📝 **Логи запросов** | Режим debug с полными логами запросов/ответов |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **Логи SQLite** | Постоянные proxy-логи переживают перезапуски |
-| 📊 **Dashboard аналитики** | Recharts: карточки статистики, график использования, таблица провайдеров |
-| 📈 **Отслеживание прогресса** | Opt-in SSE-события прогресса для стриминга |
-| 🧪 **Оценки LLM** | Тестирование с golden set и 4 стратегиями сравнения |
-| 🔍 **Телеметрия запросов** | Агрегация латентности p50/p95/p99 + трекинг X-Request-Id |
-| 📋 **Логи + Квоты** | Отдельные страницы для просмотра логов и отслеживания квот |
-| 🏥 **Dashboard здоровья** | Uptime, состояния circuit breaker, блокировки, статистика кеша |
-| 💰 **Отслеживание стоимости** | Управление бюджетом + настройка цен по моделям |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ Деплой и синхронизация
+### 🟣 GEMINI CLI (Google OAuth)
-| Функция | Что делает |
-| -------------------------- | --------------------------------------------------------------------------- |
-| 💾 **Cloud Sync** | Синхронизация настроек между устройствами через Cloudflare Workers |
-| 🌐 **Деплой куда угодно** | Localhost, VPS, Docker, Cloudflare Workers |
-| 🔑 **Управление API Keys** | Генерация, ротация и настройка scope API keys по провайдерам |
-| 🧙 **Мастер настройки** | 4-шаговая настройка для новых пользователей |
-| 🔧 **Dashboard CLI Tools** | Настройка в один клик для Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **Бэкапы БД** | Автоматическое резервное копирование и восстановление всех настроек |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Подробности функций
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Умный 4-уровневый Fallback
+Start MCP transport in stdio mode:
-Создавайте комбо с автоматическим fallback:
-
-```
-Combo: "my-coding-stack"
- 1. cc/claude-opus-4-6 (ваша подписка)
- 2. nvidia/llama-3.3-70b (бесплатный NVIDIA API)
- 3. glm/glm-4.7 (дешёвый бэкап, $0.6/1M)
- 4. if/kimi-k2-thinking (бесплатный fallback)
-
-→ Автоматически переключается при исчерпании квоты или ошибках
+```bash
+omniroute --mcp
```
-### 📊 Отслеживание квот в реальном времени
+Recommended validation flow:
-- Потребление токенов по провайдерам
-- Обратный отсчёт до сброса (5 часов, ежедневно, еженедельно)
-- Оценка стоимости для платных уровней
-- Ежемесячные отчёты о расходах
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Трансляция формата
+Useful APIs for automation:
-Бесшовная трансляция между форматами:
-
-- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
-- Ваш CLI отправляет формат OpenAI → OmniRoute транслирует → Провайдер получает нативный формат
-- Работает с любым инструментом, поддерживающим пользовательские OpenAI endpoints
-
-### 👥 Мульти-аккаунт
-
-- Добавляйте несколько аккаунтов на провайдера
-- Автоматический round-robin или маршрутизация по приоритету
-- Fallback на следующий аккаунт при исчерпании квоты
-
-### 🔄 Автообновление токенов
-
-- OAuth-токены обновляются автоматически до истечения
-- Без необходимости ручной повторной аутентификации
-- Бесшовный опыт по всем провайдерам
-
-### 🎨 Пользовательские комбо
-
-- Создавайте неограниченные комбинации моделей
-- 6 стратегий: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
-- Делитесь комбо между устройствами с Cloud Sync
-
-### 🏥 Dashboard здоровья
-
-- Статус системы (uptime, версия, использование памяти)
-- Состояния circuit breaker по провайдерам (Closed/Open/Half-Open)
-- Статус rate limit и активные блокировки
-- Статистика кеша сигнатур
-- Телеметрия латентности (p50/p95/p99) + кеш промптов
-- Сброс состояния здоровья одним кликом
-
-### 🔧 Playground транслятора
-
-- Отладка, тестирование и визуализация трансляции форматов API
-- Отправляйте запросы и смотрите, как OmniRoute транслирует между форматами провайдеров
-- Бесценно для устранения проблем интеграции
-
-### 💾 Cloud Sync
-
-- Синхронизация провайдеров, комбо и настроек между устройствами
-- Автоматическая фоновая синхронизация
-- Безопасное шифрованное хранилище
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Оценки (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute включает встроенный фреймворк оценки для тестирования качества ответов LLM по golden set. Доступ через **Analytics → Evals** в dashboard.
+Discover the agent:
-### Встроенный Set
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-Предзагруженный «OmniRoute Golden Set» содержит 10 тестов:
+Send a task:
-- Приветствия, математика, география, генерация кода
-- Соответствие формату JSON, перевод, markdown
-- Отказ от небезопасного контента (Safety refusal), подсчёт, булева логика
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Стратегии оценки
+Manage lifecycle:
-| Стратегия | Описание | Пример |
-| ---------- | ----------------------------------------------------- | -------------------------------- |
-| `exact` | Вывод должен совпадать точно | `"4"` |
-| `contains` | Вывод должен содержать подстроку (без учёта регистра) | `"Paris"` |
-| `regex` | Вывод должен соответствовать regex-паттерну | `"1.*2.*3"` |
-| `custom` | Пользовательская JS-функция возвращает true/false | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Руководство по настройке
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Провайдеры по подписке
+🧪 End-to-end protocol validation
+
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
### Claude Code (Pro/Max)
```bash
-Dashboard → Провайдеры → Подключить Claude Code
-→ OAuth вход → Автообновление токенов
-→ Отслеживание квоты 5ч + еженедельно
+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
```
-**Совет:** Используйте Opus для сложных задач, Sonnet для скорости. OmniRoute отслеживает квоту по моделям!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
```bash
-Dashboard → Провайдеры → Подключить Codex
-→ OAuth вход (порт 1455)
-→ Сброс 5ч + еженедельно
+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 (БЕСПЛАТНО 180K/мес!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
-Dashboard → Провайдеры → Подключить Gemini CLI
+Dashboard → Providers → Connect Gemini CLI
→ Google OAuth
-→ 180K completions/мес + 1K/день
+→ 180K completions/month + 1K/day
-Модели:
+Models:
gc/gemini-3-flash-preview
gc/gemini-2.5-pro
```
-**Лучшая ценность:** Огромный бесплатный уровень! Используйте перед платными.
+**Best Value:** Huge free tier! Use this before paid tiers.
### GitHub Copilot
```bash
-Dashboard → Провайдеры → Подключить GitHub
-→ OAuth через GitHub
-→ Ежемесячный сброс (1-е число)
+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
@@ -1089,95 +1499,95 @@ Dashboard → Провайдеры → Подключить GitHub
-🔑 Провайдеры по API Key
+🔑 API Key Providers
-### NVIDIA NIM (БЕСПЛАТНО 1000 кредитов!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Регистрация: [build.nvidia.com](https://build.nvidia.com)
-2. Получите бесплатный API key (1000 кредитов включены)
-3. Dashboard → Добавить провайдера → NVIDIA NIM:
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
- API Key: `nvapi-your-key`
-**Модели:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` и 50+ других
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Совет:** OpenAI-совместимый API — работает идеально с трансляцией форматов OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Регистрация: [platform.deepseek.com](https://platform.deepseek.com)
-2. Получите API key
-3. Dashboard → Добавить провайдера → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Модели:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (Бесплатный уровень доступен!)
+### Groq (Free Tier Available!)
-1. Регистрация: [console.groq.com](https://console.groq.com)
-2. Получите API key (бесплатный уровень включён)
-3. Dashboard → Добавить провайдера → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Модели:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Совет:** Сверхбыстрый вывод — лучший для программирования в реальном времени!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (100+ моделей)
+### OpenRouter (100+ Models)
-1. Регистрация: [openrouter.ai](https://openrouter.ai)
-2. Получите API key
-3. Dashboard → Добавить провайдера → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Модели:** Доступ к 100+ моделям от всех основных провайдеров через один API key.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Дешёвые провайдеры (Бэкап)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (Ежедневный сброс, $0.6/1M)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Регистрация: [Zhipu AI](https://open.bigmodel.cn/)
-2. Получите API key из Coding Plan
-3. Dashboard → Добавить API Key:
- - Провайдер: `glm`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
- API Key: `your-key`
-**Используйте:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Совет:** Coding Plan предлагает 3× квоту по цене 1/7! Ежедневный сброс в 10:00.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (Сброс 5ч, $0.20/1M)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Регистрация: [MiniMax](https://www.minimax.io/)
-2. Получите API key
-3. Dashboard → Добавить API Key
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Используйте:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Совет:** Самый дешёвый вариант для длинного контекста (1M токенов)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 ($9/мес фикс)
+### Kimi K2 ($9/month flat)
-1. Подпишитесь: [Moonshot AI](https://platform.moonshot.ai/)
-2. Получите API key
-3. Dashboard → Добавить API Key
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Используйте:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Совет:** Фикс $9/мес за 10M токенов = $0.90/1M эффективная стоимость!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 БЕСПЛАТНЫЕ провайдеры (Аварийный бэкап)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 БЕСПЛАТНЫХ моделей)
+### iFlow (5 FREE models via OAuth)
```bash
-Dashboard → Подключить iFlow
-→ OAuth вход iFlow
-→ Неограниченное использование
+Dashboard → Connect iFlow
+→ iFlow OAuth login
+→ Unlimited usage
-Модели:
+Models:
if/kimi-k2-thinking
if/qwen3-coder-plus
if/glm-4.7
@@ -1185,26 +1595,26 @@ Dashboard → Подключить iFlow
if/deepseek-r1
```
-### Qwen (3 БЕСПЛАТНЫЕ модели)
+### Qwen (4 FREE models via Device Code)
```bash
-Dashboard → Подключить Qwen
-→ Авторизация по коду устройства
-→ Неограниченное использование
+Dashboard → Connect Qwen
+→ Device code authorization
+→ Unlimited usage
-Модели:
+Models:
qw/qwen3-coder-plus
qw/qwen3-coder-flash
```
-### Kiro (Claude БЕСПЛАТНО)
+### Kiro (Claude FREE)
```bash
-Dashboard → Подключить Kiro
-→ AWS Builder ID или Google/GitHub
-→ Неограниченное использование
+Dashboard → Connect Kiro
+→ AWS Builder ID or Google/GitHub
+→ Unlimited usage
-Модели:
+Models:
kr/claude-sonnet-4.5
kr/claude-haiku-4.5
```
@@ -1212,51 +1622,51 @@ Dashboard → Подключить Kiro
-🎨 Создание комбо
+🎨 Create Combos
-### Пример 1: Максимизация подписки → Дешёвый бэкап
+### Example 1: Maximize Subscription → Cheap Backup
```
-Dashboard → Комбо → Создать новое
+Dashboard → Combos → Create New
-Название: premium-coding
-Модели:
- 1. cc/claude-opus-4-6 (Основная подписка)
- 2. glm/glm-4.7 (Дешёвый бэкап, $0.6/1M)
- 3. minimax/MiniMax-M2.1 (Самый дешёвый fallback, $0.20/1M)
+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)
-Используйте в CLI: premium-coding
+Use in CLI: premium-coding
```
-### Пример 2: Только бесплатные (Нулевая стоимость)
+### Example 2: Free-Only (Zero Cost)
```
-Название: free-combo
-Модели:
- 1. gc/gemini-3-flash-preview (180K бесплатно/мес)
- 2. if/kimi-k2-thinking (неограниченно)
- 3. qw/qwen3-coder-plus (неограниченно)
+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)
-Стоимость: $0 навсегда!
+Cost: $0 forever!
```
-🔧 Интеграция с CLI
+🔧 CLI Integration
### Cursor IDE
```
-Настройки → Модели → Расширенные:
+Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
- OpenAI API Key: [из dashboard OmniRoute]
+ OpenAI API Key: [from OmniRoute dashboard]
Model: cc/claude-opus-4-6
```
### Claude Code
-Используйте страницу **CLI Tools** в dashboard для настройки в один клик, или редактируйте `~/.claude/settings.json` вручную.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1269,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Вариант 1 — Dashboard (рекомендуется):**
+**Option 1 — Dashboard (recommended):**
```
-Dashboard → CLI Tools → OpenClaw → Выбрать модель → Применить
+Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Вариант 2 — Вручную:** Редактируйте `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1291,155 +1701,420 @@ Dashboard → CLI Tools → OpenClaw → Выбрать модель → При
}
```
-> **Примечание:** OpenClaw работает только с локальным OmniRoute. Используйте `127.0.0.1` вместо `localhost` для избежания проблем с IPv6.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
### Cline / Continue / RooCode
```
-Настройки → Конфигурация API:
- Провайдер: OpenAI Compatible
+Settings → API Configuration:
+ Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
- API Key: [из dashboard OmniRoute]
+ API Key: [from OmniRoute dashboard]
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Устранение неполадок
+## Устранение неполадок
-Нажмите для раскрытия руководства
+Click to expand troubleshooting guide
-**«Language model did not provide messages»**
+**"Language model did not provide messages"**
-- Квота провайдера исчерпана → Проверьте трекер квот в dashboard
-- Решение: Используйте комбо с fallback или переключитесь на более дешёвый уровень
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
**Rate limiting**
-- Квота подписки исчерпана → Fallback на GLM/MiniMax
-- Добавьте комбо: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**OAuth-токен истёк**
+**OAuth token expired**
-- Обновляется автоматически OmniRoute
-- Если проблема сохраняется: Dashboard → Провайдер → Переподключить
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Высокие расходы**
+**High costs**
-- Проверьте статистику в Dashboard → Расходы
-- Переключите основную модель на GLM/MiniMax
-- Используйте бесплатный уровень (Gemini CLI, iFlow) для некритичных задач
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Dashboard открывается на неправильном порту**
+**Dashboard/API ports are wrong**
-- Установите `PORT=20128` и `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Ошибки cloud sync**
+**Cloud sync errors**
-- Проверьте что `BASE_URL` указывает на ваш запущенный экземпляр
-- Проверьте что `CLOUD_URL` указывает на правильный облачный endpoint
-- Держите значения `NEXT_PUBLIC_*` синхронизированными с серверными значениями
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Первый вход не работает**
+**First login not working**
-- Проверьте `INITIAL_PASSWORD` в `.env`
-- Если не задан, пароль по умолчанию `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Нет логов запросов**
+**No request logs**
-- Установите `ENABLE_REQUEST_LOGS=true` в `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Тест подключения показывает «Invalid» для OpenAI-совместимых провайдеров**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Многие провайдеры не предоставляют endpoint `/models`
-- OmniRoute v1.0.6+ включает fallback-валидацию через chat completions
-- Убедитесь что base URL содержит суффикс `/v1`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
+
+### 🔐 OAuth on a Remote Server
+
+
+
+
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
+
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
+
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
+
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solution: Configure your own OAuth credentials
+
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
+
+#### Passo a passo
+
+**1. Acesse o Google Cloud Console**
+
+Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Crie um novo OAuth 2.0 Client ID**
+
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
+
+**3. Adicione as Authorized Redirect URIs**
+
+No campo **"Authorized redirect URIs"**, adicione:
+
+```
+https://seu-servidor.com/callback
+```
+
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
+
+**4. Salve e copie as credenciais**
+
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
+
+**5. Configure as variáveis de ambiente**
+
+No seu `.env` (ou nas variáveis de ambiente do Docker):
+
+```bash
+# Para Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+
+# Para Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+```
+
+**6. Reinicie o OmniRoute**
+
+```bash
+# Se usando npm:
+npm run dev
+
+# Se usando Docker:
+docker restart omniroute
+```
+
+**7. Tente conectar novamente**
+
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
+
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
+
+---
+
+#### Workaround temporário (sem configurar credenciais próprias)
+
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
+
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
+4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
+5. Clique em **"Connect"**
+
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **Runtime**: Node.js 20+
-- **Язык**: TypeScript 5.9 — **100% TypeScript** в `src/` и `open-sse/` (v1.0.6)
+## 🛠️ Tech Stack
+
+
+Click to expand tech stack details
+
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
-- **База данных**: LowDB (JSON) + SQLite (состояние домена + proxy-логи)
-- **Стриминг**: Server-Sent Events (SSE)
-- **Аутентификация**: OAuth 2.0 (PKCE) + JWT + API Keys
-- **Тестирование**: Node.js test runner (368+ юнит-тестов)
-- **CI/CD**: GitHub Actions (авто-публикация npm + Docker Hub при релизе)
-- **Сайт**: [omniroute.online](https://omniroute.online)
-- **Пакет**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
-- **Устойчивость**: Circuit breaker, экспоненциальный backoff, anti-thundering herd, TLS-спуфинг
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
+
+
---
-## 📖 Документация
+## Документация
-| Документ | Описание |
-| ----------------------------------------------- | ------------------------------------------------ |
-| [Руководство пользователя](docs/USER_GUIDE.md) | Провайдеры, комбо, интеграция CLI, деплой |
-| [Справка API](docs/API_REFERENCE.md) | Все endpoints с примерами |
-| [Устранение неполадок](docs/TROUBLESHOOTING.md) | Частые проблемы и решения |
-| [Архитектура](docs/ARCHITECTURE.md) | Архитектура системы и внутреннее устройство |
-| [Как внести вклад](CONTRIBUTING.md) | Настройка разработки и руководящие принципы |
-| [Спецификация OpenAPI](docs/openapi.yaml) | Спецификация OpenAPI 3.0 |
-| [Политика безопасности](SECURITY.md) | Сообщение об уязвимостях и практики безопасности |
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 🗺️
+## 🗺️ Roadmap
-## 👥 Участники
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Как внести вклад
+### How to Contribute
-1. Сделайте fork репозитория
-2. Создайте ветку функции (`git checkout -b feature/amazing-feature`)
-3. Зафиксируйте изменения (`git commit -m 'Add amazing feature'`)
-4. Отправьте в ветку (`git push origin feature/amazing-feature`)
-5. Откройте Pull Request
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-См. [CONTRIBUTING.md](CONTRIBUTING.md) для подробных рекомендаций.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Выпуск новой версии
+### Releasing a New Version
```bash
-# Создайте релиз — публикация в npm происходит автоматически
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+# Create a release — npm publish happens automatically
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 История звёзд
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Благодарности
+## 🙏 Acknowledgments
-Особая благодарность **[9router](https://github.com/decolua/9router)** от **[decolua](https://github.com/decolua)** — оригинальному проекту, вдохновившему этот форк. OmniRoute строится на этом невероятном фундаменте с дополнительными функциями, мультимодальными API и полной переписью на TypeScript.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Особая благодарность **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — оригинальной реализации на Go, вдохновившей этот порт на JavaScript.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Лицензия
+## Лицензия
-Лицензия MIT — см. [LICENSE](LICENSE) для подробностей.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Сделано с ❤️ для разработчиков, которые программируют 24/7
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/ru/docs/FEATURES.md b/docs/i18n/ru/docs/FEATURES.md
new file mode 100644
index 0000000000..ebd04b398b
--- /dev/null
+++ b/docs/i18n/ru/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Русский)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/sk/README.md b/docs/i18n/sk/README.md
index 22b63f9154..6311e66867 100644
--- a/docs/i18n/sk/README.md
+++ b/docs/i18n/sk/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — bezplatná brána AI
+# 🚀 OmniRoute — The Free AI Gateway (Slovenčina)
-### Nikdy neprestávajte kódovať. Inteligentné smerovanie na **BEZPLATNÉ a nízkonákladové modely AI** s automatickým vrátením.
-
-_Váš univerzálny proxy server API – jeden koncový bod, 36+ poskytovateľov, nulové prestoje._
-
-**Dokončenia četov • Vkladanie • Generovanie obrázkov • Zvuk • Zmena hodnotenia • 100 % TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Bezplatný poskytovateľ AI pre vašich obľúbených kódovacích agentov
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Pripojte akýkoľvek nástroj IDE alebo CLI poháňaný AI cez OmniRoute – bezplatnú bránu API pre neobmedzené kódovanie._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _Pripojte akýkoľvek nástroj IDE alebo CLI poháňaný AI cez OmniRoute – be
|
-📡 Všetci agenti sa pripájajú cez http://localhost:20128/v1 alebo http://cloud.omniroute one/v1 modely a kvóta
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Prečo OmniRoute?
-
-**Prestaňte plytvať peniazmi a dosahovať limity:**
-
--
Kvóta odberu vyprší nevyužitá každý mesiac
--
Obmedzenia sadzieb vás zastavia uprostred kódovania
--
drahé rozhrania API (20 – 50 USD mesačne na poskytovateľa)
--
Manuálne prepínanie medzi poskytovateľmi
-
-**OmniRoute to rieši:**
-
-- ✅ **Maximalizujte odbery** - Sledujte kvótu, pred resetovaním použite každý bit
-- ✅ **Automatická záloha** - Predplatné → Kľúč API → Lacné → Bezplatne, nulové prestoje
-- ✅ **Viaceré účty** - Obojstranne medzi účtami na poskytovateľa
-- ✅ **Universal** - Funguje s Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, akýmkoľvek nástrojom CLI
-
----
-
-## 📧 Podpora
-
-> 💬 **Pripojte sa k našej komunite!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Získajte pomoc, zdieľajte tipy a buďte informovaní.
-
-- **Web**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **Problémy**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Pôvodný projekt**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Ako to funguje
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,455 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 Čo OmniRoute rieši — 30 bodov skutočnej bolesti a prípadov použitia
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Každý vývojár, ktorý používa nástroje AI, čelí týmto problémom denne.** OmniRoute bol vytvorený tak, aby ich všetky vyriešil – od prekročenia nákladov po regionálne bloky, od prerušených tokov OAuth po operácie protokolov a pozorovateľnosť podniku.
+> **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 protocol operations and enterprise observability.
-💸 1. „Platím za drahé predplatné, ale stále ma prerušujú limity“
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Vývojári platia za Claude Pro, Codex Pro alebo GitHub Copilot 20 – 200 dolárov mesačne. Aj pri platení má kvóta strop – 5 hodín používania, týždenné limity alebo limity za minútu. Počas relácie kódovania poskytovateľ prestane reagovať a vývojár stráca tok a produktivitu.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **Inteligentný 4-úrovňový záložný systém** – Ak sa vyčerpá kvóta predplatného, automaticky sa presmeruje na kľúč API → Lacné → Zadarmo s nulovým manuálnym zásahom
-- **Sledovanie kvóty v reálnom čase** – Zobrazuje spotrebu tokenov v reálnom čase s resetovaným odpočítavaním (5 hodín, denne, týždenne)
- – **Podpora viacerých účtov** – Viacero účtov na poskytovateľa s automatickým opakovaním – keď sa jeden minie, prepne sa na ďalší
- – **Vlastné kombá** – Prispôsobiteľné záložné reťazce so 6 stratégiami vyvažovania (najskôr vyplniť, opakovane, P2C, náhodné, najmenej používané, nákladovo optimalizované)
-- **Codex Business Quotas** — Monitorovanie kvót pracovného priestoru pre firmy/tím priamo na paneli
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. „Potrebujem použiť viacerých poskytovateľov, ale každý má iné API“
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI používa jeden formát, Claude (Anthropic) iný a Gemini ďalší. Ak chce vývojár testovať modely od rôznych poskytovateľov alebo medzi nimi záložné riešenie, musí prekonfigurovať súpravy SDK, zmeniť koncové body, vysporiadať sa s nekompatibilnými formátmi. Vlastní poskytovatelia (FriendLI, NIM) majú neštandardné modelové koncové body.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **Unified Endpoint** – Jediný `http://localhost:20128/v1` slúži ako proxy pre všetkých 36+ poskytovateľov
-- **Formátový preklad** — Automatický a transparentný: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
- – **Dezinfekcia odozvy** – Odstráni neštandardné polia (`x_groq`, `usage_breakdown`, `service_tier`), ktoré porušujú OpenAI SDK v1.83+
-- **Normalizácia rolí** – Konvertuje `developer` → `system` pre poskytovateľov, ktorí nie sú OpenAI; `system` → `user` pre GLM/ERNIE
- – **Think Tag Extraction** – Extrahuje bloky `` z modelov ako DeepSeek R1 do štandardizovaných `reasoning_content`
-- **Štruktúrovaný výstup pre Gemini** — `json_schema` → automatická konverzia `responseMimeType`/`responseSchema`
-- **`stream` predvolene je `false`** — Zosúladí sa so špecifikáciou OpenAI, čím sa zabráni neočakávanému SSE v súpravách Python/Rust/Go SDK
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. „Môj poskytovateľ AI blokuje môj región/krajinu“
+🌐 3. "My AI provider blocks my region/country"
-Poskytovatelia ako OpenAI/Codex blokujú prístup z určitých geografických oblastí. Používatelia dostanú chyby ako `unsupported_country_region_territory` počas pripojení OAuth a API. To je frustrujúce najmä pre vývojárov z rozvojových krajín.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **Konfigurácia proxy servera na troch úrovniach** – Konfigurovateľný server proxy na 3 úrovniach: globálny (celá prevádzka), podľa jednotlivých poskytovateľov (iba jeden poskytovateľ) a podľa pripojenia/kľúča
-- **Farebné odznaky proxy** — Vizuálne indikátory: 🢢 globálny proxy, 🟡 proxy poskytovateľa, 🔵 proxy pripojenia, vždy zobrazuje IP
- – **Výmena tokenov OAuth cez proxy** – tok OAuth prechádza aj cez proxy, čím sa rieši `unsupported_country_region_territory`
-- **Testy pripojenia cez proxy** – Testy pripojenia používajú nakonfigurovaný proxy (už žiadne priame obchádzanie)
-- **Podpora SOCKS5** — Úplná podpora proxy SOCKS5 pre odchádzajúce smerovanie
-- **TLS Fingerprint Spoofing** – Odtlačok prsta TLS podobný prehliadaču cez `wreq-js` na obídenie detekcie robotov
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. „Chcem použiť AI na kódovanie, ale nemám peniaze“
+🆓 4. "I want to use AI for coding but I have no money"
-Nie každý môže platiť 20 – 200 $ mesačne za predplatné AI. Študenti, vývojári z rozvíjajúcich sa krajín, fanúšikovia a nezávislí pracovníci potrebujú prístup ku kvalitným modelom za nulové náklady.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **Zabudovaní poskytovatelia bezplatnej úrovne** — Natívna podpora pre 100 % bezplatných poskytovateľov: iFlow (8 neobmedzených modelov), Qwen (3 neobmedzené modely), Kiro (Claude zdarma), Gemini CLI (180 000/mesiac zdarma)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Len bezplatné kombá** — Reťaz `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 0 USD/mesiac s nulovými prestojmi
-- **Bezplatné kredity NVIDIA NIM** – integrovaných 1 000 bezplatných kreditov
-- **Cost Optimized Strategy** – Stratégia smerovania, ktorá automaticky vyberie najlacnejšieho dostupného poskytovateľa
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. „Potrebujem chrániť svoju bránu AI pred neoprávneným prístupom“
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Pri vystavení brány AI do siete (LAN, VPS, Docker) môže ktokoľvek s adresou spotrebovať tokeny/kvótu vývojára. Bez ochrany sú rozhrania API náchylné na nesprávne použitie, rýchle vloženie a zneužitie.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-– **Správa kľúčov API** – Generovanie, rotácia a rozsah podľa poskytovateľa s vyhradenou stránkou `/dashboard/api-manager`
-– **Povolenia na úrovni modelu** – Obmedzenie kľúčov API na konkrétne modely (`openai/*`, vzory zástupných znakov) s prepínačom Povoliť všetko/Obmedziť
-– **API Endpoint Protection** – Vyžadovať kľúč pre `/v1/models` a blokovať konkrétnych poskytovateľov zo zoznamu
-
-- **Auth Guard + ochrana CSRF** - Všetky trasy na dashboarde sú chránené middlevérom `withAuth` + tokenmi CSRF
-- **Rate Limiter** — Obmedzenie rýchlosti na IP pomocou konfigurovateľných okien
-- **IP Filtering** — Zoznam povolených/blokovaných pre riadenie prístupu
-- **Prompt Injection Guard** – Dezinfekcia proti škodlivým vzorom výzvy
-- **Šifrovanie AES-256-GCM** — Prihlasovacie údaje sú v pokoji zašifrované
+- **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. „Môj poskytovateľ zlyhal a stratil som tok kódovania“
+🛑 6. "My provider went down and I lost my coding flow"
-Poskytovatelia AI sa môžu stať nestabilnými, vrátiť chyby 5xx alebo dosiahnuť dočasné limity sadzieb. Ak vývojár závisí od jedného poskytovateľa, bude prerušený. Bez ističov môžu opakované pokusy zlyhať aplikáciu.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **Istič pre každého poskytovateľa** — Automatické otváranie/zatváranie s konfigurovateľnými prahmi a chladením (zatvorené/otvorené/polootvorené)
-- **Exponenciálne stiahnutie** — Postupné oneskorenie opakovania
-- **Anti-Thundering Herd** - ochrana Mutex + semafor proti súbežným opakovaným búrkam
-- **Combo Fallback Chains** – Ak primárny poskytovateľ zlyhá, automaticky prepadne reťazcom bez akéhokoľvek zásahu
-- **Combo Circuit Breaker** – Automaticky deaktivuje zlyhávajúcich poskytovateľov v rámci kombinovaného reťazca
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
- – **Health Dashboard** – Monitorovanie dostupnosti, stavy ističov, blokovania, štatistiky vyrovnávacej pamäte, latencia p50/p95/p99
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. „Konfigurácia každého nástroja AI je únavná a opakovaná“
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Vývojári používajú Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Každý nástroj potrebuje inú konfiguráciu (API endpoint, kľúč, model). Prekonfigurovanie pri zmene poskytovateľa alebo modelu je strata času.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **CLI Tools Dashboard** – Vyhradená stránka s nastavením jedným kliknutím pre Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
- – **GitHub Copilot Config Generator** – Generuje `chatLanguageModels.json` pre kód VS s hromadným výberom modelu
-- **Sprievodca registráciou** – Sprievodca nastavením v 4 krokoch pre začínajúcich používateľov
- – **Jeden koncový bod, všetky modely** – Nakonfigurujte `http://localhost:20128/v1` raz a získajte prístup k viac ako 36 poskytovateľom
+- **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 67+ providers
-🔑 8. „Správa tokenov OAuth od viacerých poskytovateľov je peklo“
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot – všetky používajú OAuth 2.0 s tokenmi, ktorých platnosť sa končí. Vývojári sa musia neustále znovu overovať, riešiť `client_secret is missing`, `redirect_uri_mismatch` a zlyhania na vzdialených serveroch. Obzvlášť problematické je OAuth na LAN/VPS.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **Automatická obnova tokenov** – Tokeny OAuth sa pred vypršaním platnosti obnovujú na pozadí
-- **Vstavaný OAuth 2.0 (PKCE)** – Automatický tok pre Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
- – **Multi-Auth OAuth** – Viaceré účty na poskytovateľa prostredníctvom extrakcie tokenov JWT/ID
-- **Oprava OAuth LAN/Remote** — Detekcia súkromnej adresy IP pre `redirect_uri` + manuálny režim adresy URL pre vzdialené servery
-- **OAuth Behind Nginx** - Používa `window.location.origin` na reverznú kompatibilitu proxy
- – **Príručka vzdialeného OAuth** – Podrobný sprievodca povereniami Google Cloud na VPS/Docker
+- **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. "Neviem, koľko míňam alebo kde"
+📊 9. "I don't know how much I'm spending or where"
-Vývojári využívajú viacerých platených poskytovateľov, ale nemajú jednotný pohľad na výdavky. Každý poskytovateľ má svoj vlastný informačný panel fakturácie, ale neexistuje žiadne konsolidované zobrazenie. Neočakávané náklady sa môžu nahromadiť.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-– **Informačný panel analýzy nákladov** – sledovanie nákladov na token a správa rozpočtu podľa poskytovateľa
-
-- **Obmedzenia rozpočtu na úroveň** – Strop výdavkov na úroveň, ktorý spúšťa automatické záložné právo
-- **Konfigurácia cien za model** – Konfigurovateľné ceny za model
-- **Štatistiky používania na kľúč API** – Počet žiadostí a časová pečiatka posledného použitia na kľúč
- – **Panel Analytics** – štatistické karty, graf používania modelu, tabuľka poskytovateľov s mierami úspešnosti a latenciou
+- **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. „Nedokážem diagnostikovať chyby a problémy vo volaniach AI“
+🐛 10. "I can't diagnose errors and problems in AI calls"
-Keď hovor zlyhá, vývojár nevie, či to bol limit sadzby, vypršaný token, nesprávny formát alebo chyba poskytovateľa. Fragmentované protokoly cez rôzne terminály. Bez pozorovateľnosti je ladenie metódou pokus-omyl.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-– **Panel jednotných protokolov** – 4 karty: Protokoly žiadostí, Protokoly proxy, Protokoly auditu, Konzola
-
-- **Console Log Viewer** — Prehliadač v štýle terminálu v reálnom čase s farebne odlíšenými úrovňami, automatickým posúvaním, vyhľadávaním a filtrovaním
-- **Proxy protokoly SQLite** — Trvalé protokoly, ktoré prežijú reštart servera
-- **Translator Playground** – 4 režimy ladenia: Playground (preklad formátu), Chat Tester (spiatočný), Test Bench (dávka), Live Monitor (v reálnom čase)
- – **Požiadať o telemetriu** – latencia p50/p95/p99 + sledovanie X-request-Id
- – **Protokolovanie založené na súboroch s rotáciou** – Konzolový zachytávač zachytáva všetko do protokolu JSON s rotáciou na základe veľkosti
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. „Nasadenie a údržba brány je zložitá“
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Inštalácia, konfigurácia a údržba AI proxy v rôznych prostrediach (lokálne, VPS, Docker, cloud) je náročná na prácu. Problémy ako pevne zakódované cesty, `EACCES` v adresároch, konflikty portov a zostavy naprieč platformami zvyšujú trenie.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **Globálna inštalácia npm** — `npm install -g omniroute && omniroute` — hotovo
-- **Docker Multi-Platform** – natívne AMD64 + ARM64 (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Profily Docker Compose** — `base` (bez nástrojov CLI) a `cli` (s Claude Code, Codex, OpenClaw)
-- **Electron Desktop App** – natívna aplikácia pre Windows/macOS/Linux so systémovou lištou, automatickým spustením, offline režimom
-- **Split-Port Mode** – API a Dashboard na samostatných portoch pre pokročilé scenáre (reverzný proxy, kontajnerová sieť)
-- **Cloud Sync** — Synchronizácia konfigurácie medzi zariadeniami cez Cloudflare Workers
-- **DB Backups** — Automatické zálohovanie, obnovenie, export a import všetkých nastavení
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. „Rozhranie je len v angličtine a môj tím nehovorí po anglicky“
+🌍 12. "The interface is English-only and my team doesn't speak English"
-Tímy v neanglicky hovoriacich krajinách, najmä v Latinskej Amerike, Ázii a Európe, zápasia s rozhraním iba v angličtine. Jazykové bariéry znižujú prijatie a zvyšujú chyby v konfigurácii.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **Dashboard i18n — 30 jazykov** — Všetkých 500+ kláves preložených vrátane arabčiny, bulharčiny, dánčiny, nemčiny, španielčiny, fínčiny, francúzštiny, hebrejčiny, hindčiny, maďarčiny, indonézštiny, taliančiny, japončiny, kórejčiny, malajčiny, holandčiny, nórčiny, poľštiny, portugalčiny (PT/BR), rumunčiny, ruštiny, slovenčiny, švédčiny, thajčiny, ukrajinčiny, vietnamčiny, angličtiny
-- **Podpora RTL** — Podpora sprava doľava pre arabčinu a hebrejčinu
-- **Viacjazyčné README** — 30 kompletných prekladov dokumentácie
-- **Language Selector** – ikona zemegule v hlavičke pre prepínanie v reálnom čase
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. „Potrebujem viac ako chat – potrebujem vloženie, obrázky, zvuk“
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-AI nie je len dokončenie chatu. Vývojári potrebujú generovať obrázky, prepisovať zvuk, vytvárať vloženia pre RAG, meniť hodnotenie dokumentov a moderovať obsah. Každé API má iný koncový bod a formát.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **Vloženie** — `/v1/embeddings` so 6 poskytovateľmi a 9+ modelmi
-- **Generácia obrazu** — `/v1/images/generations` s 10 poskytovateľmi a 20+ modelmi (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) a SD WebUI
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
-- **Prepis zvuku** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT a + existujúci poskytovatelia
-- **Moderácie** — `/v1/moderations` — Kontroly bezpečnosti obsahu
-- **Zmena poradia** — `/v1/rerank` — Zmena poradia relevantnosti dokumentu
-- **Responses API** – plná podpora `/v1/responses` pre kódex
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. „Nemám možnosť testovať a porovnávať kvalitu medzi modelmi“
+🧪 14. "I have no way to test and compare quality across models"
-Vývojári chcú vedieť, ktorý model je pre ich prípad použitia najlepší – kód, preklad, zdôvodnenie – ale manuálne porovnávanie je pomalé. Neexistujú žiadne integrované nástroje hodnotenia.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **Hodnotenia LLM** – testovanie zlatej sady s 10 predinštalovanými prípadmi zahŕňajúcimi pozdravy, matematiku, geografiu, generovanie kódu, súlad s JSON, preklad, označenie, odmietnutie bezpečnosti
-- **4 stratégie zhody** — `exact`, `contains`, `regex`, `custom` (funkcia JS)
-- **Testovacia lavica pre prekladateľské ihrisko** – dávkové testovanie s viacerými vstupmi a očakávanými výstupmi, porovnanie medzi poskytovateľmi
-- **Chat Tester** – celý spiatočný výlet s vykresľovaním vizuálnej odozvy
-- **Live Monitor** – tok všetkých požiadaviek prechádzajúcich cez server proxy v reálnom čase
+- **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. „Potrebujem škálovať bez straty výkonu“
+📈 15. "I need to scale without losing performance"
-Keďže objem žiadostí rastie, bez ukladania rovnakých otázok do vyrovnávacej pamäte vznikajú duplicitné náklady. Bez idempotencie duplikát požaduje spracovanie odpadu. Musia sa dodržiavať limity sadzieb na poskytovateľa.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **Sémantická vyrovnávacia pamäť** – Dvojvrstvová vyrovnávacia pamäť (podpis + sémantická) znižuje náklady a latenciu
-- **Idempotencia požiadavky** – 5-sekundové deduplikačné okno pre identické požiadavky
- – **Detekcia limitu rýchlosti** – RPM, minimálna medzera a maximálne súbežné sledovanie jednotlivých poskytovateľov
-- **Upraviteľné limity frekvencie** – Konfigurovateľné predvolené hodnoty v Nastaveniach → Odolnosť s perzistenciou
-- **Cache na overenie kľúča API** — 3-vrstvová vyrovnávacia pamäť pre produkčný výkon
- – **Panel zdravia s telemetriou** – latencia p50/p95/p99, štatistiky vyrovnávacej pamäte, doba prevádzky
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. „Chcem globálne ovládať správanie modelu“
+🤖 16. "I want to control model behavior globally"
-Vývojári, ktorí chcú všetky odpovede v konkrétnom jazyku, so špecifickým tónom alebo chcú obmedziť tokeny uvažovania. Konfigurovať to v každom nástroji/požiadavke je nepraktické.
+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.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- **System Prompt Injection** – Globálna výzva aplikovaná na všetky požiadavky
- – **Thinking Budget Validation** – Zdôvodnenie riadenia prideľovania tokenov na žiadosť (priechodné, automatické, vlastné, adaptívne)
-- **6 stratégií smerovania** — Globálne stratégie, ktoré určujú spôsob distribúcie požiadaviek
-- **Wildcard Router** — Vzory `provider/*` smerujú dynamicky k akémukoľvek poskytovateľovi
-- **Prepínač povoliť/zakázať kombo** — Prepínajte kombinácie priamo z ovládacieho panela
-- **Provider Toggle** — Povolenie/zakázanie všetkých pripojení pre poskytovateľa jedným kliknutím
- – **Blokovaní poskytovatelia** – vylúčte konkrétnych poskytovateľov zo zoznamu `/v1/models`
+- **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
-🧰 17. "Potrebujem nástroje MCP ako prvotriedne možnosti produktu"
+🧰 17. "I need MCP tools as first-class product capabilities"
-Mnohé brány AI odhaľujú MCP iba ako skrytý detail implementácie. Tímy potrebujú viditeľnú a spravovateľnú operačnú vrstvu.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- MCP sa zobrazí na navigačnom paneli a na karte protokolu koncového bodu
-- Vyhradená stránka správy MCP s procesmi, nástrojmi, rozsahmi a auditom
-- Vstavaný rýchly štart pre `omniroute --mcp` a registráciu klienta
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "Potrebujem orchestráciu A2A s cestami synchronizácie + streamovania"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Pracovné postupy agentov vyžadujú priame odpovede a dlhotrvajúce streamované vykonávanie s kontrolou životného cyklu.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- Koncový bod A2A JSON-RPC (`POST /a2a`) s `message/send` a `message/stream`
-- SSE streaming so šírením koncového stavu
-- Rozhrania API životného cyklu úloh pre `tasks/get` a `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. „Potrebujem skutočné zdravie procesu MCP, nie uhádnutý stav“
+🛰️ 19. "I need real MCP process health, not guessed status"
-Operačné tímy potrebujú vedieť, či je MCP skutočne nažive, nielen to, či je dostupné API.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- Súbor srdcového tepu za behu s PID, časovými pečiatkami, transportom, počtom nástrojov a režimom rozsahu
-- Stavové rozhranie MCP API, ktoré kombinuje srdcový tep + nedávnu aktivitu
-- Stavové karty používateľského rozhrania pre sviežosť procesu / dostupnosti / tepu
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "Potrebujem auditovateľné spustenie nástroja MCP"
+📋 20. "I need auditable MCP tool execution"
-Keď nástroje mutujú konfiguráciu alebo spúšťajú akcie operácií, tímy potrebujú forenznú sledovateľnosť.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- Záznamy auditu podporované SQLite pre volania nástrojov MCP
-- Filtre podľa nástroja, úspechu/neúspechu, kľúča API a stránkovania
-- Tabuľka auditu palubnej dosky + štatistické koncové body pre automatizáciu
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "Potrebujem povolenia MCP v rozsahu na jednu integráciu"
+🔐 21. "I need scoped MCP permissions per integration"
-Rôzni klienti by mali mať najmenej privilegovaný prístup ku kategóriám nástrojov.
+Different clients should have least-privilege access to tool categories.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- 9 zrnitých rozsahov MCP pre kontrolovaný prístup k nástrojom
-- Presadzovanie rozsahu a viditeľnosť v používateľskom rozhraní správy MCP
-- Bezpečná východisková poloha pre prevádzkové nástroje
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. „Potrebujem prevádzkové ovládacie prvky bez premiestňovania“
+⚙️ 22. "I need operational controls without redeploying"
-Tímy potrebujú rýchle zmeny runtime počas incidentov alebo nákladových udalostí.
+Teams need quick runtime changes during incidents or cost events.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- Aktivácia komba prepínača priamo z ovládacieho panela MCP
-- Použite profily odolnosti z preddefinovaných balíkov politík
-- Resetujte stav ističa z rovnakého ovládacieho panela
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. „Potrebujem viditeľnosť a zrušenie životného cyklu úlohy A2A“
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Bez viditeľnosti životného cyklu sa incidenty úloh ťažko triedia.
+Without lifecycle visibility, task incidents become hard to triage.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- Zoznam úloh / filtrovanie podľa stavu / zručnosti so stránkovaním
-- Rozbalenie metadát úloh, udalostí a artefaktov
-- Koncový bod zrušenia úlohy a akcia používateľského rozhrania s potvrdením
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. „Potrebujem aktívne metriky streamu pre načítanie A2A“
+🌊 24. "I need active stream metrics for A2A load"
-Streamovanie pracovných tokov vyžaduje operačný prehľad o súbežnosti a živých pripojeniach.
+Streaming workflows require operational insight into concurrency and live connections.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- Aktívne počítadlá toku integrované do stavu A2A
-- Časová pečiatka poslednej úlohy a počet jednotlivých štátov
-- Karty palubnej dosky A2A na monitorovanie operácií v reálnom čase
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "Potrebujem štandardné vyhľadávanie agentov pre klientov"
+🪪 25. "I need standard agent discovery for clients"
-Externí klienti a orchestrátori potrebujú strojovo čitateľné metadáta na integráciu.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- Karta agenta vystavená na `/.well-known/agent.json`
-- Schopnosti a zručnosti zobrazené v používateľskom rozhraní správy
-- API stavu A2A obsahuje metaúdaje zisťovania pre automatizáciu
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "Potrebujem zistiteľnosť protokolu v UX produktu"
+🧭 26. "I need protocol discoverability in the product UX"
-Ak používatelia nemôžu objaviť povrchy protokolov, kvalita prijatia a podpory klesá.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- Položky na bočnom paneli pre MCP a A2A
-- Koncový bod Karta Protokoly s rýchlym spustením a stavom
-- Odkazy z prehľadu na špecializované riadiace panely
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "Potrebujem komplexné overenie protokolu so skutočnými klientmi"
+🧪 27. "I need end-to-end protocol validation with real clients"
-Falošné testy nestačia na overenie kompatibility protokolu pred vydaním.
+Mock tests are not enough to validate protocol compatibility before release.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- E2E balík, ktorý spúšťa aplikáciu a využíva skutočný prenos klienta MCP SDK
-- Klient A2A testuje toky zisťovania, odosielania, streamovania, získavania a rušenia
-- Krížová kontrola tvrdení proti auditu MCP a API úloh A2A
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. „Potrebujem jednotnú pozorovateľnosť naprieč všetkými rozhraniami“
+📡 28. "I need unified observability across all interfaces"
-Rozdelenie pozorovateľnosti podľa protokolu vytvára slepé miesta a dlhšie MTTR.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- Zjednotené informačné panely / protokoly / analýzy v jednom produkte
-- Zdravie + audit + telemetria požiadaviek cez vrstvy OpenAI, MCP a A2A
-- Operačné API pre stav a automatizáciu
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "Potrebujem jeden runtime pre proxy + nástroje + orchestráciu agentov"
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Prevádzka mnohých samostatných služieb zvyšuje prevádzkové náklady a spôsoby zlyhania.
+Running many separate services increases operational cost and failure modes.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- Proxy, server MCP a server A2A kompatibilný s OpenAI v jednom zásobníku
-- Zdieľaná autentifikácia, odolnosť, ukladanie údajov a pozorovateľnosť
-- Konzistentný model politiky na všetkých interakčných plochách
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. „Potrebujem odoslať agentské pracovné postupy bez roztiahnutia kódu lepidla“
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Tímy strácajú rýchlosť pri spájaní viacerých ad-hoc služieb a skriptov.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Ako to rieši OmniRoute:**
+**How OmniRoute solves it:**
-- Jednotná stratégia koncových bodov pre klientov a agentov
-- Vstavané používateľské rozhrania na správu protokolov a cesty overovania dymu
-- Základy pripravené na výrobu (zabezpečenie, protokolovanie, odolnosť, zálohovanie)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Príklady príručiek (integrované prípady použitia)
+### Example Playbooks (Integrated Use Cases)
-**Príručka A: Maximalizujte platené predplatné + lacné zálohovanie**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -687,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Príručka B: Balík kódovania s nulovými nákladmi**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -699,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Príručka C: 24/7 vždy zapnutý záložný reťazec**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -712,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Príručka D: Operačný program agenta s MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Rýchly štart
+## 🆓 Start Free — Zero Configuration Cost
-**1. Inštalovať globálne:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Rýchly štart
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Dashboard sa otvára o `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Príkaz | Popis |
-| ----------------------- | -------------------------------------- |
-| `omniroute` | Spustiť server (predvolený port 20128) |
-| `omniroute --port 3000` | Použiť vlastný port |
-| `omniroute --no-open` | Neotvárať automaticky prehliadač |
-| `omniroute --help` | Zobraziť pomoc |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Pripojte BEZPLATNÉHO poskytovateľa:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Dashboard → Poskytovatelia → Pripojiť **Claude Code** alebo **Antigravity** → Prihlásenie OAuth → Hotovo!
+Optional split-port mode:
-**3. Použitie v nástroji CLI:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**To je všetko!** Začnite kódovať s modelmi AI ZDARMA.
+### 2) Connect providers and create your API key
-**Alternatíva – spustiť zo zdroja:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-OmniRoute je k dispozícii ako verejný obrázok Docker na [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Rýchly beh:**
+**Quick run:**
```bash
docker run -d \
@@ -781,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**So súborom prostredia:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -796,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Pomocou Docker Compose:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -806,256 +880,550 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| Obrázok | Tag | Veľkosť | Popis |
-| ------------------------ | -------- | ------- | -------------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250 MB | Najnovšie stabilné vydanie |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250 MB | Aktuálna verzia |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+### Rýchly štart
+
```bash
-npm run electron:dev # Development mode
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Prehľad cien
+## 💰 Pricing at a Glance
-| Úroveň | Poskytovateľ | Náklady | Obnovenie kvóty | Najlepšie pre |
-| ----------------- | ----------------- | --------------------------- | ---------------------------- | --------------------------- |
-| **💳 PREDPLATNÉ** | Claude Code (Pro) | 20 USD/mesiac | 5h + týždenne | Už prihlásené |
-| | Codex (Plus/Pro) | 20 – 200 USD/mesiac | 5h + týždenne | Používatelia OpenAI |
-| | Gemini CLI | **ZADARMO** | 180 tis./mesiac + 1 tis./deň | Všetci! |
-| | GitHub Copilot | 10 – 19 USD/mes. | Mesačne | Používatelia GitHubu |
-| **🔑 API KEY** | NVIDIA NIM | **ZADARMO** (1000 kreditov) | Jednorazovo | Bezplatné testovanie úrovní |
-| | DeepSeek | Platba za použitie | Žiadne | Najlepšia cena/kvalita |
-| | Groq | Voľná úroveň + platené | Obmedzená sadzba | Ultra-rýchle odvodenie |
-| | xAI (Grok) | Platba za použitie | Žiadne | Modely Grok |
-| | Mistral | Voľná úroveň + platené | Obmedzená sadzba | Európska AI |
-| | OpenRouter | Platba za použitie | Žiadne | 100+ modelov |
-| **💰 LACNO** | GLM-4,7 | 0,6 USD/1 milión | Denne 10:00 | Záloha rozpočtu |
-| | MiniMax M2.1 | 0,2 USD/1 milión | 5-hodinové valcovanie | Najlacnejšia možnosť |
-| | Kimi K2 | 9 USD/mesiac byt | 10 miliónov tokenov/mesiac | Predvídateľné náklady |
-| **🆓 ZDARMA** | iFlow | 0 USD | Neobmedzené | 8 modelov zadarmo |
-| | Qwen | 0 USD | Neobmedzené | 3 modely zadarmo |
-| | Kiro | 0 USD | Neobmedzené | Claude zadarmo |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Tip pre profesionálov:** Začnite s kombináciou Gemini CLI (180 000 zadarmo/mesiac) + iFlow (neobmedzene zadarmo) = cena 0 $!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Kľúčové vlastnosti
+---
-### 🧠 Základné smerovanie a inteligencia
+## 🆓 Free Models — What You Actually Get
-| Funkcia | Čo to robí |
-| --------------------------------------------- | ----------------------------------------------------------------------------------------------- |
-| 🎯 **Inteligentná 4-úrovňová núdzová záloha** | Automatická trasa: Predplatné → Kľúč API → Lacné → Zadarmo |
-| 📊 **Sledovanie kvóty v reálnom čase** | Živý počet tokenov + reset odpočítavania na poskytovateľa |
-| 🔄 **Formátový preklad** | OpenAI ↔ Claude ↔ Gemini ↔ Kurzor ↔ Kiro bezšvové + dezinfekcia |
-| 👥 **Podpora viacerých účtov** | Viac účtov na poskytovateľa s inteligentným výberom |
-| 🔄 **Automatická obnova tokenov** | Tokeny OAuth sa automaticky obnovia s opätovným pokusom |
-| 🎨 **Vlastné kombá** | 6 stratégií: fill-first, round-robin, p2c, random, najmenej používané, nákladovo optimalizované |
-| 🧩 **Vlastné modely** | Pridajte akékoľvek ID modelu k akémukoľvek poskytovateľovi |
-| 🌐 **Wildcard Router** | Dynamicky smerujte vzory `provider/*` k akémukoľvek poskytovateľovi |
-| 🧠 **Premýšľajúci rozpočet** | Priechodný, automatický, vlastný a adaptívny režim pre modely uvažovania |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **Promptné vstrekovanie systému** | Globálna systémová výzva aplikovaná na všetky požiadavky |
-| 📄 **Responses API** | Plná podpora OpenAI Responses API (`/v1/responses`) pre Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 Multimodálne API
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Funkcia | Čo to robí |
-| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Generovanie obrázkov** | `/v1/images/generations` — 4 poskytovatelia, 9+ modelov |
-| 📐 **Vloženie** | `/v1/embeddings` — 6 poskytovateľov, 9+ modelov |
-| 🎤 **Prepis zvuku** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Prevod textu na reč** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Moderovania** | `/v1/moderations` — Kontroly bezpečnosti obsahu |
-| 🔀 **Reranking** | `/v1/rerank` — Zmena poradia relevantnosti dokumentu |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Odolnosť a bezpečnosť
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| Funkcia | Čo to robí |
-| ------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
-| 🔌 **Istič** | Automatické otváranie/zatváranie podľa poskytovateľa s konfigurovateľnými prahmi |
-| 🛡️ **Anti-hromové stádo** | Mutex + limit rýchlosti semaforu pre poskytovateľov kľúčov API |
-| 🧠 **Sémantická vyrovnávacia pamäť** | Dvojvrstvová vyrovnávacia pamäť (podpis + sémantika) znižuje náklady a latenciu |
-| ⚡ **Požiadajte o idempotenciu** | 5-sekundové okno na odstránenie duplicitných požiadaviek |
-| 🔒 ** Spoofing odtlačkov prstov TLS** | Obíďte detekciu botov na báze TLS cez wreq-js |
-| 🌐 **Filtrovanie IP** | Zoznam povolených/blokovaných pre riadenie prístupu API |
-| 📊 **Upraviteľné limity sadzieb** | Konfigurovateľné otáčky za minútu, minimálna medzera a maximálna súbežná rýchlosť na systémovej úrovni |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **API Endpoint Protection** | Auth gating + blokovanie poskytovateľa pre koncový bod `/models` |
-| 🔒 **Viditeľnosť proxy** | Farebne rozlíšené odznaky: 🟢 globálne, 🟡 poskytovateľ, 🔵 na pripojenie s IP displejom |
-| 🌐 **3-úrovňová konfigurácia proxy** | Nakonfigurujte proxy na globálnej úrovni, na úrovni jednotlivých poskytovateľov alebo na úrovni pripojenia |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 Pozorovateľnosť a analytika
+### 🟡 QWEN MODELS (Device Code Auth)
-| Funkcia | Čo to robí |
-| ------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
-| 📝 **Požiadať o prihlásenie** | Režim ladenia s úplnými protokolmi požiadaviek/odpovedí |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **Proxy protokoly SQLite** | Trvalé protokoly proxy prežijú reštart servera |
-| 📊 **Hlavný panel služby Analytics** | Poháňané recharts: štatistické karty, graf používania modelu, tabuľka poskytovateľov |
-| 📈 **Sledovanie pokroku** | Prihlásiť udalosti priebehu SSE pre streamovanie |
-| 🧪 **Hodnotenia LLM** | Testovanie zlatého setu so 4 stratégiami zápasu |
-| 🔍 **Požiadať o telemetriu** | p50/p95/p99 agregácia latencie + sledovanie X-request-Id |
-| 📋 **Hlavný panel denníkov** | Jednotná 4-kartová stránka: Protokoly požiadaviek, Protokoly proxy, Protokoly auditu, Konzola |
-| 🖥️ **Prehliadač denníka konzoly** | Prehliadač v terminálovom štýle v reálnom čase s filtrom úrovní, vyhľadávaním, automatickým posúvaním |
-| 📑 **Protokolovanie založené na súboroch** | Konzolový zachytávač zachytáva všetok výstup do súboru protokolu JSON s rotáciou |
-| 🏥 **Panel zdravia** | Doba prevádzky systému, stavy ističov, uzamknutia, štatistiky vyrovnávacej pamäte |
-| 💰 **Sledovanie nákladov** | Správa rozpočtu + konfigurácia cien podľa modelu |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ Nasadenie a synchronizácia
+### 🟣 GEMINI CLI (Google OAuth)
-| Funkcia | Čo to robí |
-| ------------------------------ | ------------------------------------------------------------------------------- |
-| 💾 **Cloud Sync** | Synchronizujte konfiguráciu medzi zariadeniami cez Cloudflare Workers |
-| 🌐 **Nasadenie kdekoľvek** | Localhost, VPS, Docker, Cloudflare Workers |
-| 🔑 **Správa kľúčov API** | Generovanie, rotácia a rozsah kľúčov API podľa poskytovateľa |
-| 🧙 **Sprievodca onboardingom** | 4-krokové vedené nastavenie pre začínajúcich používateľov |
-| 🔧 **CLI Tools Dashboard** | Konfigurácia Claude, Codex, Cline, OpenClaw, Kilo, Antigravity jedným kliknutím |
-| 🔄 **Zálohy DB** | Automatické zálohovanie, obnovenie, export a import všetkých nastavení |
-| 🌐 **Internacionalizácia** | Plný i18n s next-intl — podpora angličtiny + portugalčiny (Brazília) |
-| 🌍 **Výber jazyka** | Ikona zemegule v hlavičke na prepínanie jazyka v reálnom čase (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Custom Data Directory** | `DATA_DIR` env var na prepísanie predvolenej cesty úložiska `~/.omniroute` |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Podrobnosti funkcie
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Inteligentná 4-úrovňová núdzová záloha
+Start MCP transport in stdio mode:
-Vytvorte kombá s automatickým núdzovým nastavením:
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 Sledovanie kvóty v reálnom čase
+Recommended validation flow:
-- Spotreba tokenov na poskytovateľa
-- Vynulovať odpočítavanie (5 hodín, denne, týždenne)
-- Odhad nákladov pre platené úrovne
-- Mesačné správy o výdavkoch
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Preklad formátu
+Useful APIs for automation:
-Bezproblémový preklad medzi formátmi:
-
-– **OpenAI** ↔ **Claude** ↔ **Blíženci** ↔ **Odpovede OpenAI**
-
-- Váš nástroj CLI odošle formát OpenAI → OmniRoute preloží → Poskytovateľ dostane natívny formát
-- Funguje s akýmkoľvek nástrojom, ktorý podporuje vlastné koncové body OpenAI
-- **Dezinfekcia odozvy** – Odstráni neštandardné polia pre prísnu kompatibilitu OpenAI SDK
-- **Normalizácia rolí** — `developer` → `system` pre iné ako OpenAI; `system` → `user` pre modely GLM/ERNIE
-- **Extrahovanie značiek myslenia** — `` bloky → `reasoning_content` pre modely myslenia
-- **Štruktúrovaný výstup** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
-
-### 👥 Podpora viacerých účtov
-
-- Pridajte viac účtov na poskytovateľa
-- Automatické cyklické alebo prioritné smerovanie
-- Návrat k ďalšiemu účtu, keď jeden dosiahne kvótu
-
-### 🔄 Automatické obnovenie tokenu
-
-- Tokeny OAuth sa pred vypršaním platnosti automaticky obnovujú
-- Nie je potrebné manuálne opätovné overenie
-- Bezproblémové skúsenosti u všetkých poskytovateľov
-
-### 🎨 Vlastné kombinácie
-
-- Vytvárajte neobmedzené kombinácie modelov
-- 6 stratégií: vyplňte najskôr, cyklicky, sila dvoch možností, náhodné, najmenej používané, nákladovo optimalizované
-- Zdieľajte kombinácie medzi zariadeniami pomocou synchronizácie cloudu
-
-### 🏥 Panel zdravia
-
-- Stav systému (čas prevádzky, verzia, využitie pamäte)
-- Stavy ističov podľa poskytovateľa (zatvorené/otvorené/polootvorené)
-- Stav limitu sadzby a aktívne blokovania
-- Štatistika vyrovnávacej pamäte podpisov
-- Telemetria latencie (p50/p95/p99) + prompt cache
-- Obnovte zdravotný stav jedným kliknutím
-
-### 🔧 Ihrisko pre prekladateľov
-
-OmniRoute obsahuje výkonné vstavané ihrisko pre prekladateľov so **4 režimami** na ladenie, testovanie a monitorovanie prekladov API:
-
-| Režim | Popis |
-| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻 Ihrisko** | Priamy preklad formátu — vložte ľubovoľné telo požiadavky API a okamžite uvidíte, ako ju OmniRoute preloží medzi formátmi poskytovateľov (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Zahŕňa vzorové šablóny a automatickú detekciu formátu. |
-| **💬 Tester chatu** | Pošlite skutočné žiadosti o rozhovor cez OmniRoute a pozrite si celý spiatočný výlet: svoj vstup, preloženú žiadosť, odpoveď poskytovateľa a preloženú odpoveď späť. Neoceniteľné pre overenie kombinovaného smerovania. |
-| **🧪 Testovacia lavica** | Režim dávkového testovania – definujte viacero testovacích prípadov s rôznymi vstupmi a očakávanými výstupmi, spustite ich všetky naraz a porovnajte výsledky medzi poskytovateľmi a modelmi. |
-| **📱 Živý monitor** | Monitorovanie požiadaviek v reálnom čase – sledujte prichádzajúce požiadavky, ako prechádzajú cez OmniRoute, sledujte, ako prebiehajú preklady formátu naživo, a okamžite identifikujte problémy. |
-
-**Prístup:** Hlavný panel → Prekladač (bočný panel)
-
-### 💾 Cloud Sync
-
-- Synchronizujte poskytovateľov, kombinácie a nastavenia medzi zariadeniami
-- Automatická synchronizácia na pozadí
-- Bezpečné šifrované úložisko
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Hodnotenia (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute obsahuje vstavaný hodnotiaci rámec na testovanie kvality odozvy LLM oproti zlatému súboru. Prístup k nej získate cez **Analytics → Evals** na hlavnom paneli.
+Discover the agent:
-### Vstavaná zlatá súprava
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-Predinštalovaná sada „OmniRoute Golden Set“ obsahuje 10 testovacích prípadov, ktoré zahŕňajú:
+Send a task:
-- Pozdravy, matematika, geografia, generovanie kódu
-- Súlad s formátom JSON, preklad, zníženie
-- Bezpečnostné odmietnutie (škodlivý obsah), počítanie, booleovská logika
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Stratégie hodnotenia
+Manage lifecycle:
-| Stratégia | Popis | Príklad |
-| ---------- | ---------------------------------------------------------------------- | -------------------------------- |
-| `exact` | Výstup sa musí presne zhodovať | `"4"` |
-| `contains` | Výstup musí obsahovať podreťazec (nerozlišujú sa malé a veľké písmená) | `"Paris"` |
-| `regex` | Výstup musí zodpovedať vzoru regulárneho výrazu | `"1.*2.*3"` |
-| `custom` | Vlastná funkcia JS vracia true/false | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Sprievodca nastavením
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Poskytovatelia predplatného
+🧪 End-to-end protocol validation
+
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
### Claude Code (Pro/Max)
@@ -1070,7 +1438,7 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**Tip pre profesionálov:** Používajte Opus na zložité úlohy, Sonnet na rýchlosť. OmniRoute sleduje kvótu na model!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
@@ -1084,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (ZADARMO 180 000/mesiac!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1096,9 +1481,9 @@ Models:
gc/gemini-2.5-pro
```
-**Najlepšia hodnota:** Obrovská bezplatná úroveň! Použite to pred platenými úrovňami.
+**Best Value:** Huge free tier! Use this before paid tiers.
-### Kopilot GitHub
+### GitHub Copilot
```bash
Dashboard → Providers → Connect GitHub
@@ -1114,88 +1499,88 @@ Models:
-🔑 Kľúčoví poskytovatelia API
+🔑 API Key Providers
-### NVIDIA NIM (1 000 kreditov ZDARMA!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Zaregistrujte sa: [build.nvidia.com](https://build.nvidia.com)
-2. Získajte bezplatný kľúč API (vrátane 1 000 kreditov na odvodenie)
-3. Ovládací panel → Pridať poskytovateľa → NVIDIA NIM:
- - Kľúč API: `nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**Modely:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` a 50+ ďalších
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Tip pre profesionálov:** API kompatibilné s OpenAI – bezproblémovo funguje s prekladom formátu OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Zaregistrujte sa: [platform.deepseek.com](https://platform.deepseek.com)
-2. Získajte kľúč API
-3. Dashboard → Pridať poskytovateľa → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Modely:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (dostupná bezplatná úroveň!)
+### Groq (Free Tier Available!)
-1. Zaregistrujte sa: [console.groq.com](https://console.groq.com)
-2. Získajte kľúč API (vrátane bezplatnej úrovne)
-3. Dashboard → Pridať poskytovateľa → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Modely:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Tip pre profesionálov:** Ultra rýchle odvodenie – najlepšie pre kódovanie v reálnom čase!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (100+ modelov)
+### OpenRouter (100+ Models)
-1. Zaregistrujte sa: [openrouter.ai](https://openrouter.ai)
-2. Získajte kľúč API
-3. Dashboard → Pridať poskytovateľa → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Modely:** Získajte prístup k viac ako 100 modelom od všetkých hlavných poskytovateľov prostredníctvom jediného kľúča API.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Lacní poskytovatelia (záložné)
+💰 Cheap Providers (Backup)
-### GLM-4,7 (denný reset, 0,6 $/1 milión)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Zaregistrujte sa: [Zhipu AI](https://open.bigmodel.cn/)
-2. Získajte kľúč API z plánu kódovania
-3. Panel → Pridať kľúč API:
- – Poskytovateľ: `glm`
- - API kľúč: `your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**Použitie:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Tip pre profesionálov:** Kódovací plán ponúka 3× kvótu za 1/7 cenu! Resetovať denne o 10:00.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Zaregistrujte sa: [MiniMax](https://www.minimax.io/)
-2. Získajte kľúč API
-3. Panel → Pridať kľúč API
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Použitie:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Tip pre profesionálov:** Najlacnejšia možnosť pre dlhý kontext (1 milión tokenov)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 (9 USD/mesiac)
+### Kimi K2 ($9/month flat)
-1. Prihlásiť sa na odber: [Moonshot AI](https://platform.moonshot.ai/)
-2. Získajte kľúč API
-3. Panel → Pridať kľúč API
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Použitie:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Tip pre profesionálov:** Pevné 9 $/mesiac za 10 miliónov tokenov = 0,90 $/1 milión efektívnych nákladov!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 BEZPLATNÍ poskytovatelia (núdzové zálohovanie)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 modelov ZDARMA)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1210,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 modely ZDARMA)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1237,9 +1622,9 @@ Models:
-🎨 Vytvoriť kombá
+🎨 Create Combos
-### Príklad 1: Maximalizujte predplatné → Lacné zálohovanie
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1253,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### Príklad 2: Iba zadarmo (nulové náklady)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1270,7 +1655,7 @@ Cost: $0 forever!
🔧 CLI Integration
-### IDE kurzora
+### Cursor IDE
```
Settings → Models → Advanced:
@@ -1281,9 +1666,9 @@ Settings → Models → Advanced:
### Claude Code
-Na konfiguráciu jedným kliknutím použite stránku **CLI Tools** na informačnom paneli alebo upravte `~/.claude/settings.json` manuálne.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
-### Kódex CLI
+### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
@@ -1294,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Možnosť 1 – Dashboard (odporúčané):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Možnosť 2 – Manuálne:** Upraviť `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1316,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **Poznámka:** OpenClaw funguje iba s lokálnou OmniRoute. Použite `127.0.0.1` namiesto `localhost`, aby ste sa vyhli problémom s rozlíšením IPv6.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### Cline / Pokračovať / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1328,108 +1713,243 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Riešenie problémov
+## Riešenie problémov
-Kliknutím rozbalíte sprievodcu riešením problémov
+Click to expand troubleshooting guide
-**„Jazykový model neposkytol správy“**
+**"Language model did not provide messages"**
-- Kvóta poskytovateľa je vyčerpaná → Skontrolujte sledovanie kvót na paneli
-- Riešenie: Použite záložnú kombináciu alebo prejdite na lacnejšiu úroveň
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**Obmedzenie sadzby**
+**Rate limiting**
-- Vyčerpaná kvóta predplatného → Návrat na GLM/MiniMax
-- Pridať kombináciu: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**Platnosť tokenu OAuth vypršala**
+**OAuth token expired**
-- Automaticky obnovuje OmniRoute
-- Ak problémy pretrvávajú: Dashboard → Provider → Reconnect
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Vysoké náklady**
+**High costs**
-- Skontrolujte štatistiky používania v hlavnom paneli → Náklady
-- Prepnite primárny model na GLM/MiniMax
-- Používajte bezplatnú vrstvu (Gemini CLI, iFlow) pre nekritické úlohy
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Palubná doska sa otvára na nesprávnom porte**
+**Dashboard/API ports are wrong**
-- Nastavte `PORT=20128` a `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Chyby synchronizácie v cloude**
+**Cloud sync errors**
-- Overte `BASE_URL` body na vašu spustenú inštanciu
- – Overte `CLOUD_URL` bodov k očakávanému koncovému bodu cloudu
-- Ponechajte hodnoty `NEXT_PUBLIC_*` zarovnané s hodnotami na strane servera
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Prvé prihlásenie nefunguje**
+**First login not working**
-- Skontrolujte `INITIAL_PASSWORD` v `.env`
- – Ak nie je nastavené, záložné heslo je `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Žiadne záznamy žiadostí**
+**No request logs**
-- Nastaviť `ENABLE_REQUEST_LOGS=true` v `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Test pripojenia ukazuje „Neplatné“ pre poskytovateľov kompatibilných s OpenAI**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Mnohí poskytovatelia nevystavujú koncový bod `/models`
-- OmniRoute v1.0.6+ zahŕňa záložné overenie prostredníctvom dokončenia chatu
-- Uistite sa, že základná adresa URL obsahuje príponu `/v1`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 OAuth
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ DÔLEŽITÉ pre používateľov s OmniRoute a diaľkovým ovládaním VPS/Docker/servidor**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-Osvedčuje **Antigravity** a **Gemini CLI** používame **Google OAuth 2.0** ako autentifikáciu. O Google exige que a `redirect_uri` usada no fluxo OAuth saja **exatamente** uma das URI pre-kadastradas no Google Cloud Console to use.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-Ako credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. K dispozícii máte prístup k OmniRoute k vzdialenému servisu (napr.: `https://omniroute.meuservidor.com`), alebo k autenticite spoločnosti Google:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### Riešenie: Konfigurácia proprias poverenia OAuth
+#### Solution: Configure your own OAuth credentials
-Presný kód je **OAuth 2.0 Client ID** bez služby Google Cloud Console s identifikátorom URI.
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
#### Passo a passo
-**1. Prístup k službe Google Cloud Console**
+**1. Acesse o Google Cloud Console**
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
**2. Crie um novo OAuth 2.0 Client ID**
-- Kliknite na **"+ Vytvoriť poverenia"** → **"ID klienta OAuth"**
-- Tipo de aplicativo: **"Webová aplikácia"**
- – Nome: escolha qualquer nome (napr.: `OmniRoute Remote`)
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. Adicione ako Authorized Redirect URI**
+**3. Adicione as Authorized Redirect URIs**
-Žiadne pole **"URI autorizovaného presmerovania"**, adicione:
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
```
-> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, napr.: `http://45.33.32.156:20128/callback`).
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. Uložiť a kópiu ako poverenie**
+**4. Salve e copie as credenciais**
Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. Konfigurovať ako variáveis de ambiente**
+**5. Configure as variáveis de ambiente**
No seu `.env` (ou nas variáveis de ambiente do Docker):
@@ -1444,7 +1964,7 @@ GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
```
-**6. Reinicie alebo OmniRoute**
+**6. Reinicie o OmniRoute**
```bash
# Se usando npm:
@@ -1456,150 +1976,145 @@ docker restart omniroute
**7. Tente conectar novamente**
-Dashboard → Poskytovatelia → Antigravitácia (alebo Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
-Agora alebo Google presmerovaný korretamente pre `https://seu-servidor.com/callback` a autentické funkcie.
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### Alternatívne dočasné riešenie (sem configurar credenciais próprias)
+#### Workaround temporário (sem configurar credenciais próprias)
-Ak chcete získať prístup k dôvere, môžete použiť **príručku URL**:
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. O OmniRoute abrirá a URL autorização Google
+1. O OmniRoute abrirá a URL de autorização do Google
2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
-3. **Skopírujte úplnú webovú adresu** da barra de endereço do seu browser (mesmo que a pagina não carregue)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
-5. Kliknite na **"Pripojiť"**
+5. Clique em **"Connect"**
-> Toto riešenie funguje pomocou autorizačného kódu na adrese URL a nezávislého presmerovania.
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ nie je **podporovaný** — `better-sqlite3` natívne binárne súbory sú nekompatibilné)
- – **Jazyk**: TypeScript 5.9 — **100 % TypeScript** v `src/` a `open-sse/` (v1.0.6)
- – **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
-- **Databáza**: LowDB (JSON) + SQLite (stav domény + protokoly proxy)
-- **Streamovanie**: Server-Sent Events (SSE)
-- **Auth**: OAuth 2.0 (PKCE) + JWT + kľúče API
-- **Testovanie**: Testovací program Node.js (viac ako 368 testov jednotiek)
-- **CI/CD**: Akcie GitHub (automatické zverejňovanie npm + Docker Hub pri vydaní)
-- **Web**: [omniroute.online](https://omniroute.online)
-- **Balík**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **Odolnosť**: Istič, exponenciálny ústup, stádo proti hromu, spoofing TLS
-
----
-
-## 📖 Dokumentácia
-
-| Dokument | Popis |
-| -------------------------------------------- | -------------------------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | Poskytovatelia, kombá, integrácia CLI, nasadenie |
-| [API Reference](docs/API_REFERENCE.md) | Všetky koncové body s príkladmi |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | Bežné problémy a riešenia |
-| [Architecture](docs/ARCHITECTURE.md) | Architektúra systému a vnútorné vybavenie |
-| [Contributing](CONTRIBUTING.md) | Nastavenie vývoja a usmernenia |
-| [OpenAPI Spec](docs/openapi.yaml) | Špecifikácia OpenAPI 3.0 |
-| [Security Policy](SECURITY.md) | Nahlasovanie zraniteľnosti a bezpečnostné postupy |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Kompletný sprievodca: nastavenie VM + nginx + Cloudflare |
-| [Features Gallery](docs/FEATURES.md) | Vizuálna prehliadka prístrojového panela so snímkami obrazovky |
-
-### 📸 Ukážka hlavného panela
+## 🛠️ Tech Stack
-Kliknutím zobrazíte snímky obrazovky hlavného panela
+Click to expand tech stack details
-| Strana | Snímka obrazovky |
-| ---------------------- | ------------------------------------------------- |
-| **Poskytovatelia** |  |
-| **Kombá** |  |
-| **Analytika** |  |
-| **Zdravie** |  |
-| **Prekladateľ** |  |
-| **Nastavenia** |  |
-| **Nástroje CLI** |  |
-| **Denníky používania** |  |
-| **Koncový bod** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## Dokumentácia
-OmniRoute má naplánovaných **210+ funkcií** vo viacerých fázach vývoja. Tu sú kľúčové oblasti:
-
-| Kategória | Plánované funkcie | Najdôležitejšie |
-| ------------------------------------------ | ----------------- | ------------------------------------------------------------------------------------------------------------------- |
-| 🧠 **Routovanie a inteligencia** | 25+ | Smerovanie s najnižšou latenciou, smerovanie založené na značkách, predbežná kontrola kvóty, výber účtu P2C |
-| 🔒 **Bezpečnosť a dodržiavanie predpisov** | 20+ | Spevnenie SSRF, maskovanie poverení, limit rýchlosti na koncový bod, rozsah kľúča riadenia |
-| 📊 **Pozorovateľnosť** | 15+ | Integrácia OpenTelemetry, monitorovanie kvót v reálnom čase, sledovanie nákladov na model |
-| 🔄 **Integrácie poskytovateľov** | 20+ | Register dynamických modelov, cooldowny poskytovateľov, kódex pre viacero účtov, analýza kvót Copilota |
-| ⚡ **Výkon** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
-| 🌐 **Ekosystém** | 10+ | WebSocket API, rýchle opätovné načítanie konfigurácie, distribuovaný ukladací priestor konfigurácií, komerčný režim |
-
-### 🔜 Už čoskoro
-
-- 🔗 **Integrácia OpenCode** – podpora natívneho poskytovateľa pre IDE kódovania OpenCode AI
-- 🔗 **Integrácia TRAE** – Úplná podpora vývojového rámca TRAE AI
-- 📦 **Batch API** – Asynchrónne dávkové spracovanie pre hromadné požiadavky
-- 🎯 ** Smerovanie založené na značkách** – Smerujte požiadavky na základe vlastných značiek a metadát
-- 💰 **Stratégia najnižšej ceny** — Automaticky vyberte najlacnejšieho dostupného poskytovateľa
-
-> 📝 Úplné špecifikácie funkcií sú k dispozícii v [link](docs/new-features/) (217 podrobných špecifikácií)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 Prispievatelia
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Ako prispieť
+### How to Contribute
-1. Fork úložisko
-2. Vytvorte si pobočku funkcií (`git checkout -b feature/amazing-feature`)
-3. Potvrďte zmeny (`git commit -m 'Add amazing feature'`)
-4. Zatlačte na pobočku (`git push origin feature/amazing-feature`)
-5. Otvorte požiadavku na stiahnutie
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Podrobné pokyny nájdete na stránke [CONTRIBUTING.md](CONTRIBUTING.md).
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Vydanie novej verzie
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 História hviezd
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Poďakovanie
+## 🙏 Acknowledgments
-Špeciálne poďakovanie patrí **[9router](https://github.com/decolua/9router)** od **[decolua](https://github.com/decolua)** – pôvodnému projektu, ktorý inšpiroval túto vidličku. OmniRoute stavia na tomto neuveriteľnom základe s ďalšími funkciami, multimodálnymi API a úplným prepísaním TypeScript.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Špeciálne poďakovanie patrí **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** – pôvodnej implementácii Go, ktorá inšpirovala tento port JavaScript.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Licencia
+## Licencia
-Licencia MIT – podrobnosti nájdete na stránke [LICENSE](LICENSE).
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Vytvorené pomocou ❤️ pre vývojárov, ktorí kódujú 24/7
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/sk/docs/FEATURES.md b/docs/i18n/sk/docs/FEATURES.md
new file mode 100644
index 0000000000..1f03969952
--- /dev/null
+++ b/docs/i18n/sk/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Slovenčina)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/sv/README.md b/docs/i18n/sv/README.md
index 59341232fd..e623ed0597 100644
--- a/docs/i18n/sv/README.md
+++ b/docs/i18n/sv/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — Den kostnadsfria AI-gatewayen
+# 🚀 OmniRoute — The Free AI Gateway (Svenska)
-### Sluta aldrig koda. Smart routing till **GRATIS & lågkostnads AI-modeller** med automatisk reserv.
-
-_Din universella API-proxy — en slutpunkt, 36+ leverantörer, noll driftstopp._
-
-**Slutförda chatt • Inbäddningar • Bildgenerering • Ljud • Omrankning • 100 % TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Gratis AI-leverantör för dina favoritkodningsagenter
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Anslut alla AI-drivna IDE- eller CLI-verktyg via OmniRoute — gratis API-gateway för obegränsad kodning._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _Anslut alla AI-drivna IDE- eller CLI-verktyg via OmniRoute — gratis API-gatew
|
-📡 Alla agenter ansluter via http://localhost:20128/v1 eller http://cloud.omniroute.online/v1, —limited one config_245\_\_ kvot
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
----
-
-[](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)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Varför OmniRoute?
-
-**Sluta slösa pengar och nå gränser:**
-
--
Prenumerationskvoten löper ut oanvänd varje månad
--
Hastighetsgränser stoppar dig mellankodning
--
Dyra API:er ($20-50/månad per leverantör)
--
Manuellt byte mellan leverantörer
-
-**OmniRoute löser detta:**
-
-- ✅ **Maximera prenumerationer** - Spåra kvot, använd varje bit innan återställning
-- ✅ **Automatisk reserv** - Prenumeration → API-nyckel → Billigt → Gratis, noll driftstopp
-- ✅ **Multi-konto** - Round-robin mellan konton per leverantör
-- ✅ **Universal** - Fungerar med Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, vilket CLI-verktyg som helst
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
## 📧 Support
-> 💬 **Gå med i vår community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Få hjälp, dela tips och håll dig uppdaterad.
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-- **Webbplats**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **Frågor**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Originalprojekt**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Hur det fungerar
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,451 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 Vad OmniRoute löser — 30 verkliga smärtpunkter och användningsfall
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Varje utvecklare som använder AI-verktyg möter dessa problem dagligen.** OmniRoute byggdes för att lösa dem alla — från kostnadsöverskridanden till regionala block, från trasiga OAuth-flöden till protokolloperationer och observerbarhet i företag.
+> **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 protocol operations and enterprise observability.
-💸 1. "Jag betalar för ett dyrt abonnemang men blir ändå avbruten av limits"
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Utvecklare betalar $20–200/månad för Claude Pro, Codex Pro eller GitHub Copilot. Även om du betalar har kvoten ett tak - 5 timmars användning, veckogränser eller gränser per minut. Mid-coding session, leverantören slutar svara och utvecklaren tappar flöde och produktivitet.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **Smart 4-lagers fallback** — Om prenumerationskvoten tar slut, omdirigeras automatiskt till API-nyckel → Billigt → Gratis med noll manuellt ingrepp
-- **Kvotspårning i realtid** — Visar tokenförbrukning i realtid med återställningsnedräkning (5 timmar, dagligen, veckovis)
-- **Multi-Account Support** — Flera konton per leverantör med automatisk round-robin — när ett tar slut, byter du till nästa
-- **Anpassade kombinationer** — Anpassningsbara reservkedjor med 6 balanseringsstrategier (fill-first, round-robin, P2C, slumpmässig, minst använda, kostnadsoptimerad)
-- **Codex Business Quotas** — Övervakning av företags-/teamarbetsutrymmeskvoter direkt i instrumentpanelen
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. "Jag måste använda flera leverantörer men alla har olika API"
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI använder ett format, Claude (Anthropic) använder ett annat, Gemini ännu ett annat. Om en utvecklare vill testa modeller från olika leverantörer eller fallback mellan dem måste de konfigurera om SDK:er, ändra slutpunkter, hantera inkompatibla format. Anpassade leverantörer (FriendLI, NIM) har icke-standardiserade modellslutpunkter.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **Unified Endpoint** — En enda `http://localhost:20128/v1` fungerar som proxy för alla 36+ leverantörer
-- **Formatöversättning** — Automatisk och transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-- **Responssanering** — Tar bort icke-standardiserade fält (`x_groq`, `usage_breakdown`, `service_tier`) som bryter OpenAI SDK v1.83+
-- **Rollnormalisering** — Konverterar `developer` → `system` för icke-OpenAI-leverantörer; `system` → `user` för GLM/ERNIE
-- **Think Tag Extraction** — Extraherar ``-block från modeller som DeepSeek R1 till standardiserade `reasoning_content`
-- **Structured Output for Gemini** — `json_schema` → `responseMimeType`/`responseSchema` automatisk konvertering
-- **`stream` är standard till `false`** — Justerar med OpenAI-specifikationen, undviker oväntad SSE i Python/Rust/Go SDK:er
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. "Min AI-leverantör blockerar min region/land"
+🌐 3. "My AI provider blocks my region/country"
-Leverantörer som OpenAI/Codex blockerar åtkomst från vissa geografiska regioner. Användare får fel som `unsupported_country_region_territory` under OAuth- och API-anslutningar. Detta är särskilt frustrerande för utvecklare från utvecklingsländer.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **3-Level Proxy Config** — Konfigurerbar proxy på 3 nivåer: global (all trafik), per leverantör (endast en leverantör) och per anslutning/nyckel
-- **Färgkodade proxymärken** — Visuella indikatorer: 🟢 global proxy, 🟡 leverantörsproxy, 🔵 anslutningsproxy, visar alltid IP:n
-- **OAuth Token Exchange Through Proxy** — OAuth-flödet går också genom proxyn, vilket löser `unsupported_country_region_territory`
-- **Anslutningstester via proxy** — Anslutningstester använder den konfigurerade proxyn (ingen mer direkt förbikoppling)
-- **SOCKS5-stöd** — Fullständigt SOCKS5-proxystöd för utgående routing
-- **TLS Fingerprint Spoofing** — Webbläsarliknande TLS-fingeravtryck via `wreq-js` för att kringgå botdetektering
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. "Jag vill använda AI för kodning men jag har inga pengar"
+🆓 4. "I want to use AI for coding but I have no money"
-Alla kan inte betala $20–200/månad för AI-prenumerationer. Studenter, utvecklare från tillväxtländer, hobbyister och frilansare behöver tillgång till kvalitetsmodeller utan kostnad.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **Gratis leverantörer inbyggda** — Inbyggt stöd för 100 % gratis leverantörer: iFlow (8 obegränsade modeller), Qwen (3 obegränsade modeller), Kiro (Claude gratis), Gemini CLI (180K/månad gratis)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/månad utan stilleståndstid
-- **NVIDIA NIM gratis krediter** — 1000 gratis krediter integrerade
-- **Kostnadsoptimerad strategi** — Routingstrategi som automatiskt väljer den billigaste tillgängliga leverantören
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. "Jag behöver skydda min AI-gateway från obehörig åtkomst"
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-När du exponerar en AI-gateway för nätverket (LAN, VPS, Docker) kan vem som helst med adressen konsumera utvecklarens tokens/kvot. Utan skydd är API:er sårbara för missbruk, snabb injektion och missbruk.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **API Key Management** — Generering, rotation och omfattning per leverantör med en dedikerad `/dashboard/api-manager`-sida
-- **Behörigheter på modellnivå** — Begränsa API-nycklar till specifika modeller (`openai/*`, jokerteckenmönster), med växlaren Tillåt allt/Begränsa
-- **API Endpoint Protection** — Kräv en nyckel för `/v1/models` och blockera specifika leverantörer från listan
-- **Auth Guard + CSRF Protection** — Alla instrumentpanelsrutter skyddade med `withAuth` middleware + CSRF-tokens
-- **Rate Limiter** — Per-IP-hastighetsbegränsning med konfigurerbara fönster
-- **IP-filtrering** — Tillåtelselista/blockeringslista för åtkomstkontroll
-- **Prompt Injection Guard** — Sanering mot skadliga promptmönster
-- **AES-256-GCM-kryptering** — Autentiseringsuppgifter krypterade i vila
+- **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. "Min leverantör gick ner och jag tappade mitt kodningsflöde"
+🛑 6. "My provider went down and I lost my coding flow"
-AI-leverantörer kan bli instabila, returnera 5xx-fel eller nå tillfälliga hastighetsgränser. Om en utvecklare är beroende av en enskild leverantör avbryts de. Utan strömbrytare kan upprepade försök krascha programmet.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **Circuit Breaker per leverantör** — Autoöppning/stängning med konfigurerbara trösklar och nedkylning (stängd/öppen/halvöppen)
-- **Exponentiell backoff** — Progressiva fördröjningar igen
-- **Anti-Thundering Herd** — Mutex + semaforskydd mot samtidiga stormar igen
-- **Combo reservkedjor** — Om den primära leverantören misslyckas, faller den automatiskt genom kedjan utan ingrepp
-- **Combo Circuit Breaker** - Inaktiverar automatiskt felande leverantörer inom en kombinationskedja
-- **Health Dashboard** — Drifttidsövervakning, strömbrytartillstånd, låsningar, cachestatistik, p50/p95/p99 latens
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. "Att konfigurera varje AI-verktyg är tråkigt och repetitivt"
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Utvecklare använder Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Varje verktyg behöver en annan konfiguration (API-slutpunkt, nyckel, modell). Att konfigurera om när man byter leverantör eller modell är ett slöseri med tid.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **CLI Tools Dashboard** — Dedikerad sida med ett-klicksinställningar för Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-- **GitHub Copilot Config Generator** — Genererar `chatLanguageModels.json` för VS-kod med bulkmodellval
-- **Onboarding Wizard** — Guidad 4-stegs installation för förstagångsanvändare
-- **En slutpunkt, alla modeller** — Konfigurera `http://localhost:20128/v1` en gång, få tillgång till 36+ leverantörer
+- **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 67+ providers
-🔑 8. "Hantera OAuth-tokens från flera leverantörer är ett helvete"
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot — alla använder OAuth 2.0 med utgående tokens. Utvecklare måste autentisera på nytt hela tiden, hantera `client_secret is missing`, `redirect_uri_mismatch` och fel på fjärrservrar. OAuth på LAN/VPS är särskilt problematiskt.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **Automatisk uppdatering av token** — OAuth-tokens uppdateras i bakgrunden innan de löper ut
-- **OAuth 2.0 (PKCE) Inbyggd** — Automatiskt flöde för Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **Multi-Account OAuth** — Flera konton per leverantör via JWT/ID-tokenextraktion
-- **OAuth LAN/Remote Fix** — Privat IP-detektering för `redirect_uri` + manuellt URL-läge för fjärrservrar
-- **OAuth Behind Nginx** — Använder `window.location.origin` för omvänd proxykompatibilitet
-- **Remote OAuth Guide** — Steg-för-steg-guide för Google Cloud-uppgifter på VPS/Docker
+- **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. "Jag vet inte hur mycket jag spenderar eller var"
+📊 9. "I don't know how much I'm spending or where"
-Utvecklare använder flera betalleverantörer men har ingen enhetlig syn på utgifter. Varje leverantör har sin egen faktureringspanel, men det finns ingen konsoliderad vy. Oväntade kostnader kan hopa sig.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **Kostnadsanalysinstrumentpanel** — Kostnadsspårning per token och budgethantering per leverantör
-- **Budgetgränser per nivå** — Utgiftstak per nivå som utlöser automatisk reserv
-- **Priskonfiguration per modell** — Konfigurerbara priser per modell
-- **Användningsstatistik per API-nyckel** — Antal förfrågningar och senast använda tidsstämpel per nyckel
-- **Analytics Dashboard** — Statistikkort, modellanvändningsdiagram, leverantörstabell med framgångsfrekvens och latens
+- **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. "Jag kan inte diagnostisera fel och problem i AI-samtal"
+🐛 10. "I can't diagnose errors and problems in AI calls"
-När ett samtal misslyckas vet inte utvecklaren om det var en hastighetsgräns, utgången token, fel format eller leverantörsfel. Fragmenterade loggar över olika terminaler. Utan observerbarhet är felsökning att trial-and-error.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **Unified Logs Dashboard** — 4 flikar: Request Logs, Proxy Logs, Audit Logs, Console
-- **Console Log Viewer** — Viewer i realtid i terminalstil med färgkodade nivåer, automatisk rullning, sökning, filtrering
-- **SQLite Proxy-loggar** — Beständiga loggar som överlever serverstarter
-- **Translator Playground** — 4 felsökningslägen: Playground (formatöversättning), Chat Tester (tur och retur), Testbänk (batch), Live Monitor (realtid)
-- **Request Telemetri** — p50/p95/p99 latens + X-Request-Id-spårning
-- **Filbaserad loggning med rotation** — Konsolinterceptor fångar allt till JSON-logg med storleksbaserad rotation
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. "Det är komplext att distribuera och underhålla gatewayen"
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Att installera, konfigurera och underhålla en AI-proxy i olika miljöer (lokalt, VPS, Docker, moln) är arbetskrävande. Problem som hårdkodade sökvägar, `EACCES` på kataloger, portkonflikter och plattformsoberoende konstruktioner ger friktion.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **npm global installation** — `npm install -g omniroute && omniroute` — klar
-- **Docker Multi-Platform** — AMD64 + ARM64 inbyggt (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Docker Compose Profiles** — `base` (inga CLI-verktyg) och `cli` (med Claude Code, Codex, OpenClaw)
-- **Electron Desktop App** — Inbyggd app för Windows/macOS/Linux med systemfältet, autostart, offlineläge
-- **Split-Port Mode** — API och Dashboard på separata portar för avancerade scenarier (omvänd proxy, containernätverk)
-- **Cloud Sync** — Konfigurera synkronisering mellan enheter via Cloudflare Workers
-- **DB-säkerhetskopior** — Automatisk säkerhetskopiering, återställning, export och import av alla inställningar
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. "Gränssnittet är endast engelska och mitt team talar inte engelska"
+🌍 12. "The interface is English-only and my team doesn't speak English"
-Lag i icke-engelsktalande länder, särskilt i Latinamerika, Asien och Europa, kämpar med enbart engelska gränssnitt. Språkbarriärer minskar användningen och ökar konfigurationsfelen.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **Dashboard i18n — 30 språk** — Alla 500+ nycklar översatta, inklusive arabiska, bulgariska, danska, tyska, spanska, finska, franska, hebreiska, hindi, ungerska, indonesiska, italienska, japanska, koreanska, malaysiska, holländska, norska, polska, portugisiska (PT/BR), rumänska, ryska, thailändska, ukrainska, ukrainska, kinesiska, engelska, ukrainska, vietnamesiska, ukrainska, svenska, ukrainska
-- **RTL-stöd** — Höger-till-vänster-stöd för arabiska och hebreiska
-- **Multi-Language READMEs** — 30 fullständiga dokumentationsöversättningar
-- **Språkväljare** — Globikon i rubriken för växling i realtid
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. "Jag behöver mer än chatt — jag behöver inbäddningar, bilder, ljud"
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-AI är inte bara att slutföra chatt. Utvecklare måste generera bilder, transkribera ljud, skapa inbäddningar för RAG, ranka om dokument och moderera innehåll. Varje API har olika slutpunkt och format.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **Inbäddningar** — `/v1/embeddings` med 6 leverantörer och 9+ modeller
-- **Bildgenerering** — `/v1/images/generations` med 10 leverantörer och 20+ modeller (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **Text-till-video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) och SD WebUI
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
-- **Ljudtranskription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Text-till-tal** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + befintliga leverantörer
-- **Moderationer** — `/v1/moderations` — Innehållssäkerhetskontroller
-- **Omrankning** — `/v1/rerank` — Omrankning av dokumentrelevans
-- **Responses API** — Fullständigt `/v1/responses`-stöd för Codex
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. "Jag har inget sätt att testa och jämföra kvalitet mellan olika modeller"
+🧪 14. "I have no way to test and compare quality across models"
-Utvecklare vill veta vilken modell som är bäst för deras användningsfall - kod, översättning, resonemang - men det går långsamt att jämföra manuellt. Det finns inga integrerade utvärderingsverktyg.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **LLM-utvärderingar** — Golden set-testning med 10 förinstallerade fall som täcker hälsningar, matematik, geografi, kodgenerering, JSON-efterlevnad, översättning, markdown, säkerhetsvägran
-- **4 matchningsstrategier** — `exact`, `contains`, `regex`, `custom` (JS-funktion)
-- **Translator Playground Test Bench** — Batchtestning med flera ingångar och förväntade utgångar, jämförelse mellan olika leverantörer
-- **Chatttestare** — Fullständig tur och retur med visuell responsåtergivning
-- **Live Monitor** — Realtidsström av alla förfrågningar som flödar genom proxyn
+- **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. "Jag behöver skala utan att förlora prestanda"
+📈 15. "I need to scale without losing performance"
-När förfrågningsvolymen ökar, utan att cachelagra genererar samma frågor dubbla kostnader. Utan idempotens, dubbletter begär avfallshantering. Prisgränser per leverantör måste respekteras.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **Semantisk cache** — Tvåskiktscache (signatur + semantisk) minskar kostnaden och fördröjningen
-- **Request Idempotency** — 5s dedupliceringsfönster för identiska förfrågningar
-- **Rate Limit Detection** — RPM per leverantör, min gap och max samtidig spårning
-- **Redigerbara hastighetsgränser** — Konfigurerbara standardinställningar i Inställningar → Motståndskraft med uthållighet
-- **API Key Validation Cache** — 3-lagers cache för produktionsprestanda
-- **Hälsoinstrumentpanel med telemetri** — p50/p95/p99 latens, cachestatistik, drifttid
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. "Jag vill kontrollera modellens beteende globalt"
+🤖 16. "I want to control model behavior globally"
-Utvecklare som vill ha alla svar på ett specifikt språk, med en specifik ton, eller som vill begränsa resonemangstokens. Att konfigurera detta i varje verktyg/förfrågan är opraktiskt.
+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.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- **System Prompt Injection** — Global prompt tillämpas på alla förfrågningar
+- **System Prompt Injection** — Global prompt applied to all requests
- **Thinking Budget Validation** — Reasoning token allocation control per request (passthrough, auto, custom, adaptive)
-- **6 routingstrategier** — Globala strategier som avgör hur förfrågningar distribueras
-- **Wildcard Router** — `provider/*`-mönster dirigerar dynamiskt till vilken leverantör som helst
-- **Kombo Aktivera/Inaktivera Växla** — Växla kombinationer direkt från instrumentpanelen
-- **Visa leverantör** — Aktivera/inaktivera alla anslutningar för en leverantör med ett klick
-- **Blockerade leverantörer** — Uteslut specifika leverantörer från `/v1/models`-listan
+- **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
-🧰 17. "Jag behöver MCP-verktyg som förstklassiga produktegenskaper"
+🧰 17. "I need MCP tools as first-class product capabilities"
-Många AI-gateways exponerar MCP endast som en dold implementeringsdetalj. Team behöver ett synligt, hanterbart driftlager.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- MCP visas på navigeringspanelen och fliken för slutpunktsprotokoll
-- Dedikerad MCP-hanteringssida med process, verktyg, omfattningar och revision
-- Inbyggd snabbstart för `omniroute --mcp` och klientintroduktion
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "Jag behöver A2A-orkestrering med synkronisering + strömningsuppgiftsvägar"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Agentarbetsflöden kräver både direkta svar och långvarig streamad exekvering med livscykelkontroll.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- A2A JSON-RPC-ändpunkt (`POST /a2a`) med `message/send` och `message/stream`
-- SSE-strömning med terminaltillståndspridning
-- Task lifecycle API:er för `tasks/get` och `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. "Jag behöver riktig MCP-processhälsa, inte gissad status"
+🛰️ 19. "I need real MCP process health, not guessed status"
-Operativa team måste veta om MCP faktiskt lever, inte bara om ett API är tillgängligt.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- Runtime heartbeat-fil med PID, tidsstämplar, transport, verktygsräkning och scope-läge
-- MCP status API som kombinerar hjärtslag + senaste aktivitet
-- UI-statuskort för process/upptid/hjärtslagsnyhet
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "Jag behöver revisionsbart MCP-verktygsexekvering"
+📋 20. "I need auditable MCP tool execution"
-När verktyg muterar konfiguration eller utlöser operationsåtgärder behöver team rättsmedicinsk spårbarhet.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- SQLite-stödd revisionsloggning för MCP-verktygsanrop
-- Filtrerar efter verktyg, framgång/misslyckande, API-nyckel och paginering
-- Dashboard revisionstabell + statistikslutpunkter för automatisering
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "Jag behöver scoped MCP-behörigheter per integration"
+🔐 21. "I need scoped MCP permissions per integration"
-Olika klienter bör ha minst privilegierad åtkomst till verktygskategorier.
+Different clients should have least-privilege access to tool categories.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- 9 granulära MCP-scopes för kontrollerad verktygsåtkomst
-- Tillämpning av omfattning och synlighet i MCP-hanteringsgränssnitt
-- Säker standardställning för operativa verktyg
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. "Jag behöver driftskontroller utan att omdistribuera"
+⚙️ 22. "I need operational controls without redeploying"
-Team behöver snabba körtidsförändringar under incidenter eller kostnadshändelser.
+Teams need quick runtime changes during incidents or cost events.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- Växla kombinationsaktivering direkt från MCP-instrumentpanelen
-- Tillämpa motståndskraftsprofiler från fördefinierade policypaket
-- Återställ strömbrytarens tillstånd från samma manöverpanel
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. "I need live A2A task lifecycle synibility and cancellation"
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Utan livscykelsynlighet blir uppgiftsincidenter svåra att triage.
+Without lifecycle visibility, task incidents become hard to triage.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- Uppgiftslista/filtrering efter stat/färdighet med sidnumrering
-- Drill down på uppgiftens metadata, händelser och artefakter
-- Slutpunkt för annullering av uppgifter och gränssnittsåtgärd med bekräftelse
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. "Jag behöver mätvärden för aktiv strömning för A2A-laddning"
+🌊 24. "I need active stream metrics for A2A load"
-Strömmande arbetsflöden kräver operativ insikt i samtidighet och direktanslutningar.
+Streaming workflows require operational insight into concurrency and live connections.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- Aktiva strömräknare integrerade i A2A-status
-- Tidsstämpel för senaste uppgift och antal per stat
-- A2A instrumentpanelskort för operationsövervakning i realtid
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "Jag behöver standardagentupptäckt för klienter"
+🪪 25. "I need standard agent discovery for clients"
-Externa klienter och orkestratorer behöver maskinläsbar metadata för onboarding.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- Agentkort exponerat på `/.well-known/agent.json`
-- Förmåga och färdigheter som visas i ledningsgränssnittet
-- A2A status API inkluderar upptäcktsmetadata för automatisering
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "Jag behöver protokollupptäckbarhet i produktens UX"
+🧭 26. "I need protocol discoverability in the product UX"
-Om användare inte kan upptäcka protokollytor, sjunker kvaliteten på adoption och support.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- Sidofältsposter för MCP och A2A
-- Slutpunktssida Protokoll-fliken med snabbstart och status
-- Länkar från översikt till dedikerade hanteringspaneler
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "Jag behöver end-to-end protokollvalidering med riktiga klienter"
+🧪 27. "I need end-to-end protocol validation with real clients"
-Mock-tester räcker inte för att validera protokollkompatibilitet före release.
+Mock tests are not enough to validate protocol compatibility before release.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- E2E-svit som startar appen och använder riktig MCP SDK-klienttransport
-- A2A-klient testar för upptäckt, skicka, streama, hämta och avbryta flöden
-- Korskontrollera påståenden mot MCP-revision och A2A-uppgifter API:er
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. "Jag behöver enhetlig observerbarhet över alla gränssnitt"
+📡 28. "I need unified observability across all interfaces"
-Att dela upp observerbarheten enligt protokoll skapar blinda fläckar och längre MTTR.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- Enhetliga instrumentpaneler/loggar/analyser i en produkt
-- Hälsa + revision + begäran om telemetri över OpenAI-, MCP- och A2A-lager
-- Operativa API:er för status och automatisering
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "Jag behöver en körtid för proxy + verktyg + agentorkestrering"
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Att köra många separata tjänster ökar driftskostnaderna och fellägen.
+Running many separate services increases operational cost and failure modes.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- OpenAI-kompatibel proxy, MCP-server och A2A-server i en stack
-- Delad autentisering, resiliens, datalagring och observerbarhet
-- Konsekvent policymodell över alla interaktionsytor
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. "Jag behöver skicka agentiska arbetsflöden utan limkodsprawl"
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Lag tappar hastighet när de sammanfogar flera ad-hoc-tjänster och skript.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Hur OmniRoute löser det:**
+**How OmniRoute solves it:**
-- Enhetlig slutpunktsstrategi för kunder och agenter
-- Inbyggda gränssnitt för protokollhantering och rökvalideringsvägar
-- Produktionsfärdiga grunder (säkerhet, loggning, resiliens, backup)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Exempel på Playbooks (integrerade användningsfall)
+### Example Playbooks (Integrated Use Cases)
-**Playbook A: Maximera betald prenumeration + billig backup**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -683,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Playbook B: Noll-kostnad kodningsstack**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -695,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Playbook C: 24/7 alltid-på reservkedja**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -708,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Playbook D: Agent ops med MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Snabbstart
+## 🆓 Start Free — Zero Configuration Cost
-**1. Installera globalt:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Snabbstart
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Instrumentpanelen öppnar kl. `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Kommando | Beskrivning |
-| ----------------------- | ---------------------------------- |
-| `omniroute` | Startserver (standardport 20128) |
-| `omniroute --port 3000` | Använd anpassad port |
-| `omniroute --no-open` | Öppna inte webbläsaren automatiskt |
-| `omniroute --help` | Visa hjälp |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Anslut en GRATIS leverantör:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Dashboard → Leverantörer → Anslut **Claude Code** eller **Antigravity** → OAuth-inloggning → Klar!
+Optional split-port mode:
-**3. Använd i ditt CLI-verktyg:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**Det var allt!** Börja koda med GRATIS AI-modeller.
+### 2) Connect providers and create your API key
-**Alternativ – kör från källan:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
-## 🐳 Hamnarbetare
+## 🐳 Docker
-OmniRoute är tillgänglig som en offentlig Docker-bild på [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Snabbkörning:**
+**Quick run:**
```bash
docker run -d \
@@ -777,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Med miljöfil:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -792,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Använda Docker Compose:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -802,257 +880,550 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| Bild | Tagga | Storlek | Beskrivning |
-| ------------------------ | -------- | ------- | ----------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | Senaste stabila utgåvan |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Aktuell version |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+### Snabbstart
+
```bash
-npm run electron:dev # Development mode
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Prissättning i en överblick
+## 💰 Pricing at a Glance
-| Nivå | Leverantör | Kostnad | Kvotåterställning | Bäst för |
-| -------------------- | ----------------- | ----------------------- | ------------------------ | ----------------------- |
-| **💳 PRENUMERATION** | Claude Code (Pro) | 20 USD/månad | 5h + veckovis | Har redan prenumererat |
-| | Codex (Plus/Pro) | 20-200 USD/månad | 5h + veckovis | OpenAI-användare |
-| | Gemini CLI | **GRATIS** | 180K/månad + 1K/dag | Alla! |
-| | GitHub Copilot | 10-19 USD/månad | Månatlig | GitHub-användare |
-| **🔑 API-NYCKEL** | NVIDIA NIM | **GRATIS** (1000 poäng) | Engång | Gratis nivåtestning |
-| | DeepSeek | Betala per användning | Inga | Bästa pris/kvalitet |
-| | Groq | Gratis nivå + betald | Begränsat pris | Ultrasnabb slutledning |
-| | xAI (Grok) | Betala per användning | Inga | Grok modeller |
-| | Mistral | Gratis nivå + betald | Begränsat pris | Europeisk AI |
-| | OpenRouter | Betala per användning | Inga | 100+ modeller |
-| **💰 BILLIGT** | GLM-4.7 | $0,6/1M | Dagligen 10:00 | Budget backup |
-| | MiniMax M2.1 | $0,2/1M | 5-timmars rullande | Billigaste alternativet |
-| | Kimi K2 | 9 USD/mån lägenhet | 10 miljoner tokens/månad | Förutsägbar kostnad |
-| **🆓 GRATIS** | iFlow | $0 | Obegränsad | 8 modeller gratis |
-| | Qwen | $0 | Obegränsad | 3 modeller gratis |
-| | Kiro | $0 | Obegränsad | Claude gratis |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Proffstips:** Börja med Gemini CLI (180K gratis/månad) + iFlow (obegränsat gratis) combo = $0 kostnad!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Nyckelfunktioner
+---
-### 🧠 Core Routing & Intelligence
+## 🆓 Free Models — What You Actually Get
-| Funktion | Vad det gör |
-| ------------------------------ | ----------------------------------------------------------------------------------------- |
-| 🎯 **Smart 4-lagers reserv** | Automatisk rutt: Prenumeration → API-nyckel → Billigt → Gratis |
-| 📊 **Kvotspårning i realtid** | Live token count + återställ nedräkning per leverantör |
-| 🔄 **Formatöversättning** | OpenAI ↔ Claude ↔ Gemini ↔ Markör ↔ Kiro sömlös + sanering av svar |
-| 👥 **Multi-Account Support** | Flera konton per leverantör med intelligent urval |
-| 🔄 **Auto Token Refresh** | OAuth-tokens uppdateras automatiskt med försök igen |
-| 🎨 **Anpassade kombinationer** | 6 strategier: fill-first, round-robin, p2c, slumpmässig, minst använda, kostnadsoptimerad |
-| 🧩 **Anpassade modeller** | Lägg till valfritt modell-ID till valfri leverantör |
-| 🌐 **Wildcard-router** | Dirigera `provider/*`-mönster till valfri leverantör dynamiskt |
-| 🧠 **Tänkande budget** | Genomgång, auto, anpassade och adaptiva lägen för resonerande modeller |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **System Prompt Injection** | Global systemprompt tillämpas på alla förfrågningar |
-| 📄 **Responses API** | Fullständigt stöd för OpenAI Responses API (`/v1/responses`) för Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 Multimodala API:er
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Funktion | Vad det gör |
-| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Bildgenerering** | `/v1/images/generations` — 4 leverantörer, 9+ modeller |
-| 📐 **Inbäddningar** | `/v1/embeddings` — 6 leverantörer, 9+ modeller |
-| 🎤 **Ljudtranskription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Text-till-tal** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Moderationer** | `/v1/moderations` — Innehållssäkerhetskontroller |
-| 🔀 **Omrankning** | `/v1/rerank` — Omrankning av dokumentrelevans |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Motståndskraft och säkerhet
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| Funktion | Vad det gör |
-| -------------------------------------- | -------------------------------------------------------------------------------------- |
-| 🔌 **Circuit Breaker** | Autoöppna/stäng per leverantör med konfigurerbara trösklar |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| 🛡️ **Anti-ånflock** | Mutex + semaforhastighetsgräns för API-nyckelleverantörer |
-| 🧠 **Semantisk cache** | Tvåskiktscache (signatur + semantisk) minskar kostnaden och fördröjningen |
-| ⚡ **Begär idempotens** | 5s dedup-fönster för dubblettförfrågningar |
-| 🔒 **TLS Fingerprint Spoofing** | Förbi TLS-baserad botdetektering via wreq-js |
-| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
-| 🌐 **IP-filtrering** | Tillåtelselista/blockeringslista för API-åtkomstkontroll |
-| 📊 **Redigerbara hastighetsgränser** | Konfigurerbart RPM, min gap och max samtidiga på systemnivå |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **API Endpoint Protection** | Auth gating + leverantörsblockering för `/models` slutpunkt |
-| 🔒 **Proxysynlighet** | Färgkodade märken: 🟢 global, 🟡 leverantör, 🔵 per anslutning med IP-display |
-| 🌐 **Proxykonfiguration med 3 nivåer** | Konfigurera proxyservrar på global nivå, per leverantör eller per anslutningsnivå |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 Observerbarhet och analys
+### 🟡 QWEN MODELS (Device Code Auth)
-| Funktion | Vad det gör |
-| -------------------------------- | ----------------------------------------------------------------------------- |
-| 📝 **Begär loggning** | Felsökningsläge med fullständiga förfrågnings-/svarsloggar |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **SQLite proxyloggar** | Beständiga proxyloggar överlever serverstarter |
-| 📊 **Analytics Dashboard** | Recharts-driven: statistikkort, modellanvändningsdiagram, leverantörstabell |
-| 📈 **Förloppsspårning** | Opt-in SSE-förloppshändelser för streaming |
-| 🧪 **LLM-utvärderingar** | Golden set testning med 4 matchstrategier |
-| 🔍 **Begär telemetri** | p50/p95/p99 latensaggregation + X-Request-Id-spårning |
-| 📋 **Dashboard för loggar** | Enad sida med 4 flikar: Begäranloggar, Proxyloggar, Granskningsloggar, Konsol |
-| 🖥️ **Konsolloggvisare** | Realtidsvisare i terminalstil med nivåfilter, sökning, automatisk rullning |
-| 📑 **Filbaserad loggning** | Console Interceptor fångar all utdata till JSON-loggfilen med rotation |
-| 🏥 **Hälsoinstrumentpanel** | Systemupptid, strömbrytartillstånd, låsningar, cachestatistik |
-| 💰 **Kostnadsspårning** | Budgethantering + prissättning per modell |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ Implementering och synkronisering
+### 🟣 GEMINI CLI (Google OAuth)
-| Funktion | Vad det gör |
-| -------------------------------- | -------------------------------------------------------------------------------------- |
-| 💾 **Cloud Sync** | Synkronisera konfiguration mellan enheter via Cloudflare Workers |
-| 🌐 **Distribuera var som helst** | Localhost, VPS, Docker, Cloudflare Workers |
-| 🔑 **API-nyckelhantering** | Generera, rotera och omfång API-nycklar per leverantör |
-| 🧙 **Onboarding Wizard** | 4-stegs guidad installation för förstagångsanvändare |
-| 🔧 **CLI Tools Dashboard** | Konfigurera med ett klick Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **DB-säkerhetskopior** | Automatisk säkerhetskopiering, återställning, export och import för alla inställningar |
-| 🌐 **Internationalisering** | Fullständig i18n med nästa-intl — stöd för engelska + portugisiska (Brasilien) |
-| 🌍 **Språkväljare** | Globikon i rubriken för språkväxling i realtid (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Anpassad datakatalog** | `DATA_DIR` env var för att åsidosätta standard `~/.omniroute` lagringssökväg |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Funktionsdetaljer
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Smart 4-lagers reserv
+Start MCP transport in stdio mode:
-Skapa kombinationer med automatisk reserv:
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 Kvotspårning i realtid
+Recommended validation flow:
-- Tokenförbrukning per leverantör
-- Återställ nedräkningen (5 timmar, dagligen, veckovis)
-- Kostnadsuppskattning för betalda nivåer
-- Månatliga utgiftsrapporter
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Formatöversättning
+Useful APIs for automation:
-Sömlös översättning mellan format:
-
-- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI-svar**
-- Ditt CLI-verktyg skickar OpenAI-format → OmniRoute översätter → Leverantör tar emot inbyggt format
-- Fungerar med alla verktyg som stöder anpassade OpenAI-slutpunkter
-- **Responssanering** — Tar bort icke-standardiserade fält för strikt OpenAI SDK-kompatibilitet
-- **Rollnormalisering** — `developer` → `system` för icke-OpenAI; `system` → `user` för GLM/ERNIE-modeller
-- **Think tag extrahering** — `` block → `reasoning_content` för tänkande modeller
-- **Structured output** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
-
-### 👥 Support för flera konton
-
-- Lägg till flera konton per leverantör
-- Auto round-robin eller prioritetsbaserad routing
-- Fallback till nästa konto när man når kvoten
-
-### 🔄 Auto Token Refresh
-
-- OAuth-tokens uppdateras automatiskt innan utgången
-- Ingen manuell återautentisering behövs
-- Sömlös upplevelse hos alla leverantörer
-
-### 🎨 Anpassade kombinationer
-
-- Skapa obegränsade modellkombinationer
-- 6 strategier: fyll-först, round-robin, kraft-av-två-val, slumpmässig, minst använda, kostnadsoptimerad
-- Dela kombinationer mellan enheter med Cloud Sync
-
-### 🏥 Health Dashboard
-
-- Systemstatus (upptid, version, minnesanvändning)
-- Strömbrytarstatus per leverantör (stängd/öppen/halvöppen)
-- Prisgränsstatus och aktiva låsningar
-- Signaturcachestatistik
-- Latens-telemetri (p50/p95/p99) + promptcache
-- Återställ hälsostatus med ett klick
-
-### 🔧 Översättarlekplats
-
-OmniRoute inkluderar en kraftfull inbyggd översättarlekplats med **4 lägen** för felsökning, testning och övervakning av API-översättningar:
-
-| Läge | Beskrivning |
-| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| **💻 Lekplats** | Direkt formatöversättning — klistra in valfri API-begäran och se direkt hur OmniRoute översätter den mellan leverantörsformat (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Inkluderar exempelmallar och automatisk identifiering av format. |
-| **💬 Chattestare** | Skicka riktiga chattförfrågningar genom OmniRoute och se hela tur och retur: din input, den översatta begäran, leverantörens svar och det översatta svaret tillbaka. Ovärderligt för att validera combo routing. |
-| **🧪 Testbänk** | Batchtestläge — definiera flera testfall med olika ingångar och förväntade utgångar, kör dem alla på en gång och jämför resultat mellan leverantörer och modeller. |
-| **📱 Live Monitor** | Bevakning av förfrågningar i realtid — titta på inkommande förfrågningar när de flödar genom OmniRoute, se formatöversättningar som sker live och identifiera problem direkt. |
-
-**Åtkomst:** Instrumentpanel → Översättare (sidofält)
-
-### 💾 Cloud Sync
-
-- Synkronisera leverantörer, kombinationer och inställningar mellan enheter
-- Automatisk bakgrundssynkronisering
-- Säker krypterad lagring
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Utvärderingar (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute inkluderar ett inbyggt utvärderingsramverk för att testa LLM-svarskvalitet mot en gyllene uppsättning. Få åtkomst till det via **Analytics → Evals** i instrumentpanelen.
+Discover the agent:
-### Inbyggt gyllene set
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-Det förinstallerade "OmniRoute Golden Set" innehåller 10 testfall som täcker:
+Send a task:
-- Hälsningar, matematik, geografi, kodgenerering
-- JSON-formatöverensstämmelse, översättning, markdown
-- Säkerhetsvägran (skadligt innehåll), räkning, boolesk logik
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Utvärderingsstrategier
+Manage lifecycle:
-| Strategi | Beskrivning | Exempel |
-| ---------- | ---------------------------------------------------- | -------------------------------- |
-| `exact` | Utdata måste matcha exakt | `"4"` |
-| `contains` | Utdata måste innehålla delsträng (skiftlägeskänslig) | `"Paris"` |
-| `regex` | Utdata måste matcha regexmönster | `"1.*2.*3"` |
-| `custom` | Anpassad JS-funktion returnerar true/false | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Installationsguide
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Prenumerationsleverantörer
+🧪 End-to-end protocol validation
+
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
### Claude Code (Pro/Max)
@@ -1067,7 +1438,7 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**Proffstips:** Använd Opus för komplexa uppgifter, Sonnet för snabbhet. OmniRoute spårar kvot per modell!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
@@ -1081,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (GRATIS 180K/månad!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1093,7 +1481,7 @@ Models:
gc/gemini-2.5-pro
```
-**Bäst värde:** Enorma gratis nivå! Använd detta före betalda nivåer.
+**Best Value:** Huge free tier! Use this before paid tiers.
### GitHub Copilot
@@ -1111,88 +1499,88 @@ Models:
-🔑 API-nyckelleverantörer
+🔑 API Key Providers
-### NVIDIA NIM (GRATIS 1000 krediter!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Registrera dig: [build.nvidia.com](https://build.nvidia.com)
-2. Få gratis API-nyckel (1000 slutsatspoäng ingår)
-3. Dashboard → Lägg till leverantör → NVIDIA NIM:
- - API-nyckel: `nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**Modeller:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` och 50+ till
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Proffstips:** OpenAI-kompatibelt API — fungerar sömlöst med OmniRoutes formatöversättning!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Registrera dig: [platform.deepseek.com](https://platform.deepseek.com)
-2. Hämta API-nyckel
-3. Dashboard → Lägg till leverantör → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Modeller:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (gratis nivå tillgänglig!)
+### Groq (Free Tier Available!)
-1. Registrera dig: [console.groq.com](https://console.groq.com)
-2. Skaffa API-nyckel (gratis nivå ingår)
-3. Dashboard → Lägg till leverantör → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Modeller:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Proffstips:** Ultrasnabb slutledning — bäst för realtidskodning!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (100+ modeller)
+### OpenRouter (100+ Models)
-1. Registrera dig: [openrouter.ai](https://openrouter.ai)
-2. Hämta API-nyckel
-3. Dashboard → Lägg till leverantör → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Modeller:** Få tillgång till 100+ modeller från alla större leverantörer genom en enda API-nyckel.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Billiga leverantörer (backup)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (Daglig återställning, $0,6/1M)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Registrera dig: [Zhipu AI](https://open.bigmodel.cn/)
-2. Hämta API-nyckel från Coding Plan
-3. Instrumentpanel → Lägg till API-nyckel:
- - Leverantör: `glm`
- - API-nyckel: `your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**Använd:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Proffstips:** Coding Plan erbjuder 3× kvot till 1/7 kostnad! Återställ dagligen 10:00.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (5 timmars återställning, $0,20/1M)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Registrera dig: [MiniMax](https://www.minimax.io/)
-2. Hämta API-nyckel
-3. Instrumentpanel → Lägg till API-nyckel
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Använd:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Proffstips:** Billigaste alternativet för långa sammanhang (1M tokens)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 ($9/månad platt)
+### Kimi K2 ($9/month flat)
-1. Prenumerera: [Moonshot AI](https://platform.moonshot.ai/)
-2. Hämta API-nyckel
-3. Instrumentpanel → Lägg till API-nyckel
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Använd:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Proffstips:** Fast $9/månad för 10 miljoner tokens = $0,90/1 miljon effektiv kostnad!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 GRATIS leverantörer (nödbackup)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 GRATIS modeller)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1207,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 GRATIS modeller)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1234,9 +1622,9 @@ Models:
-🎨 Skapa kombinationer
+🎨 Create Combos
-### Exempel 1: Maximera prenumeration → Billig backup
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1250,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### Exempel 2: Endast gratis (noll kostnad)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1265,9 +1653,9 @@ Cost: $0 forever!
-🔧 CLI-integration
+🔧 CLI Integration
-### Markör IDE
+### Cursor IDE
```
Settings → Models → Advanced:
@@ -1278,7 +1666,7 @@ Settings → Models → Advanced:
### Claude Code
-Använd sidan **CLI Tools** i instrumentpanelen för konfiguration med ett klick, eller redigera `~/.claude/settings.json` manuellt.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1291,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Alternativ 1 — Instrumentpanel (rekommenderas):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Alternativ 2 — Manuell:** Redigera `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1313,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **Obs!** OpenClaw fungerar endast med lokal OmniRoute. Använd `127.0.0.1` istället för `localhost` för att undvika problem med IPv6-upplösning.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### Cline / Fortsätt / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1325,96 +1713,231 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Felsökning
+## Felsökning
-Klicka för att expandera felsökningsguide
+Click to expand troubleshooting guide
-**"Språkmodellen gav inga meddelanden"**
+**"Language model did not provide messages"**
-- Leverantörskvoten är slut → Kontrollera instrumentpanelens kvotföljare
-- Lösning: Använd kombinationsalternativ eller byt till billigare nivå
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**Taxebegränsning**
+**Rate limiting**
-- Prenumerationskvot ute → Fallback till GLM/MiniMax
-- Lägg till kombination: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**OAuth-token har löpt ut**
+**OAuth token expired**
-- Automatisk uppdatering av OmniRoute
-- Om problemen kvarstår: Dashboard → Leverantör → Återanslut
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Höga kostnader**
+**High costs**
-- Kontrollera användningsstatistik i Dashboard → Kostnader
-- Byt primär modell till GLM/MiniMax
-- Använd gratis nivå (Gemini CLI, iFlow) för icke-kritiska uppgifter
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Dashboard öppnas på fel port**
+**Dashboard/API ports are wrong**
-- Set `PORT=20128` och `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Molnsynkroniseringsfel**
+**Cloud sync errors**
-- Verifiera att `BASE_URL` pekar på din löpinstans
-- Verifiera `CLOUD_URL` poäng till din förväntade molnslutpunkt
-- Håll `NEXT_PUBLIC_*` värden i linje med värden på serversidan
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Första inloggningen fungerar inte**
+**First login not working**
-- Kontrollera `INITIAL_PASSWORD` i `.env`
-- Om det inte är inställt är reservlösenordet `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Inga förfrågningsloggar**
+**No request logs**
-- Ställ in `ENABLE_REQUEST_LOGS=true` i `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Anslutningstest visar "Invalid" för OpenAI-kompatibla leverantörer**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Många leverantörer exponerar inte en `/models` slutpunkt
-- OmniRoute v1.0.6+ inkluderar reservvalidering via chattslutföranden
-- Se till att baswebbadressen innehåller suffixet `/v1`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 OAuth
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ VIKTIGT för användning av OmniRoute med VPS/Docker/serverfjärrkontroll**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-### Hur kan du göra Antigravity / Tvilling CLI på fjärrkontroller?
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-Os provedores **Antigravity** och **Gemini CLI** usam **Google OAuth 2.0** för 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.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-Som credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### Lösning: Konfigurera självständigt OAuth
+#### Solution: Configure your own OAuth credentials
-Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu service.
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
#### Passo a passo
-**1. Åtkomst till Google Cloud Console**
+**1. Acesse o Google Cloud Console**
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
**2. Crie um novo OAuth 2.0 Client ID**
-- Klicka på dem **"+ Skapa inloggningsuppgifter"** → **"OAuth-klient-ID"**
-- Typo de aplicativo: **"Webbapplikation"**
-- Namn: escolha qualquer nome (ex: `OmniRoute Remote`)
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. Adicione som auktoriserade omdirigerings-URI**
+**3. Adicione as Authorized Redirect URIs**
-Ingen campo **"Auktoriserade omdirigerings-URIs"**, adicione:
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
@@ -1422,11 +1945,11 @@ https://seu-servidor.com/callback
> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. Spara e kopia som credenciais**
+**4. Salve e copie as credenciais**
Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. Konfigurera som variáveis de ambiente**
+**5. Configure as variáveis de ambiente**
No seu `.env` (ou nas variáveis de ambiente do Docker):
@@ -1453,21 +1976,21 @@ docker restart omniroute
**7. Tente conectar novamente**
-Dashboard → Leverantörer → Antigravity (ou Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### Lösning temporário (som configurar credenciais próprias)
+#### Workaround temporário (sem configurar credenciais próprias)
Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. O OmniRoute abrirá en URL de autorização till Google
+1. O OmniRoute abrirá a URL de autorização do Google
2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
-3. **Kopiera en webbadress komplett** da barra de endereço do seu webbläsare (mesmo que a página não carregue)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
-5. Klicka på **"Anslut"**
+5. Clique em **"Connect"**
> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
@@ -1475,128 +1998,123 @@ Se não quiser criar credenciais próprias agora, ainda é possível usar o flux
---
-## 🛠️
+
-- **Körtid**: Node.js 18–22 LTS (⚠️ Node.js 24+ stöds **inte** — `better-sqlite3` inbyggda binärer är inkompatibla)
-- **Språk**: TypeScript 5.9 — **100 % TypeScript** över `src/` och `open-sse/` (v1.0.6)
-- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
-- **Databas**: LowDB (JSON) + SQLite (domäntillstånd + proxyloggar)
-- **Streaming**: Serversända händelser (SSE)
-- **Auth**: OAuth 2.0 (PKCE) + JWT + API-nycklar
-- **Test**: Node.js testlöpare (368+ enhetstester)
-- **CI/CD**: GitHub-åtgärder (automatisk npm-publicering + Docker Hub vid release)
-- **Webbplats**: [omniroute.online](https://omniroute.online)
-- **Paket**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **Resiliens**: Strömbrytare, exponentiell backoff, anti-dundrande flock, TLS-spoofing
-
----
-
-## 📖 Dokumentation
-
-| Dokument | Beskrivning |
-| -------------------------------------------- | ---------------------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | Leverantörer, kombinationer, CLI-integration, distribution |
-| [API Reference](docs/API_REFERENCE.md) | Alla slutpunkter med exempel |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | Vanliga problem och lösningar |
-| [Architecture](docs/ARCHITECTURE.md) | Systemarkitektur och interna delar |
-| [Contributing](CONTRIBUTING.md) | Utvecklingsupplägg och riktlinjer |
-| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0-specifikation |
-| [Security Policy](SECURITY.md) | Sårbarhetsrapportering och säkerhetsrutiner |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Komplett guide: VM + nginx + Cloudflare-installation |
-| [Features Gallery](docs/FEATURES.md) | Visuell visning av instrumentpanelen med skärmdumpar |
-
-### 📸 Förhandsgranskning av instrumentpanelen
+## 🛠️ Tech Stack
-Klicka för att se skärmdumpar på instrumentpanelen
+Click to expand tech stack details
-| Sida | Skärmdump |
-| --------------------- | ------------------------------------------------- |
-| **Leverantörer** |  |
-| **Kombos** |  |
-| **Analytics** |  |
-| **Hälsa** |  |
-| **Översättare** |  |
-| **Inställningar** |  |
-| **CLI-verktyg** |  |
-| **Användningsloggar** |  |
-| **Slutpunkt** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## Dokumentation
-OmniRoute har **210+ funktioner planerade** över flera utvecklingsfaser. Här är nyckelområdena:
-
-| Kategori | Planerade funktioner | Höjdpunkter |
-| ------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------ |
-| 🧠 **Routing & intelligens** | 25+ | Routning med lägsta latens, taggbaserad routing, kvotförhandskontroll, val av P2C-konto |
-| 🔒 **Säkerhet och efterlevnad** | 20+ | SSRF-härdning, cloaking av autentiseringsuppgifter, hastighetsgräns per endpoint, hanteringsnyckelomfattning |
-| 📊 **Observerbarhet** | 15+ | OpenTelemetry-integration, kvotövervakning i realtid, kostnadsspårning per modell |
-| 🔄 **Providerintegrationer** | 20+ | Dynamiskt modellregister, nedkylning av leverantörer, Codex för flera konton, Copilot-kvotanalys |
-| ⚡ **Prestanda** | 15+ | Dubbla cachelager, promptcache, svarscache, streaming keepalive, batch API |
-| 🌐 **Ekosystem** | 10+ | WebSocket API, config hot-reload, distribuerad config store, kommersiellt läge |
-
-### 🔜 Kommer snart
-
-- 🔗 **OpenCode Integration** — Inbyggt leverantörsstöd för OpenCode AI-kodnings-IDE
-- 🔗 **TRAE Integration** — Fullständigt stöd för TRAE AI-utvecklingsramverket
-- 📦 **Batch API** — Asynkron batchbearbetning för bulkförfrågningar
-- 🎯 **Taggbaserad routing** — Ruttbegäranden baserade på anpassade taggar och metadata
-- 💰 **Lägsta kostnadsstrategi** — Välj automatiskt den billigaste tillgängliga leverantören
-
-> 📝 Fullständiga funktionsspecifikationer tillgängliga i [link](docs/new-features/) (217 detaljerade specifikationer)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 Bidragsgivare
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Hur man bidrar
+### How to Contribute
-1. Dela förvaret
-2. Skapa din funktionsgren (`git checkout -b feature/amazing-feature`)
-3. Bekräfta dina ändringar (`git commit -m 'Add amazing feature'`)
-4. Tryck till grenen (`git push origin feature/amazing-feature`)
-5. Öppna en Pull Request
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Se [CONTRIBUTING.md](CONTRIBUTING.md) för detaljerade riktlinjer.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Släpper en ny version
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Stjärnhistorik
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Tack
+## 🙏 Acknowledgments
-Speciellt tack till **[9router](https://github.com/decolua/9router)** av **[decolua](https://github.com/decolua)** — originalprojektet som inspirerade denna gaffel. OmniRoute bygger på den otroliga grunden med ytterligare funktioner, multimodala API:er och en fullständig TypeScript-omskrivning.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Särskilt tack till **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — den ursprungliga Go-implementeringen som inspirerade denna JavaScript-port.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Licens
+## Licens
-MIT-licens - se [LICENSE](LICENSE) för detaljer.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Byggd med ❤️ för utvecklare som kodar 24/7
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/sv/docs/FEATURES.md b/docs/i18n/sv/docs/FEATURES.md
new file mode 100644
index 0000000000..e0054ba36c
--- /dev/null
+++ b/docs/i18n/sv/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Svenska)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/th/README.md b/docs/i18n/th/README.md
index 1ffdce9b1b..73fa7269fd 100644
--- a/docs/i18n/th/README.md
+++ b/docs/i18n/th/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — เกตเวย์ AI ฟรี
+# 🚀 OmniRoute — The Free AI Gateway (ไทย)
-### อย่าหยุดเขียนโค้ด การกำหนดเส้นทางอัจฉริยะไปยัง **โมเดล AI ฟรีและราคาประหยัด** พร้อมทางเลือกสำรองอัตโนมัติ
-
-_พร็อกซี API สากลของคุณ — จุดสิ้นสุดเดียว ผู้ให้บริการมากกว่า 36 ราย เวลาหยุดทำงานเป็นศูนย์_
-
-**เสร็จสิ้นการแชท • การฝัง • การสร้างภาพ • เสียง • การจัดอันดับใหม่ • TypeScript 100%**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 ผู้ให้บริการ AI ฟรีสำหรับตัวแทนการเขียนโค้ดที่คุณชื่นชอบ
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_เชื่อมต่อเครื่องมือ IDE หรือ CLI ที่ขับเคลื่อนด้วย AI ผ่าน OmniRoute — เกตเวย์ API ฟรีสำหรับการเข้ารหัสไม่จำกัด_
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _เชื่อมต่อเครื่องมือ IDE หรือ CLI
|
-📡 ตัวแทนทั้งหมดเชื่อมต่อผ่าน http://localhost:20128/v1 หรือ http://cloud.omniroute.online/v1 — การกำหนดค่าเดียว โมเดลไม่จำกัด และ โควต้า
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 ทำไมต้อง OmniRoute?
-
-**หยุดเสียเงินและจำกัดขีดจำกัด:**
-
--
โควต้าการสมัครจะหมดอายุโดยไม่ได้ใช้ทุกเดือน
--
การจำกัดอัตราจะทำให้คุณไม่สามารถเขียนโค้ดกลางคันได้
--
API ราคาแพง ($20-50/เดือนต่อผู้ให้บริการ)
--
การสลับระหว่างผู้ให้บริการด้วยตนเอง
-
-**OmniRoute แก้ปัญหานี้:**
-
-- ✅ **เพิ่มการสมัครรับข้อมูลสูงสุด** - ติดตามโควต้า ใช้ทุกบิตก่อนรีเซ็ต
-- ✅ **ทางเลือกสำรองอัตโนมัติ** - การสมัครสมาชิก → คีย์ API → ราคาถูก → ฟรี ไม่มีการหยุดทำงาน
-- ✅ **หลายบัญชี** - หมุนเวียนระหว่างบัญชีต่อผู้ให้บริการ
-- ✅ **สากล** - ใช้งานได้กับ Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw และเครื่องมือ CLI ใดๆ
-
----
-
-## 📧 สนับสนุน
-
-> 💌 **เข้าร่วมชุมชนของเรา!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — รับความช่วยเหลือ แบ่งปันเคล็ดลับ และติดตามข่าวสารล่าสุด
-
-- **เว็บไซต์**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **ปัญหา**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **โปรเจ็กต์ดั้งเดิม**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 มันทำงานอย่างไร
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,452 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 สิ่งที่ OmniRoute แก้ปัญหาได้ — 30 คะแนนปัญหาและกรณีการใช้งานจริง
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **นักพัฒนาทุกคนที่ใช้เครื่องมือ AI ต้องเผชิญกับปัญหาเหล่านี้ทุกวัน** OmniRoute ถูกสร้างขึ้นเพื่อแก้ไขปัญหาทั้งหมด ตั้งแต่ค่าใช้จ่ายที่มากเกินไปไปจนถึงการบล็อกระดับภูมิภาค จากโฟลว์ OAuth ที่เสียหาย ไปจนถึงการทำงานของโปรโตคอลและความสามารถในการสังเกตระดับองค์กร
+> **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 protocol operations and enterprise observability.
-💸 1. "ฉันจ่ายค่าสมัครสมาชิกราคาแพงแต่ยังคงถูกขัดจังหวะด้วยขีดจำกัด"
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-นักพัฒนาจ่ายเงิน $20–200/เดือนสำหรับ Claude Pro, Codex Pro หรือ GitHub Copilot แม้จะจ่ายเงิน โควต้าก็มีเพดาน — การใช้งาน 5 ชม. ขีดจำกัดรายสัปดาห์ หรือขีดจำกัดอัตราต่อนาที เซสชันการเข้ารหัสกลาง ผู้ให้บริการหยุดการตอบสนอง และนักพัฒนาสูญเสียความลื่นไหลและประสิทธิภาพการทำงาน
+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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **ทางเลือกสำรองอัจฉริยะ 4 ระดับ** — หากโควต้าการสมัครสมาชิกหมด จะเปลี่ยนเส้นทางไปยังคีย์ API → ราคาถูก → ฟรีโดยไม่มีการแทรกแซงด้วยตนเอง
-- **การติดตามโควต้าแบบเรียลไทม์** — แสดงการใช้โทเค็นแบบเรียลไทม์พร้อมการนับถอยหลังการรีเซ็ต (5 ชม. รายวัน รายสัปดาห์)
-- **การสนับสนุนหลายบัญชี** — หลายบัญชีต่อผู้ให้บริการพร้อมการหมุนเวียนอัตโนมัติ — เมื่อบัญชีหนึ่งหมด ให้สลับไปยังบัญชีถัดไป
-- **คอมโบแบบกำหนดเอง** — ห่วงโซ่ทางเลือกที่ปรับแต่งได้พร้อมกลยุทธ์การปรับสมดุล 6 แบบ (เติมก่อน, ปัดเศษ, P2C, สุ่ม, ใช้น้อยที่สุด, ปรับต้นทุนให้เหมาะสม)
-- **โควต้าธุรกิจ Codex** — การตรวจสอบโควต้าพื้นที่ทำงานของธุรกิจ/ทีมโดยตรงในแดชบอร์ด
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. "ฉันจำเป็นต้องใช้ผู้ให้บริการหลายราย แต่แต่ละรายมี API ที่แตกต่างกัน"
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI ใช้รูปแบบหนึ่ง Claude (Anthropic) ใช้อีกรูปแบบหนึ่ง Gemini ยังใช้อีกรูปแบบหนึ่ง หากผู้พัฒนาต้องการทดสอบโมเดลจากผู้ให้บริการหลายรายหรือทางเลือกระหว่างผู้ให้บริการ พวกเขาจำเป็นต้องกำหนดค่า SDK ใหม่ เปลี่ยนตำแหน่งข้อมูล และจัดการกับรูปแบบที่เข้ากันไม่ได้ ผู้ให้บริการแบบกำหนดเอง (FriendLI, NIM) มีจุดสิ้นสุดโมเดลที่ไม่ได้มาตรฐาน
+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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **Unified Endpoint** — `http://localhost:20128/v1` เดียวทำหน้าที่เป็นพร็อกซีสำหรับผู้ให้บริการมากกว่า 36 ราย
-- **การแปลรูปแบบ** — อัตโนมัติและโปร่งใส: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-- **การฆ่าเชื้อการตอบสนอง** — ตัดช่องที่ไม่ได้มาตรฐาน (`x_groq`, `usage_breakdown`, `service_tier`) ที่ทำลาย OpenAI SDK v1.83+
-- **การปรับบทบาทให้เป็นมาตรฐาน** — แปลง `developer` → `system` สำหรับผู้ให้บริการที่ไม่ใช่ OpenAI `system` → `user` สำหรับ GLM/ERNIE
-- **คิดการแยกแท็ก** — แยกบล็อก `` จากรุ่นอย่าง DeepSeek R1 ให้เป็น `reasoning_content` ที่ได้มาตรฐาน
-- **เอาต์พุตที่มีโครงสร้างสำหรับราศีเมถุน** — `json_schema` → `responseMimeType`/`responseSchema` การแปลงอัตโนมัติ
-- **`stream` มีค่าเริ่มต้นเป็น `false`** — สอดคล้องกับข้อกำหนด OpenAI หลีกเลี่ยง SSE ที่ไม่คาดคิดใน Python/Rust/Go SDK
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. "ผู้ให้บริการ AI ของฉันบล็อกภูมิภาค/ประเทศของฉัน"
+🌐 3. "My AI provider blocks my region/country"
-ผู้ให้บริการเช่น OpenAI/Codex บล็อกการเข้าถึงจากภูมิภาคทางภูมิศาสตร์บางแห่ง ผู้ใช้ได้รับข้อผิดพลาดเช่น `unsupported_country_region_territory` ในระหว่างการเชื่อมต่อ OAuth และ API สิ่งนี้น่าหงุดหงิดเป็นพิเศษสำหรับนักพัฒนาจากประเทศกำลังพัฒนา
+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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **การกำหนดค่าพร็อกซี 3 ระดับ** — พร็อกซีที่กำหนดค่าได้ 3 ระดับ: ทั่วโลก (การรับส่งข้อมูลทั้งหมด) ต่อผู้ให้บริการ (ผู้ให้บริการรายเดียวเท่านั้น) และต่อการเชื่อมต่อ/คีย์
-- **ป้ายพร็อกซีที่ใช้รหัสสี** — ตัวบ่งชี้ภาพ: 🟢 พร็อกซีส่วนกลาง, 🟡 พร็อกซีผู้ให้บริการ, 🔵 พร็อกซีการเชื่อมต่อ แสดง IP เสมอ
-- **การแลกเปลี่ยนโทเค็น OAuth ผ่านพร็อกซี** — โฟลว์ OAuth ยังต้องผ่านพร็อกซีด้วย การแก้ปัญหา `unsupported_country_region_territory`
-- **การทดสอบการเชื่อมต่อผ่านพร็อกซี** — การทดสอบการเชื่อมต่อใช้พร็อกซีที่กำหนดค่าไว้ (ไม่มีการบายพาสโดยตรงอีกต่อไป)
-- **รองรับ SOCKS5** — รองรับพร็อกซี SOCKS5 เต็มรูปแบบสำหรับการกำหนดเส้นทางขาออก
-- **การปลอมแปลงลายนิ้วมือ TLS** — ลายนิ้วมือ TLS เหมือนเบราว์เซอร์ผ่าน `wreq-js` เพื่อเลี่ยงการตรวจจับบอท
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. "ฉันต้องการใช้ AI ในการเขียนโค้ด แต่ไม่มีเงิน"
+🆓 4. "I want to use AI for coding but I have no money"
-ไม่ใช่ทุกคนที่สามารถจ่าย $20–200/เดือน สำหรับการสมัครสมาชิก AI นักศึกษา นักพัฒนาจากประเทศเกิดใหม่ ผู้ที่สมัครเล่น และฟรีแลนซ์ต้องการเข้าถึงโมเดลคุณภาพโดยไม่มีค่าใช้จ่าย
+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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **ผู้ให้บริการ Tier ฟรีในตัว** — รองรับเนทิฟสำหรับผู้ให้บริการฟรี 100%: iFlow (8 รุ่นไม่จำกัด), Qwen (3 รุ่นไม่จำกัด), Kiro (Claude ฟรี), Gemini CLI (ฟรี 180K/เดือน)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **คอมโบฟรีเท่านั้น** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/เดือน โดยไม่มีการหยุดทำงาน
-- **เครดิตฟรี NVIDIA NIM** — รวมเครดิตฟรี 1,000 รายการ
-- **กลยุทธ์การปรับต้นทุนให้เหมาะสม** — กลยุทธ์การกำหนดเส้นทางที่จะเลือกผู้ให้บริการที่ถูกที่สุดที่มีอยู่โดยอัตโนมัติ
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. "ฉันต้องปกป้องเกตเวย์ AI ของฉันจากการเข้าถึงที่ไม่ได้รับอนุญาต"
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-เมื่อเปิดเผยเกตเวย์ AI ไปยังเครือข่าย (LAN, VPS, Docker) ใครก็ตามที่มีที่อยู่จะสามารถใช้โทเค็น/โควต้าของนักพัฒนาได้ หากไม่มีการป้องกัน API ก็เสี่ยงต่อการถูกนำไปใช้ในทางที่ผิด การแทรกทันที และการละเมิด
+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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **การจัดการคีย์ API** — การสร้าง การหมุนเวียน และการกำหนดขอบเขตต่อผู้ให้บริการด้วยเพจ `/dashboard/api-manager` เฉพาะ
-- **การอนุญาตระดับโมเดล** — จำกัดคีย์ API ให้กับโมเดลเฉพาะ (`openai/*` รูปแบบไวด์การ์ด) พร้อมสลับอนุญาตทั้งหมด/จำกัด
-- **การป้องกันปลายทาง API** — ต้องใช้รหัสสำหรับ `/v1/models` และบล็อกผู้ให้บริการบางรายจากรายการ
-- **Auth Guard + การป้องกัน CSRF** — เส้นทางแดชบอร์ดทั้งหมดที่ได้รับการป้องกันด้วยมิดเดิลแวร์ `withAuth` + โทเค็น CSRF
-- **ตัวจำกัดอัตรา** — การจำกัดอัตราต่อ IP ด้วยหน้าต่างที่กำหนดค่าได้
-- **การกรอง IP** — รายการที่อนุญาต/รายการบล็อกสำหรับการควบคุมการเข้าถึง
-- **Prompt Injection Guard** — การฆ่าเชื้อจากรูปแบบการแจ้งเตือนที่เป็นอันตราย
-- **การเข้ารหัส AES-256-GCM** — ข้อมูลประจำตัวได้รับการเข้ารหัสเมื่อไม่ได้ใช้งาน
+- **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. "ผู้ให้บริการของฉันหยุดทำงานและฉันสูญเสียขั้นตอนการเขียนโค้ด"
+🛑 6. "My provider went down and I lost my coding flow"
-ผู้ให้บริการ AI อาจไม่เสถียร ส่งกลับข้อผิดพลาด 5xx หรือถึงขีดจำกัดอัตราชั่วคราว หากผู้พัฒนาขึ้นอยู่กับผู้ให้บริการรายเดียว ผู้ให้บริการเหล่านั้นจะถูกขัดจังหวะ หากไม่มีเซอร์กิตเบรกเกอร์ การลองซ้ำหลายครั้งอาจทำให้แอปพลิเคชันเสียหายได้
+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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **เซอร์กิตเบรกเกอร์ต่อผู้ให้บริการ** — เปิด/ปิดอัตโนมัติด้วยเกณฑ์และคูลดาวน์ที่กำหนดค่าได้ (ปิด/เปิด/เปิดครึ่งหนึ่ง)
-- **Exponential Backoff** — ความล่าช้าในการลองใหม่อย่างต่อเนื่อง
-- **Anti-Thundering Herd** — Mutex + การป้องกันเซมาฟอร์จากพายุที่ลองใหม่พร้อมกัน
-- **Combo Fallback Chains** — หากผู้ให้บริการหลักล้มเหลว จะตกผ่านห่วงโซ่โดยอัตโนมัติโดยไม่มีการแทรกแซง
-- **Combo Circuit Breaker** — ปิดการใช้งานผู้ให้บริการที่ล้มเหลวภายในคอมโบเชนโดยอัตโนมัติ
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-- **แดชบอร์ดสุขภาพ** — การตรวจสอบสถานะการออนไลน์ สถานะของเซอร์กิตเบรกเกอร์ การล็อก สถิติแคช เวลาแฝง p50/p95/p99
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🏽 7. "การกำหนดค่าเครื่องมือ AI แต่ละรายการนั้นน่าเบื่อและซ้ำซาก"
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-นักพัฒนาใช้ Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... เครื่องมือแต่ละอันจำเป็นต้องมีการกำหนดค่าที่แตกต่างกัน (จุดสิ้นสุด API, คีย์, โมเดล) การกำหนดค่าใหม่เมื่อเปลี่ยนผู้ให้บริการหรือรุ่นเป็นการเสียเวลา
+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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **แดชบอร์ดเครื่องมือ CLI** — หน้าเฉพาะพร้อมการตั้งค่าเพียงคลิกเดียวสำหรับ Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-- **GitHub Copilot Config Generator** — สร้าง `chatLanguageModels.json` สำหรับโค้ด VS พร้อมการเลือกรุ่นจำนวนมาก
-- **ตัวช่วยสร้างการเริ่มต้นใช้งาน** — คำแนะนำการตั้งค่า 4 ขั้นตอนสำหรับผู้ใช้ครั้งแรก
-- **จุดสิ้นสุดเดียว ทุกรุ่น** — กำหนดค่า `http://localhost:20128/v1` ครั้งเดียว เข้าถึงผู้ให้บริการมากกว่า 36 ราย
+- **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 67+ providers
-🔑 8. "การจัดการโทเค็น OAuth จากผู้ให้บริการหลายรายนั้นช่างเลวร้าย"
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot — ทั้งหมดใช้ OAuth 2.0 โดยมีโทเค็นที่กำลังจะหมดอายุ นักพัฒนาจำเป็นต้องตรวจสอบความถูกต้องอีกครั้งอย่างต่อเนื่อง จัดการกับ `client_secret is missing`, `redirect_uri_mismatch` และความล้มเหลวบนเซิร์ฟเวอร์ระยะไกล OAuth บน LAN/VPS เป็นปัญหาอย่างยิ่ง
+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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **รีเฟรชโทเค็นอัตโนมัติ** — โทเค็น OAuth รีเฟรชในพื้นหลังก่อนหมดอายุ
-- **OAuth 2.0 (PKCE) ในตัว** — โฟลว์อัตโนมัติสำหรับ Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **OAuth หลายบัญชี** — หลายบัญชีต่อผู้ให้บริการผ่านการดึงโทเค็น JWT/ID
-- **OAuth LAN/Remote Fix** — การตรวจจับ IP ส่วนตัวสำหรับ `redirect_uri` + โหมด URL แบบแมนนวลสำหรับเซิร์ฟเวอร์ระยะไกล
-- **OAuth ที่อยู่เบื้องหลัง Nginx** — ใช้ `window.location.origin` สำหรับความเข้ากันได้ของ Reverse Proxy
-- **คู่มือ OAuth ระยะไกล** — คำแนะนำทีละขั้นตอนสำหรับข้อมูลรับรอง Google Cloud บน VPS/Docker
+- **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. "ฉันไม่รู้ว่าใช้เงินไปเท่าไหร่หรือที่ไหน"
+📊 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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **แดชบอร์ดการวิเคราะห์ต้นทุน** — การติดตามต้นทุนต่อโทเค็นและการจัดการงบประมาณต่อผู้ให้บริการ
-- **ขีดจำกัดงบประมาณต่อระดับ** — เพดานการใช้จ่ายต่อระดับที่ทำให้เกิดทางเลือกสำรองอัตโนมัติ
-- **การกำหนดค่าราคาต่อรุ่น** — ราคาที่กำหนดค่าได้ต่อรุ่น
-- **สถิติการใช้งานต่อคีย์ API** — จำนวนคำขอและการประทับเวลาที่ใช้ล่าสุดต่อคีย์
-- **แดชบอร์ดการวิเคราะห์** — การ์ดสถิติ แผนภูมิการใช้งานโมเดล ตารางผู้ให้บริการพร้อมอัตราความสำเร็จและเวลาแฝง
+- **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. "ฉันไม่สามารถวินิจฉัยข้อผิดพลาดและปัญหาในการเรียก AI ได้"
+🐛 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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **Unified Logs Dashboard** — 4 แท็บ: บันทึกคำขอ, บันทึกพร็อกซี, บันทึกการตรวจสอบ, คอนโซล
-- **โปรแกรมดูบันทึกคอนโซล** — โปรแกรมดูสไตล์เทอร์มินัลแบบเรียลไทม์พร้อมระดับรหัสสี เลื่อนอัตโนมัติ ค้นหา ตัวกรอง
-- **SQLite Proxy Logs** — บันทึกถาวรที่รอดจากการรีสตาร์ทเซิร์ฟเวอร์
-- **Translator Playground** — โหมดแก้ไขข้อบกพร่อง 4 โหมด: Playground (การแปลรูปแบบ), Chat Tester (ไป-กลับ), ม้านั่งทดสอบ (เป็นกลุ่ม), Live Monitor (เรียลไทม์)
-- **ร้องขอการตรวจวัดทางไกล** — p50/p95/p99 latency + การติดตาม X-Request-Id
-- **การบันทึกตามไฟล์พร้อมการหมุน** — ตัวสกัดกั้นคอนโซลจะบันทึกทุกอย่างไปยังบันทึก JSON ด้วยการหมุนตามขนาด
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. "การปรับใช้และการบำรุงรักษาเกตเวย์นั้นซับซ้อน"
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-การติดตั้ง การกำหนดค่า และการบำรุงรักษาพร็อกซี AI ในสภาพแวดล้อมที่แตกต่างกัน (ภายในเครื่อง, VPS, Docker, คลาวด์) ต้องใช้แรงงานมาก ปัญหาเช่นเส้นทางฮาร์ดโค้ด `EACCES` บนไดเร็กทอรี ข้อขัดแย้งของพอร์ต และการสร้างข้ามแพลตฟอร์มจะเพิ่มแรงเสียดทาน
+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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **การติดตั้งทั่วโลก npm** — `npm install -g omniroute && omniroute` — เสร็จแล้ว
-- **นักเทียบท่าหลายแพลตฟอร์ม** — AMD64 + ARM64 ดั้งเดิม (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **โปรไฟล์นักเทียบท่าเขียน** — `base` (ไม่มีเครื่องมือ CLI) และ `cli` (พร้อม Claude Code, Codex, OpenClaw)
-- **แอป Electron Desktop** — แอปเนทีฟสำหรับ Windows/macOS/Linux พร้อมถาดระบบ เริ่มอัตโนมัติ โหมดออฟไลน์
-- **โหมดแยกพอร์ต** — API และแดชบอร์ดบนพอร์ตแยกกันสำหรับสถานการณ์ขั้นสูง (พร็อกซีย้อนกลับ เครือข่ายคอนเทนเนอร์)
-- **Cloud Sync** — กำหนดค่าการซิงโครไนซ์ระหว่างอุปกรณ์ผ่าน Cloudflare Workers
-- **การสำรองข้อมูล DB** — การสำรองข้อมูล กู้คืน ส่งออก และนำเข้าการตั้งค่าทั้งหมดโดยอัตโนมัติ
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. "อินเทอร์เฟซเป็นภาษาอังกฤษเท่านั้น และทีมของฉันไม่พูดภาษาอังกฤษ"
+🌍 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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **แดชบอร์ด i18n — 30 ภาษา** — ทั้งหมด 500+ คีย์ที่แปล รวมถึงอารบิก บัลแกเรีย เดนมาร์ก เยอรมัน สเปน ฟินแลนด์ ฝรั่งเศส ฮิบรู ฮินดี ฮังการี อินโดนีเซีย อิตาลี ญี่ปุ่น เกาหลี มาเลย์ ดัตช์ นอร์เวย์ โปแลนด์ โปรตุเกส (PT/BR) โรมาเนีย รัสเซีย สโลวาเกีย สวีเดน ไทย ยูเครน เวียดนาม จีน ฟิลิปปินส์ อังกฤษ
-- **รองรับ RTL** — รองรับภาษาอาหรับและฮีบรูจากขวาไปซ้าย
-- **README หลายภาษา** — การแปลเอกสารฉบับสมบูรณ์ 30 รายการ
-- **ตัวเลือกภาษา** — ไอคอนลูกโลกในส่วนหัวสำหรับการสลับแบบเรียลไทม์
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. "ฉันต้องการมากกว่าการแชท — ฉันต้องการการฝัง รูปภาพ เสียง"
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-AI ไม่ใช่แค่การแชทให้เสร็จสิ้นเท่านั้น นักพัฒนาจำเป็นต้องสร้างภาพ ถอดเสียง สร้างการฝังสำหรับ RAG จัดอันดับเอกสารใหม่ และกลั่นกรองเนื้อหา API แต่ละรายการมีจุดสิ้นสุดและรูปแบบที่แตกต่างกัน
+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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **การฝัง** — `/v1/embeddings` พร้อมผู้ให้บริการ 6 รายและรุ่น 9+
-- **การสร้างภาพ** — `/v1/images/generations` พร้อมผู้ให้บริการ 10 รายและโมเดลมากกว่า 20 รุ่น (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **ข้อความเป็นวิดีโอ** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) และ SD WebUI
-- **ข้อความเป็นเพลง** — `/v1/music/generations` — ComfyUI (เปิดเสียงที่เสถียร, MusicGen)
-- **การถอดเสียง** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **การอ่านออกเสียงข้อความ** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT และผู้ให้บริการที่มีอยู่
-- **การกลั่นกรอง** — `/v1/moderations` — การตรวจสอบความปลอดภัยของเนื้อหา
-- **การจัดอันดับใหม่** — `/v1/rerank` — การจัดอันดับความเกี่ยวข้องของเอกสารใหม่
-- **Responses API** — รองรับ `/v1/responses` เต็มรูปแบบสำหรับ Codex
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. "ฉันไม่มีวิธีทดสอบและเปรียบเทียบคุณภาพระหว่างรุ่นต่างๆ"
+🧪 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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **การประเมิน LLM** — การทดสอบชุดทองพร้อมเคสที่โหลดไว้ล่วงหน้า 10 เคส ซึ่งครอบคลุมการทักทาย คณิตศาสตร์ ภูมิศาสตร์ การสร้างโค้ด การปฏิบัติตาม JSON การแปล การมาร์กดาวน์ การปฏิเสธด้านความปลอดภัย
-- **4 กลยุทธ์การจับคู่** — `exact`, `contains`, `regex`, `custom` (ฟังก์ชัน JS)
-- **ม้านั่งทดสอบสนามเด็กเล่นสำหรับนักแปล** — การทดสอบเป็นกลุ่มที่มีอินพุตหลายอินพุตและเอาต์พุตที่คาดหวัง การเปรียบเทียบข้ามผู้ให้บริการ
-- **เครื่องมือทดสอบการแชท** — ไป-กลับเต็มรูปแบบพร้อมการเรนเดอร์การตอบสนองด้วยภาพ
-- **Live Monitor** — สตรีมคำขอทั้งหมดที่ไหลผ่านพร็อกซีแบบเรียลไทม์
+- **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. "ฉันต้องปรับขนาดโดยไม่สูญเสียประสิทธิภาพ"
+📈 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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **Semantic Cache** — แคชสองชั้น (ลายเซ็น + ความหมาย) ช่วยลดต้นทุนและเวลาแฝง
-- **คำขอ Idempotency** — หน้าต่างการขจัดข้อมูลซ้ำซ้อน 5 วินาทีสำหรับคำขอที่เหมือนกัน
-- **การตรวจจับขีดจำกัดอัตรา** — RPM ต่อผู้ให้บริการ ช่องว่างขั้นต่ำ และการติดตามพร้อมกันสูงสุด
-- **ขีดจำกัดอัตราที่แก้ไขได้** — ค่าเริ่มต้นที่กำหนดค่าได้ในการตั้งค่า → ความยืดหยุ่นด้วยความคงอยู่
-- **แคชการตรวจสอบคีย์ API** — แคช 3 ระดับสำหรับประสิทธิภาพการผลิต
-- **แดชบอร์ดสุขภาพพร้อมการวัดและส่งข้อมูลทางไกล** — เวลาแฝง p50/p95/p99 สถิติแคช เวลาทำงาน
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. "ฉันต้องการควบคุมพฤติกรรมของโมเดลทั่วโลก"
+🤖 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.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- **การแจ้งพร้อมท์ของระบบ** — พร้อมท์ทั่วโลกนำไปใช้กับคำขอทั้งหมด
-- **การตรวจสอบงบประมาณการคิด** — การควบคุมการจัดสรรโทเค็นการให้เหตุผลต่อคำขอ (การส่งผ่าน, อัตโนมัติ, กำหนดเอง, การปรับตัว)
-- **6 กลยุทธ์การกำหนดเส้นทาง** — กลยุทธ์ระดับโลกที่กำหนดวิธีกระจายคำขอ
-- **Wildcard Router** — รูปแบบ `provider/*` จะกำหนดเส้นทางแบบไดนามิกไปยังผู้ให้บริการใดๆ
-- **Combo Enable/Disable Toggle** — สลับคอมโบได้โดยตรงจากแดชบอร์ด
-- **สลับผู้ให้บริการ** — เปิด/ปิดการเชื่อมต่อทั้งหมดสำหรับผู้ให้บริการได้ด้วยคลิกเดียว
-- **ผู้ให้บริการที่ถูกบล็อก** — ยกเว้นผู้ให้บริการบางรายจากรายการ `/v1/models`
+- **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
-🧰 17. "ฉันต้องการเครื่องมือ MCP เนื่องจากความสามารถด้านผลิตภัณฑ์ระดับเฟิร์สคลาส"
+🧰 17. "I need MCP tools as first-class product capabilities"
-เกตเวย์ AI จำนวนมากเปิดเผย MCP เป็นเพียงรายละเอียดการใช้งานที่ซ่อนอยู่เท่านั้น ทีมจำเป็นต้องมีชั้นการปฏิบัติงานที่มองเห็นได้และจัดการได้
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- MCP ปรากฏในการนำทางแดชบอร์ดและแท็บโปรโตคอลปลายทาง
-- หน้าการจัดการ MCP เฉพาะพร้อมกระบวนการ เครื่องมือ ขอบเขต และการตรวจสอบ
-- การเริ่มต้นอย่างรวดเร็วในตัวสำหรับ `omniroute --mcp` และการเริ่มต้นใช้งานไคลเอ็นต์
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "ฉันต้องการการประสาน A2A พร้อมเส้นทางงานการซิงค์ + สตรีม"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-เวิร์กโฟลว์ของตัวแทนต้องการทั้งการตอบกลับโดยตรงและการดำเนินการสตรีมที่ใช้เวลานานพร้อมการควบคุมวงจรชีวิต
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- จุดสิ้นสุด A2A JSON-RPC (`POST /a2a`) พร้อม `message/send` และ `message/stream`
-- การสตรีม SSE พร้อมการเผยแพร่สถานะเทอร์มินัล
-- API วงจรชีวิตของงานสำหรับ `tasks/get` และ `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. "ฉันต้องการความสมบูรณ์ของกระบวนการ MCP ที่แท้จริง ไม่ใช่สถานะที่เดาได้"
+🛰️ 19. "I need real MCP process health, not guessed status"
-ทีมปฏิบัติการจำเป็นต้องทราบว่า MCP ยังคงอยู่จริงหรือไม่ ไม่ใช่แค่ว่า API สามารถเข้าถึงได้หรือไม่
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- ไฟล์ฮาร์ทบีทรันไทม์พร้อม PID, การประทับเวลา, การขนส่ง, จำนวนเครื่องมือ และโหมดขอบเขต
-- API สถานะ MCP รวมการเต้นของหัวใจ + กิจกรรมล่าสุด
-- การ์ดสถานะ UI สำหรับความสดใหม่ของกระบวนการ/สถานะการออนไลน์/การเต้นของหัวใจ
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "ฉันต้องการการทำงานของเครื่องมือ MCP ที่ตรวจสอบได้"
+📋 20. "I need auditable MCP tool execution"
-เมื่อเครื่องมือเปลี่ยนแปลงการกำหนดค่าหรือทริกเกอร์การดำเนินการ ทีมจำเป็นต้องมีการตรวจสอบย้อนกลับทางนิติเวช
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- การบันทึกการตรวจสอบที่ได้รับการสนับสนุนจาก SQLite สำหรับการเรียกใช้เครื่องมือ MCP
-- กรองตามเครื่องมือ ความสำเร็จ/ความล้มเหลว คีย์ API และการแบ่งหน้า
-- ตารางการตรวจสอบแดชบอร์ด + จุดสิ้นสุดสถิติสำหรับระบบอัตโนมัติ
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "ฉันต้องการสิทธิ์ MCP ที่กำหนดขอบเขตต่อการบูรณาการ"
+🔐 21. "I need scoped MCP permissions per integration"
-ไคลเอนต์ที่แตกต่างกันควรมีสิทธิ์เข้าถึงหมวดหมู่เครื่องมือน้อยที่สุด
+Different clients should have least-privilege access to tool categories.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- ขอบเขต MCP แบบละเอียด 9 แบบสำหรับการเข้าถึงเครื่องมือที่ควบคุม
-- การบังคับใช้ขอบเขตและการมองเห็นใน UI การจัดการ MCP
-- ท่าทางเริ่มต้นที่ปลอดภัยสำหรับเครื่องมือในการปฏิบัติงาน
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. "ฉันต้องการการควบคุมการปฏิบัติงานโดยไม่ต้องปรับใช้ใหม่"
+⚙️ 22. "I need operational controls without redeploying"
-ทีมต้องการการเปลี่ยนแปลงรันไทม์อย่างรวดเร็วระหว่างเหตุการณ์หรือเหตุการณ์ต้นทุน
+Teams need quick runtime changes during incidents or cost events.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- สลับการเปิดใช้งานคอมโบโดยตรงจากแดชบอร์ด MCP
-- ใช้โปรไฟล์ความยืดหยุ่นจากชุดนโยบายที่กำหนดไว้ล่วงหน้า
-- รีเซ็ตสถานะเซอร์กิตเบรกเกอร์จากแผงการทำงานเดียวกัน
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. "ฉันต้องการการมองเห็นและการยกเลิกวงจรการใช้งาน A2A แบบสด"
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-หากไม่มีการมองเห็นวงจรการใช้งาน เหตุการณ์ของงานจะยากต่อการคัดแยก
+Without lifecycle visibility, task incidents become hard to triage.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- รายการงาน/การกรองตามสถานะ/ทักษะพร้อมการแบ่งหน้า
-- เจาะลึกข้อมูลเมตาของงาน เหตุการณ์ และสิ่งประดิษฐ์
-- จุดสิ้นสุดการยกเลิกงานและการดำเนินการ UI พร้อมการยืนยัน
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. "ฉันต้องการตัววัดสตรีมที่ใช้งานอยู่สำหรับโหลด A2A"
+🌊 24. "I need active stream metrics for A2A load"
-เวิร์กโฟลว์การสตรีมจำเป็นต้องมีข้อมูลเชิงลึกในการดำเนินงานเกี่ยวกับการทำงานพร้อมกันและการเชื่อมต่อแบบสด
+Streaming workflows require operational insight into concurrency and live connections.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- ตัวนับสตรีมที่ใช้งานรวมอยู่ในสถานะ A2A
-- การประทับเวลางานล่าสุดและการนับต่อรัฐ
-- การ์ดแดชบอร์ด A2A สำหรับการตรวจสอบการปฏิบัติงานแบบเรียลไทม์
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "ฉันต้องการการค้นพบเอเจนต์มาตรฐานสำหรับลูกค้า"
+🪪 25. "I need standard agent discovery for clients"
-ไคลเอนต์และผู้ควบคุมภายนอกต้องการเมตาดาต้าที่เครื่องอ่านได้เพื่อการเริ่มต้นใช้งาน
+External clients and orchestrators need machine-readable metadata for onboarding.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- บัตรตัวแทนเปิดเผยที่ `/.well-known/agent.json`
-- ความสามารถและทักษะที่แสดงใน UI การจัดการ
-- API สถานะ A2A รวมถึงข้อมูลเมตาการค้นพบสำหรับระบบอัตโนมัติ
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "ฉันต้องการการค้นพบโปรโตคอลในผลิตภัณฑ์ UX"
+🧭 26. "I need protocol discoverability in the product UX"
-หากผู้ใช้ไม่พบพื้นผิวของโปรโตคอล การนำไปใช้และคุณภาพการสนับสนุนจะลดลง
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- รายการแถบด้านข้างสำหรับ MCP และ A2A
-- แท็บโปรโตคอลหน้าปลายทางพร้อมการเริ่มต้นและสถานะอย่างรวดเร็ว
-- ลิงก์จากภาพรวมไปยังแดชบอร์ดการจัดการเฉพาะ
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "ฉันต้องการการตรวจสอบโปรโตคอลแบบ end-to-end กับไคลเอนต์จริง"
+🧪 27. "I need end-to-end protocol validation with real clients"
-การทดสอบจำลองไม่เพียงพอที่จะตรวจสอบความเข้ากันได้ของโปรโตคอลก่อนเผยแพร่
+Mock tests are not enough to validate protocol compatibility before release.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- ชุด E2E ที่บูทแอปและใช้การขนส่งไคลเอนต์ MCP SDK จริง
-- ไคลเอนต์ A2A ทดสอบการค้นหา ส่ง สตรีม รับ และยกเลิกโฟลว์
-- ยืนยันการตรวจสอบข้ามกับการตรวจสอบ MCP และ API งาน A2A
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. "ฉันต้องการความสามารถในการสังเกตแบบรวมศูนย์ในทุกอินเทอร์เฟซ"
+📡 28. "I need unified observability across all interfaces"
-การแยกความสามารถในการสังเกตตามโปรโตคอลทำให้เกิดจุดบอดและ MTTR ที่ยาวขึ้น
+Splitting observability by protocol creates blind spots and longer MTTR.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- แดชบอร์ด/บันทึก/การวิเคราะห์แบบรวมในผลิตภัณฑ์เดียว
-- สุขภาพ + การตรวจสอบ + ขอการตรวจวัดทางไกลผ่านเลเยอร์ OpenAI, MCP และ A2A
-- API การดำเนินงานสำหรับสถานะและระบบอัตโนมัติ
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "ฉันต้องการหนึ่งรันไทม์สำหรับพร็อกซี + เครื่องมือ + การจัดการเอเจนต์"
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-การใช้บริการแยกกันจำนวนมากจะเพิ่มต้นทุนการดำเนินงานและโหมดความล้มเหลว
+Running many separate services increases operational cost and failure modes.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- พร็อกซีที่เข้ากันได้กับ OpenAI, เซิร์ฟเวอร์ MCP และเซิร์ฟเวอร์ A2A ในสแต็กเดียว
-- การรับรองความถูกต้องที่ใช้ร่วมกัน ความยืดหยุ่น การจัดเก็บข้อมูล และความสามารถในการสังเกต
-- รูปแบบนโยบายที่สอดคล้องกันในทุกรูปแบบการโต้ตอบ
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. "ฉันต้องจัดส่งเวิร์กโฟลว์เอเจนต์โดยไม่มีการแผ่ขยายโค้ดกาว"
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-ทีมจะสูญเสียความเร็วเมื่อรวมบริการและสคริปต์เฉพาะกิจหลายรายการเข้าด้วยกัน
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**OmniRoute แก้ปัญหาอย่างไร:**
+**How OmniRoute solves it:**
-- กลยุทธ์อุปกรณ์ปลายทางแบบครบวงจรสำหรับลูกค้าและตัวแทน
-- UIs การจัดการโปรโตคอลในตัวและเส้นทางการตรวจสอบควัน
-- รากฐานที่พร้อมสำหรับการผลิต (ความปลอดภัย การบันทึก ความยืดหยุ่น การสำรองข้อมูล)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Playbook ตัวอย่าง (กรณีการใช้งานแบบรวม)
+### Example Playbooks (Integrated Use Cases)
-**Playbook A: เพิ่มการสมัครสมาชิกแบบชำระเงินให้สูงสุด + การสำรองข้อมูลราคาถูก**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -684,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Playbook B: สแต็คการเขียนโค้ดแบบไม่มีค่าใช้จ่าย**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -696,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Playbook C: ห่วงโซ่ทางเลือกที่เปิดตลอด 24 ชั่วโมงทุกวัน**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -709,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Playbook D: ตัวแทนดำเนินการด้วย MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ เริ่มต้นอย่างรวดเร็ว
+## 🆓 Start Free — Zero Configuration Cost
-**1. ติดตั้งทั่วโลก:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## เริ่มต้นอย่างรวดเร็ว
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 แดชบอร์ดเปิดเมื่อ `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| คำสั่ง | คำอธิบาย |
-| ----------------------- | -------------------------------------- |
-| `omniroute` | เริ่มเซิร์ฟเวอร์ (พอร์ตเริ่มต้น 20128) |
-| `omniroute --port 3000` | ใช้พอร์ตที่กำหนดเอง |
-| `omniroute --no-open` | อย่าเปิดเบราว์เซอร์อัตโนมัติ |
-| `omniroute --help` | แสดงความช่วยเหลือ |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. เชื่อมต่อผู้ให้บริการฟรี:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-แดชบอร์ด → ผู้ให้บริการ → เชื่อมต่อ **Claude Code** หรือ **Antigravity** → เข้าสู่ระบบ OAuth → เสร็จสิ้น!
+Optional split-port mode:
-**3. ใช้ในเครื่องมือ CLI ของคุณ:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**แค่นั้นแหละ!** เริ่มเขียนโค้ดด้วยโมเดล AI ฟรี
+### 2) Connect providers and create your API key
-**ทางเลือก — เรียกใช้จากแหล่งที่มา:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
-## 🐳 ด็อคเกอร์
+## 🐳 Docker
-OmniRoute มีให้เป็นอิมเมจ Docker สาธารณะบน [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute)
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**วิ่งด่วน:**
+**Quick run:**
```bash
docker run -d \
@@ -778,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**พร้อมไฟล์สภาพแวดล้อม:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -793,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**การใช้นักเทียบท่าเขียน:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -803,255 +880,552 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| รูปภาพ | แท็ก | ขนาด | คำอธิบาย |
-| ------------------------ | -------- | ------ | ---------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | รุ่นเสถียรล่าสุด |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | เวอร์ชันปัจจุบัน |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 ราคาโดยสรุป
+## 💰 Pricing at a Glance
-| ชั้น | ผู้ให้บริการ | ราคา | รีเซ็ตโควต้า | ดีที่สุดสำหรับ |
-| ------------------ | ---------------- | ---------------------- | ------------------- | ---------------------------- |
-| **💳 สมัครสมาชิก** | รหัสคลอดด์ (Pro) | $20/เดือน | 5 ชม. + รายสัปดาห์ | สมัครสมาชิกแล้ว |
-| | Codex (พลัส/โปร) | $20-200/เดือน | 5 ชม. + รายสัปดาห์ | ผู้ใช้ OpenAI |
-| | ราศีเมถุน CLI | **ฟรี** | 180K/เดือน + 1K/วัน | ทุกคน! |
-| | นักบิน GitHub | $10-19/เดือน | รายเดือน | ผู้ใช้ GitHub |
-| **🔑 คีย์ API** | NVIDIA NIM | **ฟรี** (1,000 เครดิต) | ครั้งเดียว | การทดสอบระดับฟรี |
-| | DeepSeek | จ่ายตามการใช้งาน | ไม่มี | ราคา/คุณภาพที่ดีที่สุด |
-| | กรอค | ฟรีเทียร์ + จ่ายเงิน | อัตราจำกัด | การอนุมานที่รวดเร็วเป็นพิเศษ |
-| | xAI (โกรก) | จ่ายตามการใช้งาน | ไม่มี | รุ่น Grok |
-| | มิสทรัล | ฟรีเทียร์ + จ่ายเงิน | อัตราจำกัด | AI ยุโรป |
-| | OpenRouter | จ่ายตามการใช้งาน | ไม่มี | โมเดลมากกว่า 100 แบบ |
-| **💰 ราคาถูก** | GLM-4.7 | $0.6/1M | ทุกวัน 10.00 น. | สำรองงบประมาณ |
-| | MiniMax M2.1 | $0.2/1M | กลิ้ง 5 ชั่วโมง | ตัวเลือกที่ถูกที่สุด |
-| | คิมิ K2 | $9/เดือน คงที่ | 10M โทเค็น/เดือน | ต้นทุนที่คาดการณ์ได้ |
-| **🆓 ฟรี** | ไอโฟลว์ | $0 | ไม่จำกัด | ฟรี 8 รุ่น |
-| | ควีน | $0 | ไม่จำกัด | ฟรี 3 รุ่น |
-| | คิโระ | $0 | ไม่จำกัด | คลอดด์ฟรี |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 เคล็ดลับสำหรับมืออาชีพ:** เริ่มต้นด้วย Gemini CLI (ฟรี 180,000 ต่อเดือน) + iFlow (ฟรีไม่จำกัด) คอมโบ = ค่าใช้จ่าย $0!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 คุณสมบัติที่สำคัญ
+---
-### 🧠 การกำหนดเส้นทางหลักและความฉลาด
+## 🆓 Free Models — What You Actually Get
-| คุณสมบัติ | มันทำอะไร |
-| ------------------------------------ | --------------------------------------------------------------------------------- |
-| 🎯 **ทางเลือกสำรองอัจฉริยะ 4 ระดับ** | เส้นทางอัตโนมัติ: การสมัครสมาชิก → คีย์ API → ถูก → ฟรี |
-| 📊 **การติดตามโควต้าแบบเรียลไทม์** | จำนวนโทเค็นสด + รีเซ็ตการนับถอยหลังต่อผู้ให้บริการ |
-| 🔄 **แปลรูปแบบ** | OpenAI ↔ Claude ↔ ราศีเมถุน ↔ เคอร์เซอร์ ↔ Kiro ไร้รอยต่อ + การฆ่าเชื้อแบบตอบสนอง |
-| 👥 **รองรับหลายบัญชี** | หลายบัญชีต่อผู้ให้บริการพร้อมตัวเลือกที่ชาญฉลาด |
-| 🔄 **รีเฟรชโทเค็นอัตโนมัติ** | โทเค็น OAuth รีเฟรชอัตโนมัติพร้อมลองอีกครั้ง |
-| 🎨 **คอมโบแบบกำหนดเอง** | 6 กลยุทธ์: เติมก่อน, ปัดเศษ, p2c, สุ่ม, ใช้น้อยที่สุด, ปรับต้นทุนให้เหมาะสม |
-| 🧩 **โมเดลที่กำหนดเอง** | เพิ่ม ID รุ่นใด ๆ ให้กับผู้ให้บริการ |
-| 🌐 **เราเตอร์ตัวแทน** | กำหนดเส้นทางรูปแบบ `provider/*` ไปยังผู้ให้บริการใดๆ แบบไดนามิก |
-| 🧠 **คิดงบประมาณ** | โหมดส่งผ่าน, อัตโนมัติ, กำหนดเอง และแบบปรับได้สำหรับโมเดลการให้เหตุผล |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💌 **ระบบพร้อมฉีด** | พร้อมท์ระบบสากลใช้กับคำขอทั้งหมด |
-| 📄 **API ตอบกลับ** | รองรับ OpenAI Responses API เต็มรูปแบบ (`/v1/responses`) สำหรับ Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 Multi-Modal API
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| คุณสมบัติ | มันทำอะไร |
-| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **การสร้างภาพ** | `/v1/images/generations` — ผู้ให้บริการ 4 ราย รุ่น 9+ |
-| 📐 **การฝัง** | `/v1/embeddings` — ผู้ให้บริการ 6 ราย รุ่น 9+ |
-| 🎶 **การถอดเสียง** | `/v1/audio/transcriptions` — รองรับการกระซิบ |
-| 🔊 **ข้อความเป็นคำพูด** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **การกลั่นกรอง** | `/v1/moderations` — การตรวจสอบความปลอดภัยของเนื้อหา |
-| 🔀 **จัดอันดับ** | `/v1/rerank` — การจัดอันดับความเกี่ยวข้องของเอกสาร |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ ความยืดหยุ่นและความปลอดภัย
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| คุณสมบัติ | มันทำอะไร |
-| --------------------------------- | ---------------------------------------------------------------------------- |
-| 🔌 **เซอร์กิตเบรกเกอร์** | เปิด/ปิดอัตโนมัติต่อผู้ให้บริการพร้อมเกณฑ์ที่กำหนดค่าได้ |
-| 🛡️ **ฝูงต่อต้านฟ้าร้อง** | Mutex + ขีดจำกัดอัตราเซมาฟอร์สำหรับผู้ให้บริการคีย์ API |
-| 🧠 **แคชความหมาย** | แคชสองชั้น (ลายเซ็น + ความหมาย) ช่วยลดต้นทุน & เวลาแฝง |
-| ⚡ **ขอ Idempotency** | หน้าต่าง dedup 5s สำหรับคำขอซ้ำ |
-| 🔒 **การปลอมแปลงลายนิ้วมือ TLS** | เลี่ยงการตรวจจับบอทที่ใช้ TLS ผ่าน wreq-js |
-| 🌐 **การกรอง IP** | รายการที่อนุญาต/รายการบล็อกสำหรับการควบคุมการเข้าถึง API |
-| 📊 **ขีดจำกัดอัตราที่แก้ไขได้** | RPM ที่กำหนดค่าได้ ช่องว่างขั้นต่ำ และสูงสุดพร้อมกันที่ระดับระบบ |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **การป้องกันปลายทาง API** | การตรวจสอบสิทธิ์ + การบล็อกผู้ให้บริการสำหรับปลายทาง `/models` |
-| 🔒 **การมองเห็นพร็อกซี** | ป้ายรหัสสี: 🟢 ทั่วโลก 🟡 ผู้ให้บริการ 🔵 ต่อการเชื่อมต่อพร้อมจอแสดงผล IP |
-| 🌐 **การกำหนดค่าพร็อกซี 3 ระดับ** | กำหนดค่าพร็อกซีในระดับโกลบอล ต่อผู้ให้บริการ หรือต่อการเชื่อมต่อ |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 ความสามารถในการสังเกตและการวิเคราะห์
+### 🟡 QWEN MODELS (Device Code Auth)
-| คุณสมบัติ | มันทำอะไร |
-| -------------------------------- | ------------------------------------------------------------------------------ |
-| 📝 **ขอบันทึก** | โหมดแก้ไขข้อบกพร่องพร้อมบันทึกคำขอ/การตอบกลับแบบเต็ม |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **บันทึกพร็อกซี SQLite** | บันทึกพร็อกซีถาวรยังคงอยู่เซิร์ฟเวอร์รีสตาร์ท |
-| 📊 **แดชบอร์ดการวิเคราะห์** | ขับเคลื่อนโดย Recharts: การ์ดสถิติ แผนภูมิการใช้งานโมเดล ตารางผู้ให้บริการ |
-| 📈 **ติดตามความคืบหน้า** | เลือกใช้กิจกรรมความคืบหน้าของ SSE สำหรับการสตรีม |
-| 🧪 **การประเมิน LLM** | การทดสอบชุดทองด้วย 4 กลยุทธ์การจับคู่ |
-| 🔍 **ขอโทรมาตร** | การรวมเวลาแฝง p50/p95/p99 + การติดตาม X-Request-Id |
-| 📋 **แดชบอร์ดบันทึก** | หน้าแท็บ 4 แบบรวม: บันทึกคำขอ บันทึกพร็อกซี บันทึกการตรวจสอบ คอนโซล |
-| 🖥️ **ผู้ดูบันทึกคอนโซล** | โปรแกรมดูสไตล์เทอร์มินัลแบบเรียลไทม์พร้อมตัวกรองระดับ การค้นหา เลื่อนอัตโนมัติ |
-| 📑 **การบันทึกตามไฟล์** | ตัวดักจับคอนโซลจับเอาต์พุตทั้งหมดไปยังไฟล์บันทึก JSON พร้อมการหมุน |
-| 🏥 **แดชบอร์ดสุขภาพ** | เวลาทำงานของระบบ, สถานะของเซอร์กิตเบรกเกอร์, การล็อกเอาต์, สถิติแคช |
-| 💰 **ติดตามต้นทุน** | การจัดการงบประมาณ + การกำหนดค่าราคาต่อรุ่น |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ การปรับใช้และการซิงค์
+### 🟣 GEMINI CLI (Google OAuth)
-| คุณสมบัติ | มันทำอะไร |
-| ------------------------------------ | --------------------------------------------------------------------------- |
-| 💾 **คลาวด์ซิงค์** | ซิงค์การกำหนดค่าระหว่างอุปกรณ์ผ่าน Cloudflare Workers |
-| 🌐 **ปรับใช้ได้ทุกที่** | Localhost, VPS, นักเทียบท่า, พนักงาน Cloudflare |
-| 🔑 **การจัดการคีย์ API** | สร้าง หมุนเวียน และกำหนดขอบเขตคีย์ API ตามผู้ให้บริการ |
-| 🧙 **ตัวช่วยสร้างการเริ่มต้นใช้งาน** | การตั้งค่าพร้อมคำแนะนำ 4 ขั้นตอนสำหรับผู้ใช้ครั้งแรก |
-| ???? **แดชบอร์ดเครื่องมือ CLI** | คลิกเดียวกำหนดค่า Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **การสำรองฐานข้อมูล** | สำรองข้อมูล กู้คืน ส่งออก & นำเข้าอัตโนมัติสำหรับการตั้งค่าทั้งหมด |
-| 🌐 **ความเป็นสากล** | i18n เต็มรูปแบบพร้อม next-intl — รองรับภาษาอังกฤษ + โปรตุเกส (บราซิล) |
-| 🌍 **ตัวเลือกภาษา** | ไอคอนลูกโลกในส่วนหัวสำหรับการสลับภาษาแบบเรียลไทม์ (USA/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **ไดเรกทอรีข้อมูลที่กำหนดเอง** | `DATA_DIR` env var เพื่อแทนที่ค่าเริ่มต้น `~/.omniroute` พาธหน่วยเก็บข้อมูล |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 รายละเอียดคุณสมบัติ
-### 🎯 ทางเลือกสำรอง 4 ชั้นอัจฉริยะ
+🧩 MCP Setup (Model Context Protocol)
-สร้างคอมโบพร้อมทางเลือกอัตโนมัติ:
+Start MCP transport in stdio mode:
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 การติดตามโควต้าแบบเรียลไทม์
+Recommended validation flow:
-- การใช้โทเค็นต่อผู้ให้บริการ
-- รีเซ็ตการนับถอยหลัง (5 ชั่วโมง รายวัน รายสัปดาห์)
-- การประมาณต้นทุนสำหรับระดับที่ชำระเงิน
-- รายงานการใช้จ่ายรายเดือน
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 แปลรูปแบบ
+Useful APIs for automation:
-การแปลที่ราบรื่นระหว่างรูปแบบ:
-
-- **OpenAI** ↔ **Claude** ↔ **ราศีเมถุน** ↔ **การตอบกลับ OpenAI**
-- เครื่องมือ CLI ของคุณส่งรูปแบบ OpenAI → การแปล OmniRoute → ผู้ให้บริการได้รับรูปแบบดั้งเดิม
-- ทำงานร่วมกับเครื่องมือใดๆ ที่รองรับจุดสิ้นสุด OpenAI ที่กำหนดเอง
-- **การฆ่าเชื้อการตอบสนอง** — ตัดช่องที่ไม่ได้มาตรฐานสำหรับความเข้ากันได้ของ OpenAI SDK ที่เข้มงวด
-- **การปรับบทบาทให้เป็นมาตรฐาน** — `developer` → `system` สำหรับ non-OpenAI; `system` → `user` สำหรับรุ่น GLM/ERNIE
-- **ลองแยกแท็ก** — `` บล็อก → `reasoning_content` สำหรับการคิดโมเดล
-- **เอาต์พุตที่มีโครงสร้าง** — `json_schema` → `responseMimeType`/`responseSchema` ของราศีเมถุน
-
-### 👥 รองรับหลายบัญชี
-
-- เพิ่มหลายบัญชีต่อผู้ให้บริการ
-- การวนรอบอัตโนมัติหรือการกำหนดเส้นทางตามลำดับความสำคัญ
-- ถอยกลับไปยังบัญชีถัดไปเมื่อถึงโควต้า
-
-### 🔄 รีเฟรชโทเค็นอัตโนมัติ
-
-- โทเค็น OAuth จะรีเฟรชโดยอัตโนมัติก่อนหมดอายุ
-- ไม่จำเป็นต้องตรวจสอบสิทธิ์ซ้ำด้วยตนเอง
-- ประสบการณ์ที่ไร้รอยต่อกับผู้ให้บริการทุกราย
-
-### 🎨 คอมโบที่กำหนดเอง
-
-- สร้างชุดค่าผสมโมเดลได้ไม่จำกัด
-- 6 กลยุทธ์: เติมก่อน ปัดเศษ ยกกำลังสองตัวเลือก สุ่ม ใช้น้อยที่สุด ปรับต้นทุนให้เหมาะสม
-- แบ่งปันคอมโบระหว่างอุปกรณ์ด้วย Cloud Sync
-
-### 🏥 แดชบอร์ดสุขภาพ
-
-- สถานะของระบบ (สถานะการออนไลน์, เวอร์ชัน, การใช้หน่วยความจำ)
-- สถานะเซอร์กิตเบรกเกอร์ต่อผู้ให้บริการ (ปิด/เปิด/เปิดครึ่ง)
-- สถานะการจำกัดอัตราและการล็อกที่ใช้งานอยู่
-- สถิติแคชลายเซ็น
-- telemetry Latency (p50/p95/p99) + แคชพร้อมท์
-- รีเซ็ตสถานะสุขภาพได้ด้วยคลิกเดียว
-
-### ???? สนามเด็กเล่นนักแปล
-
-OmniRoute มี Translator Playground ในตัวอันทรงพลัง พร้อมด้วย **4 โหมด** สำหรับการดีบัก การทดสอบ และการตรวจสอบการแปล API:
-
-| โหมด | คำอธิบาย |
-| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻 สนามเด็กเล่น** | การแปลรูปแบบโดยตรง — วางเนื้อหาคำขอ API ใดๆ และดูได้ทันทีว่า OmniRoute แปลระหว่างรูปแบบของผู้ให้บริการอย่างไร (OpenAI ↔ Claude ↔ Gemini ↔ Responses API) รวมเทมเพลตตัวอย่างและการตรวจจับรูปแบบอัตโนมัติ |
-| **💌 โปรแกรมทดสอบการแชท** | ส่งคำขอแชทจริงผ่าน OmniRoute และดูการเดินทางไปกลับทั้งหมด: ข้อมูลของคุณ คำขอที่แปล คำตอบของผู้ให้บริการ และการตอบกลับที่แปลแล้ว ล้ำค่าสำหรับการตรวจสอบการกำหนดเส้นทางคำสั่งผสม |
-| **🧪 ม้านั่งทดสอบ** | โหมดการทดสอบแบบแบตช์ — กำหนดกรณีการทดสอบหลายกรณีด้วยอินพุตและเอาต์พุตที่คาดหวังที่แตกต่างกัน รันการทดสอบทั้งหมดพร้อมกัน และเปรียบเทียบผลลัพธ์ระหว่างผู้ให้บริการและโมเดลต่างๆ |
-| **📱 ไลฟ์มอนิเตอร์** | การตรวจสอบคำขอแบบเรียลไทม์ — ดูคำขอที่เข้ามาขณะที่คำขอไหลผ่าน OmniRoute ดูการแปลรูปแบบที่เกิดขึ้นแบบสด และระบุปัญหาได้ทันที |
-
-**การเข้าถึง:** แดชบอร์ด → นักแปล (แถบด้านข้าง)
-
-### 💾 คลาวด์ซิงค์
-
-- ซิงค์ผู้ให้บริการ คอมโบ และการตั้งค่าระหว่างอุปกรณ์ต่างๆ
-- ซิงค์พื้นหลังอัตโนมัติ
-- พื้นที่เก็บข้อมูลที่เข้ารหัสที่ปลอดภัย
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 การประเมินผล (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute มีกรอบการประเมินในตัวเพื่อทดสอบคุณภาพการตอบสนองของ LLM เทียบกับชุดทอง เข้าถึงได้ผ่านทาง **Analytics → Evals** ในแดชบอร์ด
+Discover the agent:
-### ชุดทองในตัว
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-"OmniRoute Golden Set" ที่โหลดไว้ล่วงหน้าประกอบด้วยกรณีทดสอบ 10 กรณีที่ครอบคลุม:
+Send a task:
-- คำทักทาย คณิตศาสตร์ ภูมิศาสตร์ การสร้างโค้ด
-- การปฏิบัติตามรูปแบบ JSON, การแปล, มาร์กดาวน์
-- การปฏิเสธอย่างปลอดภัย (เนื้อหาที่เป็นอันตราย) การนับ ตรรกะบูลีน
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### กลยุทธ์การประเมินผล
+Manage lifecycle:
-| กลยุทธ์ | คำอธิบาย | ตัวอย่าง |
-| ---------- | ------------------------------------------------------------------ | -------------------------------- |
-| `exact` | ผลลัพธ์จะต้องตรงกันทุกประการ | `"4"` |
-| `contains` | เอาต์พุตจะต้องมีสตริงย่อย (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) | `"Paris"` |
-| `regex` | เอาต์พุตต้องตรงกับรูปแบบ regex | `"1.*2.*3"` |
-| `custom` | ฟังก์ชัน JS แบบกำหนดเองส่งคืนค่า true/false | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 คู่มือการตั้งค่า
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 ผู้ให้บริการสมัครสมาชิก
-### รหัสคลอด (Pro/Max)
+🧪 End-to-end protocol validation
+
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
+
+### Claude Code (Pro/Max)
```bash
Dashboard → Providers → Connect Claude Code
@@ -1064,9 +1438,9 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**เคล็ดลับสำหรับมือโปร:** ใช้ Opus สำหรับงานที่ซับซ้อน และใช้ Sonnet เพื่อความรวดเร็ว โควต้าการติดตาม OmniRoute ต่อรุ่น!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
-### OpenAI Codex (พลัส/โปร)
+### OpenAI Codex (Plus/Pro)
```bash
Dashboard → Providers → Connect Codex
@@ -1078,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (ฟรี 180K/เดือน!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1090,9 +1481,9 @@ Models:
gc/gemini-2.5-pro
```
-**คุ้มค่าที่สุด:** ระดับฟรีมหาศาล! ใช้สิ่งนี้ก่อนระดับที่ชำระเงิน
+**Best Value:** Huge free tier! Use this before paid tiers.
-### นักบิน GitHub
+### GitHub Copilot
```bash
Dashboard → Providers → Connect GitHub
@@ -1108,85 +1499,88 @@ Models:
-🔑 ผู้ให้บริการคีย์ API
-### NVIDIA NIM (ฟรี 1,000 เครดิต!)
+🔑 API Key Providers
-1. ลงทะเบียน: [build.nvidia.com](https://build.nvidia.com)
-2. รับคีย์ API ฟรี (รวมเครดิตการอนุมาน 1,000 รายการ)
-3. แดชบอร์ด → เพิ่มผู้ให้บริการ → NVIDIA NIM:
- - คีย์ API: `nvapi-your-key`
+### NVIDIA NIM (FREE developer access — 70+ models)
-**รุ่น:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` และอีก 50+ รายการ
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**เคล็ดลับสำหรับมือโปร:** API ที่เข้ากันได้กับ OpenAI — ทำงานได้อย่างราบรื่นกับการแปลรูปแบบของ OmniRoute!
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-### ดีปซีค
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
-1. ลงทะเบียน: [platform.deepseek.com](https://platform.deepseek.com)
-2. รับรหัส API
-3. แดชบอร์ด → เพิ่มผู้ให้บริการ → DeepSeek
+### DeepSeek
-**รุ่น:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-### Groq (มีระดับฟรี!)
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-1. ลงทะเบียน: [console.groq.com](https://console.groq.com)
-2. รับคีย์ API (รวมเทียร์ฟรี)
-3. แดชบอร์ด → เพิ่มผู้ให้บริการ → Groq
+### Groq (Free Tier Available!)
-**รุ่น:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**เคล็ดลับสำหรับมือโปร:** การอนุมานที่รวดเร็วเป็นพิเศษ — ดีที่สุดสำหรับการเขียนโค้ดแบบเรียลไทม์!
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-### OpenRouter (มากกว่า 100 รุ่น)
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-1. ลงทะเบียน: [openrouter.ai](https://openrouter.ai)
-2. รับรหัส API
-3. แดชบอร์ด → เพิ่มผู้ให้บริการ → OpenRouter
+### OpenRouter (100+ Models)
-**รุ่น:** เข้าถึงโมเดลมากกว่า 100 โมเดลจากผู้ให้บริการรายใหญ่ทั้งหมดผ่านคีย์ API เดียว
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
+
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 ผู้ให้บริการราคาถูก (สำรอง)
-### GLM-4.7 (รีเซ็ตรายวัน, $0.6/1M)
+💰 Cheap Providers (Backup)
-1. ลงทะเบียน: [Zhipu AI](https://open.bigmodel.cn/)
-2. รับคีย์ API จาก Coding Plan
-3. แดชบอร์ด → เพิ่มคีย์ API:
- - ผู้ให้บริการ: `glm`
- - คีย์ API: `your-key`
+### GLM-4.7 (Daily reset, $0.6/1M)
-**ใช้:** `glm/glm-4.7`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**เคล็ดลับสำหรับมือโปร:** แผนการเขียนโค้ดเสนอโควต้า 3 เท่าในราคา 1/7! รีเซ็ตทุกวัน 10.00 น.
+**Use:** `glm/glm-4.7`
-### MiniMax M2.1 (รีเซ็ต 5 ชม., $0.20/1M)
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-1. ลงทะเบียน: [MiniMax](https://www.minimax.io/)
-2. รับรหัส API
-3. แดชบอร์ด → เพิ่มคีย์ API
+### MiniMax M2.1 (5h reset, $0.20/1M)
-**ใช้:** `minimax/MiniMax-M2.1`
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**เคล็ดลับสำหรับมือโปร:** ตัวเลือกที่ถูกที่สุดสำหรับบริบทที่ยาว (โทเค็น 1M)!
+**Use:** `minimax/MiniMax-M2.1`
-### Kimi K2 ($9/เดือน)
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-1. สมัครสมาชิก: [Moonshot AI](https://platform.moonshot.ai/)
-2. รับรหัส API
-3. แดชบอร์ด → เพิ่มคีย์ API
+### Kimi K2 ($9/month flat)
-**ใช้:** `kimi/kimi-latest`
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**เคล็ดลับสำหรับมือโปร:** แก้ไข $9/เดือนสำหรับโทเค็น 10M = $0.90/ต้นทุนที่แท้จริง 1M!
+**Use:** `kimi/kimi-latest`
+
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 ผู้ให้บริการฟรี (การสำรองข้อมูลฉุกเฉิน)
-### iFlow (ฟรี 8 รุ่น)
+🆓 FREE Providers (Emergency Backup)
+
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1201,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (ฟรี 3 รุ่น)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1213,7 +1607,7 @@ Models:
qw/qwen3-coder-flash
```
-### คิโระ (คลอดด์ฟรี)
+### Kiro (Claude FREE)
```bash
Dashboard → Connect Kiro
@@ -1228,8 +1622,9 @@ Models:
-🎨 สร้างคอมโบ
-### ตัวอย่างที่ 1: เพิ่มการสมัครสมาชิกให้สูงสุด → การสำรองข้อมูลราคาถูก
+🎨 Create Combos
+
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1243,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### ตัวอย่างที่ 2: ฟรีเท่านั้น (ไม่มีค่าใช้จ่าย)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1258,8 +1653,9 @@ Cost: $0 forever!
-ดำเนินการบูรณาการ CLI
-### เคอร์เซอร์ IDE
+🔧 CLI Integration
+
+### Cursor IDE
```
Settings → Models → Advanced:
@@ -1268,9 +1664,9 @@ Settings → Models → Advanced:
Model: cc/claude-opus-4-6
```
-### รหัสคลอด
+### Claude Code
-ใช้หน้า **เครื่องมือ CLI** ในแดชบอร์ดสำหรับการกำหนดค่าด้วยคลิกเดียว หรือแก้ไข `~/.claude/settings.json` ด้วยตนเอง
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1281,15 +1677,15 @@ export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
```
-### โอเพ่นคลอว์
+### OpenClaw
-**ตัวเลือก 1 — แดชบอร์ด (แนะนำ):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**ตัวเลือก 2 — กำหนดเอง:** แก้ไข `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1305,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **หมายเหตุ:** OpenClaw ใช้งานได้กับ OmniRoute ในพื้นที่เท่านั้น ใช้ `127.0.0.1` แทน `localhost` เพื่อหลีกเลี่ยงปัญหาความละเอียดของ IPv6
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### ไคลน์ / ดำเนินการต่อ / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1317,109 +1713,245 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 การแก้ไขปัญหา
+## การแก้ไขปัญหา
-คลิกเพื่อขยายคำแนะนำการแก้ปัญหา
-**"โมเดลภาษาไม่ได้ระบุข้อความ"**
+Click to expand troubleshooting guide
-- โควต้าผู้ให้บริการหมด → ตรวจสอบตัวติดตามโควต้าแดชบอร์ด
-- วิธีแก้ไข: ใช้ทางเลือกแบบคอมโบหรือเปลี่ยนไปใช้ระดับที่ถูกกว่า
+**"Language model did not provide messages"**
-**จำกัดอัตรา**
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-- โควต้าการสมัครสมาชิกหมด → สำรองไปที่ GLM/MiniMax
-- เพิ่มคอมโบ: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+**Rate limiting**
-**โทเค็น OAuth หมดอายุแล้ว**
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-- รีเฟรชอัตโนมัติโดย OmniRoute
-- หากปัญหายังคงอยู่: แดชบอร์ด → ผู้ให้บริการ → เชื่อมต่อใหม่
+**OAuth token expired**
-**ค่าใช้จ่ายสูง**
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-- ตรวจสอบสถิติการใช้งานในแดชบอร์ด → ต้นทุน
-- เปลี่ยนโมเดลหลักเป็น GLM/MiniMax
-- ใช้ระดับฟรี (Gemini CLI, iFlow) สำหรับงานที่ไม่สำคัญ
+**High costs**
-**แดชบอร์ดเปิดผิดพอร์ต**
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-- ตั้งค่า `PORT=20128` และ `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+**Dashboard/API ports are wrong**
-**ข้อผิดพลาดในการซิงค์คลาวด์**
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-- ตรวจสอบ `BASE_URL` ชี้ไปยังอินสแตนซ์ที่ทำงานอยู่ของคุณ
-- ตรวจสอบ `CLOUD_URL` ชี้ไปยังจุดปลายทางคลาวด์ที่คุณคาดหวัง
-- เก็บค่า `NEXT_PUBLIC_*` ให้สอดคล้องกับค่าฝั่งเซิร์ฟเวอร์
+**Cloud sync errors**
-**เข้าสู่ระบบครั้งแรกใช้งานไม่ได้**
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-- ตรวจสอบ `INITIAL_PASSWORD` ใน `.env`
-- หากไม่ได้ตั้งค่า รหัสผ่านสำรองจะเป็น `123456`
+**First login not working**
-** ไม่มีบันทึกคำขอ **
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-- ตั้งค่า `ENABLE_REQUEST_LOGS=true` ใน `.env`
+**No request logs**
-**การทดสอบการเชื่อมต่อแสดงว่า "ไม่ถูกต้อง" สำหรับผู้ให้บริการที่รองรับ OpenAI**
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-- ผู้ให้บริการหลายรายไม่เปิดเผยปลายทาง `/models`
-- OmniRoute v1.0.6+ มีการตรวจสอบทางเลือกผ่านการแชทให้เสร็จสิ้น
-- ตรวจสอบให้แน่ใจว่า URL ฐานมีคำต่อท้าย `/v1`
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-### 🔐 OAuth ในเซิร์ฟเวอร์ Remoto (การตั้งค่า OAuth ระยะไกล)
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
+### 🔐 OAuth on a Remote Server
+
+
-> **⚠️ สิ่งสำคัญสำหรับการใช้ OmniRoute กับ VPS/Docker/servidor remoto**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-ระบบปฏิบัติการ **Antigravity** และ **Gemini CLI** ใช้ **Google OAuth 2.0** สำหรับการรับรองความถูกต้อง O Google ต้องการ `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs pré-cadastradas no Google Cloud Console do aplicativo.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-ตามที่รับรอง OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. ต้องการใช้ OmniRoute ในเซิร์ฟเวอร์ remoto (เช่น `https://omniroute.meuservidor.com`) หรือ Google ตรวจสอบ com autenticação:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### วิธีแก้ปัญหา: กำหนดค่า suas próprias credenciais OAuth
+#### Solution: Configure your own OAuth credentials
-อยู่ในนั้นโดยตรง **OAuth 2.0 Client ID** ไม่มี Google Cloud Console พร้อม URI สำหรับเซิร์ฟเวอร์
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
-#### เยี่ยมเลย
+#### Step-by-step
-**1. เข้าถึง Google Cloud Console**
+**1. Open Google Cloud Console**
-อับรา: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
-**2. ฉันเพิ่งค้นพบ OAuth 2.0 Client ID**
+**2. Create a new OAuth 2.0 Client ID**
-- คลิก em **"+ สร้างข้อมูลรับรอง"** → **"รหัสไคลเอ็นต์ OAuth"**
-- เคล็ดลับการใช้งาน: **"แอปพลิเคชันเว็บ"**
-- ชื่อ: ชื่อ escolha qualquer (เช่น: `OmniRoute Remote`)
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
-**3. Adicione เป็น URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต**
+**3. Add Authorized Redirect URIs**
-ไม่มีค่าย **"URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต"** ผู้สนับสนุน:
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
+
+#### Passo a passo
+
+**1. Acesse o Google Cloud Console**
+
+Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Crie um novo OAuth 2.0 Client ID**
+
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
+
+**3. Adicione as Authorized Redirect URIs**
+
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
```
-> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (รวม porta se necessário เช่น `http://45.33.32.156:20128/callback`)
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. Salve e copy as credenciais**
+**4. Salve e copie as credenciais**
-อ้างอิงถึง Google มากที่สุด o **Client ID** e o **Client Secret**
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. กำหนดค่าเป็น variáveis de Ambiente**
+**5. Configure as variáveis de ambiente**
-ไม่มี `.env` (คุณมีตัวเลือกอื่นสำหรับ Docker):
+No seu `.env` (ou nas variáveis de ambiente do Docker):
```bash
# Para Antigravity:
@@ -1432,7 +1964,7 @@ GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
```
-**6. ย้อนกลับไปสู่ OmniRoute**
+**6. Reinicie o OmniRoute**
```bash
# Se usando npm:
@@ -1442,151 +1974,147 @@ npm run dev
docker restart omniroute
```
-**7. เต็นท์ คอนเนกตาร์ โนวาเมนเต**
+**7. Tente conectar novamente**
-แดชบอร์ด → ผู้ให้บริการ → Antigravity (หรือ Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
-ภาพรวมของ Google การแก้ไขสำหรับ `https://seu-servidor.com/callback` และการรับรองความถูกต้อง
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### วิธีแก้ปัญหาชั่วคราว (sem configurar credenciais próprias)
+#### Workaround temporário (sem configurar credenciais próprias)
Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. O OmniRoute ย่อ URL อัตโนมัติของ Google
+1. O OmniRoute abrirá a URL de autorização do Google
2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
-3. **คัดลอก URL ที่สมบูรณ์** da barra de endereço do seu browser (mesmo que a página não carregue)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
-5. คลิกที่นี่ **"เชื่อมต่อ"**
+5. Clique em **"Connect"**
-> วิธีแก้ปัญหาเบื้องต้นคือทำการเปลี่ยนเส้นทางโดยอัตโนมัติและทำการเปลี่ยนเส้นทางโดยอัตโนมัติ
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **รันไทม์**: Node.js 18–22 LTS (⚠️ Node.js 24+ ไม่ได้รับการสนับสนุน\*\* — `better-sqlite3` ไบนารีดั้งเดิมเข้ากันไม่ได้)
-- **ภาษา**: TypeScript 5.9 — **100% TypeScript** ทั่วทั้ง `src/` และ `open-sse/` (v1.0.6)
-- **เฟรมเวิร์ก**: Next.js 16 + React 19 + Tailwind CSS 4
-- **ฐานข้อมูล**: LowDB (JSON) + SQLite (สถานะโดเมน + บันทึกพร็อกซี)
-- **การสตรีม**: เหตุการณ์ที่เซิร์ฟเวอร์ส่ง (SSE)
-- **Auth**: OAuth 2.0 (PKCE) + JWT + คีย์ API
-- **การทดสอบ**: ตัวรันการทดสอบ Node.js (การทดสอบหน่วยมากกว่า 368 รายการ)
-- **CI/CD**: การดำเนินการ GitHub (เผยแพร่ npm อัตโนมัติ + Docker Hub เมื่อวางจำหน่าย)
-- **เว็บไซต์**: [omniroute.online](https://omniroute.online)
-- **แพ็คเกจ**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **นักเทียบท่า**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **ความยืดหยุ่น**: เซอร์กิตเบรกเกอร์, การถอยกลับแบบเอ็กซ์โปเนนเชียล, การป้องกันฝูงฟ้าผ่า, การปลอมแปลง TLS
-
----
-
-## 📖 เอกสารประกอบ
-
-| เอกสาร | คำอธิบาย |
-| -------------------------------------------- | ----------------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | ผู้ให้บริการ, คอมโบ, การรวม CLI, การปรับใช้ |
-| [API Reference](docs/API_REFERENCE.md) | จุดสิ้นสุดทั้งหมดพร้อมตัวอย่าง |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | ปัญหาและแนวทางแก้ไขทั่วไป |
-| [Architecture](docs/ARCHITECTURE.md) | สถาปัตยกรรมระบบและภายใน |
-| [Contributing](CONTRIBUTING.md) | การตั้งค่าและแนวทางการพัฒนา |
-| [OpenAPI Spec](docs/openapi.yaml) | ข้อมูลจำเพาะของ OpenAPI 3.0 |
-| [Security Policy](SECURITY.md) | การรายงานช่องโหว่และแนวปฏิบัติด้านความปลอดภัย |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | คู่มือฉบับสมบูรณ์: VM + nginx + การตั้งค่า Cloudflare |
-| [Features Gallery](docs/FEATURES.md) | ทัวร์ชมแดชบอร์ดภาพพร้อมภาพหน้าจอ |
-
-### 📸 ดูตัวอย่างแดชบอร์ด
+## 🛠️ Tech Stack
-คลิกเพื่อดูภาพหน้าจอแดชบอร์ด
-| หน้า | ภาพหน้าจอ |
-| ------------------- | ------------------------------------------------- |
-| **ผู้ให้บริการ** |  |
-| **คอมโบ** |  |
-| **การวิเคราะห์** |  |
-| **สุขภาพ** |  |
-| **นักแปล** |  |
-| **การตั้งค่า** |  |
-| **เครื่องมือ CLI** |  |
-| **บันทึกการใช้งาน** |  |
-| **จุดสิ้นสุด** |  |
+Click to expand tech stack details
+
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## เอกสาร
-OmniRoute มี **ฟีเจอร์มากกว่า 210 รายการที่วางแผน** ไว้ในขั้นตอนการพัฒนาหลายขั้นตอน นี่คือประเด็นสำคัญ:
-
-| หมวดหมู่ | คุณสมบัติที่วางแผนไว้ | ไฮไลท์ |
-| ------------------------------------------ | --------------------- | ------------------------------------------------------------------------------------------------------------- |
-| 🧠 **การกำหนดเส้นทางและความฉลาด** | 25+ | การกำหนดเส้นทางที่มีความหน่วงต่ำที่สุด, การกำหนดเส้นทางตามแท็ก, โควต้า preflight, การเลือกบัญชี P2C |
-| 🔒 **ความปลอดภัยและการปฏิบัติตามข้อกำหนด** | 20+ | การเสริมความแข็งแกร่งของ SSRF, การปิดบังข้อมูลรับรอง, ขีดจำกัดอัตราต่อจุดสิ้นสุด, การกำหนดขอบเขตคีย์การจัดการ |
-| 📊 **ความสามารถในการสังเกต** | 15+ | การรวม OpenTelemetry การตรวจสอบโควต้าแบบเรียลไทม์ การติดตามต้นทุนต่อรุ่น |
-| 🔄 **การบูรณาการของผู้ให้บริการ** | 20+ | การลงทะเบียนโมเดลแบบไดนามิก, คูลดาวน์ของผู้ให้บริการ, Codex หลายบัญชี, การแยกวิเคราะห์โควต้า Copilot |
-| ⚡ **ประสิทธิภาพ** | 15+ | เลเยอร์แคชคู่, แคชพร้อมท์, แคชการตอบสนอง, การสตรีมแบบ Keepalive, ชุด API |
-| 🌐 **ระบบนิเวศ** | 10+ | WebSocket API, กำหนดค่า hot-reload, การจัดเก็บ config แบบกระจาย, โหมดเชิงพาณิชย์ |
-
-### 🔜 เร็วๆ นี้
-
-- 🔗 **การรวม OpenCode** — รองรับผู้ให้บริการเนทีฟสำหรับ IDE การเข้ารหัส OpenCode AI
-- 🔗 **การบูรณาการ TRAE** — รองรับกรอบการพัฒนา TRAE AI อย่างเต็มที่
-- 📦 **Batch API** — การประมวลผลแบบแบตช์แบบอะซิงโครนัสสำหรับคำขอจำนวนมาก
-- 🎯 **การกำหนดเส้นทางตามแท็ก** — คำขอกำหนดเส้นทางตามแท็กที่กำหนดเองและข้อมูลเมตา
-- 💰 **กลยุทธ์ต้นทุนต่ำสุด** — เลือกผู้ให้บริการที่ถูกที่สุดโดยอัตโนมัติ
-
-> dict ข้อมูลจำเพาะคุณสมบัติแบบเต็มมีอยู่ใน [link](docs/new-features/) (ข้อมูลจำเพาะโดยละเอียด 217 รายการ)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 ผู้มีส่วนร่วม
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### วิธีการมีส่วนร่วม
+### How to Contribute
-1. แยกพื้นที่เก็บข้อมูล
-2. สร้างสาขาคุณลักษณะของคุณ (`git checkout -b feature/amazing-feature`)
-3. ยอมรับการเปลี่ยนแปลงของคุณ (`git commit -m 'Add amazing feature'`)
-4. กดไปที่สาขา (`git push origin feature/amazing-feature`)
-5. เปิดคำขอดึง
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-ดู [CONTRIBUTING.md](CONTRIBUTING.md) สำหรับคำแนะนำโดยละเอียด
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### เปิดตัวเวอร์ชันใหม่
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 ประวัติดารา
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏ขอบพระคุณ
+## 🙏 Acknowledgments
-ขอขอบคุณเป็นพิเศษกับ **[9router](https://github.com/decolua/9router)** โดย **[decolua](https://github.com/decolua)** — โปรเจ็กต์ดั้งเดิมที่เป็นแรงบันดาลใจให้กับ Fork นี้ OmniRoute สร้างบนรากฐานอันน่าทึ่งดังกล่าวด้วยคุณสมบัติเพิ่มเติม API หลายรูปแบบ และการเขียน TypeScript ใหม่ทั้งหมด
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-ขอขอบคุณเป็นพิเศษสำหรับ **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — การใช้งาน Go ดั้งเดิมที่เป็นแรงบันดาลใจให้กับพอร์ต JavaScript นี้
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 ใบอนุญาต
+## สิทธิ์การใช้งาน
-ใบอนุญาต MIT - ดู [LICENSE](LICENSE) สำหรับรายละเอียด
+MIT License - see [LICENSE](LICENSE) for details.
---
+
diff --git a/docs/i18n/th/docs/FEATURES.md b/docs/i18n/th/docs/FEATURES.md
new file mode 100644
index 0000000000..f58a52e527
--- /dev/null
+++ b/docs/i18n/th/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (ไทย)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/uk-UA/README.md b/docs/i18n/uk-UA/README.md
index acb8d6afb6..1fb50f6f61 100644
--- a/docs/i18n/uk-UA/README.md
+++ b/docs/i18n/uk-UA/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — безкоштовний ШІ-шлюз
+# 🚀 OmniRoute — The Free AI Gateway (Українська)
-### Ніколи не припиняйте кодувати. Розумна маршрутизація до **БЕЗКОШТОВНИХ і недорогих моделей штучного інтелекту** з автоматичним резервним копіюванням.
-
-_Ваш універсальний API-проксі — одна кінцева точка, понад 36 провайдерів, нуль простоїв._
-
-**Завершення чату • Вбудовування • Генерація зображень • Аудіо • Реранжування • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Безкоштовний постачальник AI для ваших улюблених агентів кодування
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Підключіть будь-який інструмент IDE або CLI на основі штучного інтелекту через OmniRoute — безкоштовний шлюз API для необмеженого програмування._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _Підключіть будь-який інструмент IDE або CLI на
|
-📡 Усі агенти підключаються через http://localhost:20128/v1 або http://cloud.omniroute.online/v1 — одна конфігурація, необмежена кількість моделей і квота
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Чому OmniRoute?
-
-**Припиніть витрачати гроші та досягати лімітів:**
-
--
Квота підписки закінчується без використання кожного місяця
--
Обмеження швидкості перешкоджають кодуванню в середині
--
Дорогі API ($20-50/місяць за постачальника)
--
Ручне перемикання між провайдерами
-
-**OmniRoute вирішує цю проблему:**
-
-- ✅ **Збільште кількість підписок** - Відстежуйте квоту, використовуйте кожен біт перед скиданням
-- ✅ **Автоматичний резерв** - Підписка → Ключ API → Дешево → Безкоштовно, без простоїв
-- ✅ **Кілька облікових записів** - Циклічний цикл між обліковими записами кожного постачальника
-- ✅ **Універсальний** - Працює з Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, будь-яким інструментом CLI
-
----
-
-## 📧 Підтримка
-
-> 💬 **Приєднуйтесь до нашої спільноти!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — отримуйте допомогу, діліться порадами та будьте в курсі подій.
-
-- **Веб-сайт**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **Проблеми**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Оригінальний проект**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Як це працює
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,456 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 Що вирішує OmniRoute — 30 реальних проблем і варіантів використання
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Кожен розробник, який використовує інструменти штучного інтелекту, щодня стикається з цими проблемами.** OmniRoute було створено, щоб вирішити їх усі — від перевитрати коштів до регіональних блокувань, від порушених потоків OAuth до операцій протоколу та спостережуваності підприємства.
+> **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 protocol operations and enterprise observability.
-💸 1. «Я плачу за дорогу підписку, але мене все одно переривають через обмеження»
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Розробники платять 20–200 доларів на місяць за Claude Pro, Codex Pro або GitHub Copilot. Навіть якщо платити, квота має максимальну межу — 5 годин використання, тижневі ліміти або ліміти за хвилину. У середині сеансу кодування постачальник перестає відповідати, а розробник втрачає швидкість і продуктивність.
+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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Smart 4-Tier Fallback** — якщо квота підписки закінчується, автоматично перенаправляється до API Key → Дешево → Безкоштовно без ручного втручання
-- **Відстеження квот у реальному часі** — показує споживання токенів у реальному часі зі зворотним відліком скидання (5 годин, щодня, щотижня)
-- **Підтримка кількох облікових записів** — кілька облікових записів у кожного постачальника з автоматичним циклічним перебором — коли один закінчується, перемикається на наступний
-- **Користувацькі комбінації** — резервні ланцюжки, які можна налаштувати, із 6 стратегіями балансування (спочатку заповнення, циклічний, P2C, випадковий, найменш використовуваний, економічно оптимізований)
-- **Бізнес-квоти Codex** — Моніторинг квот робочого простору бізнесу/команди безпосередньо на інформаційній панелі
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. «Мені потрібно використовувати кілька постачальників, але кожен має різний API»
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI використовує один формат, Claude (Anthropic) використовує інший, Gemini ще інший. Якщо розробник хоче перевірити моделі від різних постачальників або повернутися до них, йому потрібно переналаштувати SDK, змінити кінцеві точки, мати справу з несумісними форматами. Спеціальні постачальники (FriendLI, NIM) мають нестандартні кінцеві точки моделі.
+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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Уніфікована кінцева точка** — один `http://localhost:20128/v1` служить проксі для всіх 36+ постачальників
-- **Переклад форматів** — автоматичний і прозорий: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-- **Response Sanitization** — видаляє нестандартні поля (`x_groq`, `usage_breakdown`, `service_tier`), які порушують роботу OpenAI SDK v1.83+
-- **Нормалізація ролі** — перетворює `developer` → `system` для постачальників, які не є OpenAI; `system` → `user` для GLM/ERNIE
-- **Think Tag Extraction** — витягує блоки `` із таких моделей, як DeepSeek R1, у стандартизований `reasoning_content`
-- **Структурований вихід для Gemini** — `json_schema` → `responseMimeType`/`responseSchema` автоматичне перетворення
-- **`stream` за замовчуванням — `false`** — відповідає специфікації OpenAI, уникаючи неочікуваних SSE у Python/Rust/Go SDK.
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. «Мій постачальник штучного інтелекту блокує мій регіон/країну»
+🌐 3. "My AI provider blocks my region/country"
-Такі постачальники, як OpenAI/Codex, блокують доступ із певних географічних регіонів. Користувачі отримують помилки на зразок `unsupported_country_region_territory` під час з’єднань OAuth і API. Це особливо засмучує розробників із країн, що розвиваються.
+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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **3-рівнева конфігурація проксі-сервера** — налаштовується проксі-сервер на 3 рівнях: глобальний (увесь трафік), для кожного постачальника (лише один постачальник) і для кожного підключення/ключа
-- **Значки проксі-сервера з кольоровим кодуванням** — Візуальні індикатори: 🟢 глобальний проксі, 🟡 проксі-сервер постачальника, 🔵 проксі-сервер підключення, завжди показує IP-адресу
-- **Обмін маркерами OAuth через проксі** — потік OAuth також проходить через проксі, вирішуючи `unsupported_country_region_territory`
-- **Тестування з’єднання через проксі** — тестування з’єднання використовує налаштований проксі (без прямого обходу)
-- **Підтримка SOCKS5** — повна підтримка проксі SOCKS5 для вихідної маршрутизації
-- **TLS Fingerprint Spoofing** — TLS-відбиток, як у браузері, через `wreq-js` для обходу виявлення ботів
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. «Я хочу використовувати ШІ для кодування, але в мене немає грошей»
+🆓 4. "I want to use AI for coding but I have no money"
-Не кожен може платити 20–200 доларів на місяць за підписку на AI. Студентам, розробникам із країн, що розвиваються, любителям і фрілансерам потрібен доступ до якісних моделей за нульовою ціною.
+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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Вбудовані безкоштовні постачальники рівня** — Вбудована підтримка 100% безкоштовних постачальників: iFlow (8 необмежених моделей), Qwen (3 необмежені моделі), Kiro (Claude безкоштовно), Gemini CLI (180K/місяць безкоштовно)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Безкоштовні комбінації** — ланцюжок `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 0 доларів США/місяць без простоїв
-- **Безкоштовні кредити NVIDIA NIM** — інтегровано 1000 безкоштовних кредитів
-- **Стратегія оптимізації витрат** — стратегія маршрутизації, яка автоматично вибирає найдешевшого доступного постачальника
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. «Мені потрібно захистити свій ШІ-шлюз від несанкціонованого доступу»
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Коли шлюз штучного інтелекту надається мережі (LAN, VPS, Docker), будь-хто, хто має адресу, може використовувати токени/квоту розробника. Без захисту API вразливі до неправильного використання, швидкого впровадження та зловживання.
+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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Керування ключами API** — генерація, ротація та визначення обсягу для кожного постачальника за допомогою спеціальної сторінки `/dashboard/api-manager`
-- **Дозволи на рівні моделі** — обмежте ключі API певними моделями (`openai/*`, шаблони узагальнення) із перемикачем «Дозволити все»/«Обмежити»
-- **API Endpoint Protection** — вимагати ключ для `/v1/models` і блокувати певних постачальників зі списку
-- **Auth Guard + CSRF Protection** — усі маршрути інформаційної панелі захищені проміжним програмним забезпеченням `withAuth` + маркерами CSRF
-- **Обмежувач швидкості** — обмеження швидкості за IP-адресою з настроюваними вікнами
-- **IP Filtering** — список дозволених/чорних адрес для контролю доступу
-- **Prompt Injection Guard** — очищення від шкідливих шаблонів підказок
-- **Шифрування AES-256-GCM** — облікові дані зашифровані в стані спокою
+- **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. «Мій постачальник не працює, і я втратив потік кодування»
+🛑 6. "My provider went down and I lost my coding flow"
-Постачальники AI можуть стати нестабільними, повертати помилки 5xx або досягати тимчасових обмежень швидкості. Якщо розробник залежить від одного постачальника, вони перериваються. Без автоматичних вимикачів повторні спроби можуть призвести до збою програми.
+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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Автоматичний вимикач для кожного постачальника** — автоматичне розмикання/замикання з настроюваними пороговими значеннями та часом відновлення (закрито/розімкнуто/напіврозімкнуто)
-- **Exponential Backoff** — прогресивні затримки повторних спроб
-- **Anti-Thundering Herd** — Mutex + захист семафора від одночасних повторних штормів
-- **Комбіновані запасні ланцюги** — якщо основний постачальник виходить з ладу, автоматично проходить через ланцюжок без втручання.
-- **Combo Circuit Breaker** — автоматично вимикає несправні постачальники в комбінованому ланцюжку
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-- **Health Dashboard** — Моніторинг безвідмовної роботи, стани автоматичного вимикача, блокування, статистика кешу, затримка p50/p95/p99
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. «Налаштування кожного інструменту штучного інтелекту є виснажливим і повторюваним процесом»
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Розробники використовують Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Кожному інструменту потрібна інша конфігурація (кінцева точка API, ключ, модель). Перенастроювання при зміні постачальника чи моделі – марна трата часу.
+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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Панель інструментів CLI** — спеціальна сторінка з налаштуванням одним клацанням для Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-- **GitHub Copilot Config Generator** — генерує `chatLanguageModels.json` для коду VS із масовим вибором моделі
-- **Майстер адаптації** — 4-етапне налаштування для тих, хто вперше користується
-- **Одна кінцева точка, усі моделі** — налаштуйте `http://localhost:20128/v1` один раз, отримайте доступ до 36+ постачальників
+- **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 67+ providers
-🔑 8. «Керування токенами OAuth від кількох постачальників — це пекло»
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot — усі використовують OAuth 2.0 із терміном дії маркерів. Розробникам необхідно постійно проходити повторну автентифікацію, мати справу з `client_secret is missing`, `redirect_uri_mismatch` і збоями на віддалених серверах. OAuth у LAN/VPS є особливо проблематичним.
+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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Auto Token Refresh** — маркери OAuth оновлюються у фоновому режимі до завершення терміну дії
-- **Вбудований OAuth 2.0 (PKCE)** — автоматичний потік для Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **Multi-Account OAuth** — кілька облікових записів на постачальника за допомогою вилучення токенів JWT/ID
-- **OAuth LAN/Remote Fix** — виявлення приватної IP-адреси для `redirect_uri` + ручний режим URL-адреси для віддалених серверів
-- **OAuth за Nginx** — використовує `window.location.origin` для зворотної сумісності проксі
-- **Remote OAuth Guide** — покроковий посібник для облікових даних Google Cloud на VPS/Docker
+- **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. «Я не знаю, скільки я витрачаю і куди»
+📊 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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Інформаційна панель аналізу витрат** — відстеження вартості кожного токена та керування бюджетом для кожного постачальника
-- **Бюджетні обмеження на рівень** — максимальна сума витрат на рівень, що запускає автоматичний відкат
-- **Конфігурація ціни за модель** — налаштовувані ціни за модель
-- **Статистика використання за ключ API** — кількість запитів і позначка часу останнього використання для кожного ключа
-- **Інформаційна панель аналітики** — картки зі статистичними даними, діаграма використання моделі, таблиця постачальників із показниками успіху та затримкою
+- **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. «Я не можу діагностувати помилки та проблеми під час викликів ШІ»
+🐛 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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Інформаційна панель уніфікованих журналів** — 4 вкладки: журнали запитів, журнали проксі, журнали аудиту, консоль
-- **Console Log Viewer** — засіб перегляду терміналу в режимі реального часу з кольоровими рівнями, автопрокручуванням, пошуком, фільтром
-- **Проксі-журнали SQLite** — постійні журнали, які залишаються після перезапуску сервера
-- **Translator Playground** — 4 режими налагодження: Playground (переклад формату), Chat Tester (туди й назад), Test Bench (пакет), Live Monitor (у реальному часі)
-- **Запит телеметрії** — затримка p50/p95/p99 + трасування X-Request-Id
-- **Логування на основі файлів із ротацією** — консольний перехоплювач записує все в журнал JSON із ротацією на основі розміру
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. «Розгортання та підтримка шлюзу є складною справою»
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Встановлення, налаштування та обслуговування проксі ШІ в різних середовищах (локальне, VPS, Docker, хмара) є трудомістким. Такі проблеми, як жорстко закодовані шляхи, `EACCES` у каталогах, конфлікти портів і кросплатформні збірки, додають тертя.
+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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **npm global install** — `npm install -g omniroute && omniroute` — готово
-- **Мультиплатформенний Docker** — нативний AMD64 + ARM64 (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Профілі створення Docker** — `base` (без інструментів CLI) і `cli` (з Claude Code, Codex, OpenClaw)
-- **Electron Desktop App** — рідна програма для Windows/macOS/Linux із системним треєм, автозапуском, офлайн-режимом
-- **Режим розділеного порту** — API та інформаційна панель на окремих портах для розширених сценаріїв (зворотний проксі, мережа контейнерів)
-- **Cloud Sync** — синхронізація налаштувань між пристроями через Cloudflare Workers
-- **Резервне копіювання БД** — автоматичне резервне копіювання, відновлення, експорт та імпорт усіх налаштувань
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. «Інтерфейс лише англійською мовою, і моя команда не розмовляє англійською»
+🌍 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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Інформаційна панель i18n — 30 мов** — перекладено всі 500+ клавіш, включаючи арабську, болгарську, датську, німецьку, іспанську, фінську, французьку, іврит, гінді, угорську, індонезійську, італійську, японську, корейську, малайську, голландську, норвезьку, польську, португальську (PT/BR), румунську, російську, словацьку, шведську, тайську, українську, в’єтнамську, китайська, філіппінська, англійська
-- **Підтримка RTL** — підтримка арабської та івриту справа наліво
-- **Багатомовні файли README** — 30 повних перекладів документації
-- **Вибір мови** — значок глобуса в заголовку для перемикання в реальному часі
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. «Мені потрібно більше, ніж чат — мені потрібні вставки, зображення, аудіо»
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-ШІ — це не просто завершення чату. Розробникам потрібно генерувати зображення, транскрибувати аудіо, створювати вбудовування для RAG, змінювати рейтинг документів і модерувати вміст. Кожен API має різну кінцеву точку та формат.
+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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Вбудовування** — `/v1/embeddings` із 6 постачальниками та 9+ моделями
-- **Генерація зображень** — `/v1/images/generations` із 10 постачальниками та понад 20 моделями (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-- **Текст у відео** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) і SD WebUI
-- **Текст у музику** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
-- **Транскрипція аудіо** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Перетворення тексту в мовлення** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT + існуючі постачальники
-- **Модерації** — `/v1/moderations` — Перевірки безпеки вмісту
-- **Переранжування** — `/v1/rerank` — Переранжування релевантності документа
-- **Responses API** — повна підтримка `/v1/responses` для Codex
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. «У мене немає можливості перевірити та порівняти якість різних моделей»
+🧪 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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Оцінки LLM** — Золотий набір тестів із 10 попередньо завантаженими випадками, що охоплюють привітання, математику, географію, генерацію коду, відповідність JSON, переклад, уцінку, відмову безпеки
-- **4 стратегії збігу** — `exact`, `contains`, `regex`, `custom` (функція JS)
-- **Translator Playground Test Bench** — Пакетне тестування з кількома входами та очікуваними результатами, порівняння між постачальниками
-- **Chat Tester** — повний цикл із візуальним відтворенням відповідей
-- **Live Monitor** — потік усіх запитів, що проходять через проксі, у реальному часі
+- **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. «Мені потрібно масштабувати без втрати продуктивності»
+📈 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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Семантичний кеш** — дворівневий кеш (підпис + семантичний) зменшує вартість і затримку
-- **Request Idempotency** — вікно дедуплікації 5 с для ідентичних запитів
-- **Виявлення ліміту швидкості** — RPM для кожного постачальника, мінімальний розрив і максимальне одночасне відстеження
-- **Обмеження швидкості, які можна редагувати** — налаштування за замовчуванням у Параметрах → Стійкість із наполегливістю
-- **API Key Validation Cache** — 3-рівневий кеш для продуктивності
-- **Інформаційна панель справності з телеметрією** — затримка p50/p95/p99, статистика кешу, час роботи
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. «Я хочу глобально контролювати поведінку моделі»
+🤖 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.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- **Впровадження системної підказки** — глобальна підказка застосовується до всіх запитів
-- **Thinking Budget Validation** — Контроль розподілу токенів міркувань за запитом (прохідний, автоматичний, спеціальний, адаптивний)
-- **6 стратегій маршрутизації** — глобальні стратегії, які визначають спосіб розподілу запитів
-- **Wildcard Router** — шаблони `provider/*` динамічно маршрутизують до будь-якого постачальника
-- **Увімкнути/вимкнути комбо** — перемикайте комбо безпосередньо з інформаційної панелі
-- **Перемикнути постачальника** — увімкнути/вимкнути всі з’єднання для постачальника одним клацанням миші
-- **Заблоковані постачальники** — виключити певних постачальників зі списку `/v1/models`
+- **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
-🧰 17. «Мені потрібні інструменти MCP як першокласні можливості продукту»
+🧰 17. "I need MCP tools as first-class product capabilities"
-Багато шлюзів ШІ розкривають MCP лише як приховану деталь реалізації. Командам потрібен видимий, керований рівень операцій.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- MCP з’являється на панелі навігації та на вкладці протоколу кінцевої точки
-- Спеціальна сторінка керування MCP із процесом, інструментами, обсягами й аудитом
-- Вбудований швидкий запуск для `omniroute --mcp` і адаптація клієнта
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. «Мені потрібна оркестровка A2A із синхронізацією + шляхи завдань потоку»
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Робочі процеси агента потребують як прямих відповідей, так і тривалого потокового виконання з контролем життєвого циклу.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- Кінцева точка A2A JSON-RPC (`POST /a2a`) з `message/send` і `message/stream`
-- Потокова передача SSE з розповсюдженням стану терміналу
-- API життєвого циклу завдань для `tasks/get` і `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. «Мені потрібна реальна справність процесу MCP, а не вгаданий статус»
+🛰️ 19. "I need real MCP process health, not guessed status"
-Операційним групам потрібно знати, чи справді MCP активний, а не лише те, чи доступний API.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- Файл серцевого ритму виконання з PID, часовими мітками, транспортом, кількістю інструментів і режимом області
-- API статусу MCP, що поєднує серцебиття + останню активність
-- Картки стану інтерфейсу користувача для процесу/часу безперебійної роботи/свіжості пульсу
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. «Мені потрібне виконання інструменту MCP з можливістю перевірки»
+📋 20. "I need auditable MCP tool execution"
-Коли інструменти змінюють конфігурацію або запускають операційні дії, командам потрібна криміналістична відстежуваність.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-— Журнал аудиту з підтримкою SQLite для викликів інструментів MCP
-
-- Фільтри за інструментом, успіхом/невдачею, ключем API та розбивкою на сторінки
-- Таблиця аудиту інформаційної панелі + кінцеві точки статистики для автоматизації
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. «Мені потрібні обмежені дозволи MCP для інтеграції»
+🔐 21. "I need scoped MCP permissions per integration"
-Різні клієнти повинні мати мінімальний доступ до категорій інструментів.
+Different clients should have least-privilege access to tool categories.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- 9 детальних областей MCP для контрольованого доступу до інструменту
-- Застосування обсягу та видимість в інтерфейсі користувача керування MCP
-- Безпечна поза за замовчуванням для робочих інструментів
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. «Мені потрібен оперативний контроль без перерозподілу»
+⚙️ 22. "I need operational controls without redeploying"
-Командам потрібні швидкі зміни часу виконання під час інцидентів або витрат.
+Teams need quick runtime changes during incidents or cost events.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- Перемикання комбо-активації безпосередньо з інформаційної панелі MCP
-- Застосовуйте профілі стійкості з попередньо визначених пакетів політик
-- Скинути стан автоматичного вимикача з тієї ж панелі керування
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. «Мені потрібна видимість і скасування життєвого циклу завдання A2A»
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Без видимості життєвого циклу інциденти завдань стає важко сортувати.
+Without lifecycle visibility, task incidents become hard to triage.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-— Список завдань/фільтрування за станом/навиками з розбивкою на сторінки
-
-- Деталізація метаданих завдань, подій і артефактів
-- Кінцева точка скасування завдання та дія інтерфейсу користувача з підтвердженням
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. «Мені потрібні активні показники потоку для завантаження A2A»
+🌊 24. "I need active stream metrics for A2A load"
-Робочі процеси потокової передачі вимагають оперативного розуміння паралельності та живих з’єднань.
+Streaming workflows require operational insight into concurrency and live connections.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-— Лічильники активних потоків інтегровані в статус A2A
-
-- Мітка часу останнього завдання та підрахунок стану
-- Картки інформаційної панелі A2A для моніторингу операцій у реальному часі
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. «Мені потрібне стандартне виявлення агентів для клієнтів»
+🪪 25. "I need standard agent discovery for clients"
-Зовнішнім клієнтам і оркестрантам потрібні машинозчитувані метадані для адаптації.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- Картка агента розкрита на `/.well-known/agent.json`
-- Можливості та навички, показані в інтерфейсі користувача користувача
-- API стану A2A включає метадані виявлення для автоматизації
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. «Мені потрібна можливість виявлення протоколу в UX продукту»
+🧭 26. "I need protocol discoverability in the product UX"
-Якщо користувачі не можуть виявити поверхні протоколу, якість впровадження та підтримки падає.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-— Записи бічної панелі для MCP і A2A
-
-- Сторінка кінцевої точки Вкладка протоколів із швидким запуском і статусом
-- Посилання з огляду на спеціальні інформаційні панелі керування
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. «Мені потрібна наскрізна перевірка протоколу з реальними клієнтами»
+🧪 27. "I need end-to-end protocol validation with real clients"
-Пробних тестів недостатньо для перевірки сумісності протоколу перед випуском.
+Mock tests are not enough to validate protocol compatibility before release.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- Комплект E2E, який завантажує програму та використовує реальний клієнтський транспорт MCP SDK
-- Клієнт A2A перевіряє потоки виявлення, надсилання, потокової передачі, отримання та скасування
-- Перехресна перевірка тверджень щодо аудиту MCP та API завдань A2A
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. «Мені потрібна уніфікована можливість спостереження через усі інтерфейси»
+📡 28. "I need unified observability across all interfaces"
-Поділ спостережуваності за протоколом створює сліпі зони та довший MTTR.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- Уніфіковані інформаційні панелі/журнали/аналітика в одному продукті
-- Справність + аудит + телеметрія запитів на рівнях OpenAI, MCP і A2A
-- Операційні API для статусу та автоматизації
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. «Мені потрібне одне середовище виконання для проксі + інструментів + оркестровки агента»
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Запуск багатьох окремих служб збільшує експлуатаційні витрати та частоту збоїв.
+Running many separate services increases operational cost and failure modes.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- OpenAI-сумісний проксі, сервер MCP і сервер A2A в одному стеку
-- Спільна автентифікація, стійкість, зберігання даних і можливість спостереження
-- Послідовна модель політики на всіх поверхнях взаємодії
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. «Мені потрібно надсилати агентські робочі процеси без розповсюдження клею-коду»
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Команди втрачають швидкість під час з’єднання кількох спеціальних служб і сценаріїв.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Як це вирішує OmniRoute:**
+**How OmniRoute solves it:**
-- Уніфікована стратегія кінцевих точок для клієнтів і агентів
- — Вбудовані інтерфейси керування протоколами та шляхи перевірки диму
-- Основи, готові до виробництва (безпека, журналювання, стійкість, резервне копіювання)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Приклади Playbooks
+### Example Playbooks (Integrated Use Cases)
-**Playbook A: Максимальна кількість платної підписки + дешеве резервне копіювання**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -688,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Playbook B: стек кодування без витрат**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -700,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Playbook C: резервний ланцюжок 24/7**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -713,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Playbook D: Операції агента з MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Швидкий старт
+## 🆓 Start Free — Zero Configuration Cost
-**1. Встановити глобально:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Швидкий старт
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Інформаційна панель відкривається в `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Команда | Опис |
-| ----------------------- | ---------------------------------------------- |
-| `omniroute` | Запустити сервер (порт за замовчуванням 20128) |
-| `omniroute --port 3000` | Використовувати спеціальний порт |
-| `omniroute --no-open` | Не відкривати автоматично браузер |
-| `omniroute --help` | Показати довідку |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Підключіть БЕЗКОШТОВНОГО провайдера:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Інформаційна панель → Постачальники → Підключити **Claude Code** або **Antigravity** → Вхід OAuth → Готово!
+Optional split-port mode:
-**3. Використовуйте у своєму інструменті CLI:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**Ось і все!** Почніть кодувати з БЕЗКОШТОВНИМИ моделями ШІ.
+### 2) Connect providers and create your API key
-**Альтернатива — запустити з джерела:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
-## 🐳 Докер
+## 🐳 Docker
-OmniRoute доступний як загальнодоступний образ Docker на [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Швидкий біг:**
+**Quick run:**
```bash
docker run -d \
@@ -782,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**З файлом середовища:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -797,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Використання Docker Compose:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -807,255 +880,550 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| Зображення | Тег | Розмір | Опис |
-| ------------------------ | -------- | ------- | -------------------------- |
-| `diegosouzapw/omniroute` | `latest` | ~250 МБ | Останній стабільний випуск |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250 МБ | Поточна версія |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Короткий огляд цін
+## 💰 Pricing at a Glance
-| Рівень | Постачальник | Вартість | Скидання квоти | Найкраще для |
-| ------------------ | ---------------- | ------------------------------- | ----------------------------- | ---------------------------- |
-| **💳 ПІДПИСКА** | Клод Код (Pro) | 20 доларів США на місяць | 5 годин + щотижня | Вже підписані |
-| | Codex (Plus/Pro) | $20-200/міс | 5 годин + щотижня | Користувачі OpenAI |
-| | Gemini CLI | **БЕЗКОШТОВНО** | 180 тис./місяць + 1 тис./день | всі! |
-| | Копілот GitHub | $10-19/міс | Щомісяця | Користувачі GitHub |
-| **🔑 КЛЮЧ API** | NVIDIA NIM | **БЕЗКОШТОВНО** (1000 кредитів) | Одноразова | Безкоштовне тестування рівня |
-| | DeepSeek | Оплата за використання | Жодного | Краща ціна/якість |
-| | Groq | Безкоштовний рівень + платний | Оцінка обмежена | Надшвидкий висновок |
-| | xAI (Грок) | Оплата за використання | Жодного | Моделі Grok |
-| | Містраль | Безкоштовний рівень + платний | Оцінка обмежена | Європейський ШІ |
-| | OpenRouter | Оплата за використання | Жодного | 100+ моделей |
-| **💰 ДЕШЕВО** | GLM-4.7 | $0,6/1 млн | Щодня о 10 ранку | Резервне копіювання бюджету |
-| | MiniMax M2.1 | $0,2/1 млн | 5-годинний роликовий | Найдешевший варіант |
-| | Кімі К2 | 9 $/міс квартира | 10 млн токенів/міс | Передбачувана вартість |
-| **🆓 БЕЗКОШТОВНО** | iFlow | $0 | Необмежений | 8 моделей безкоштовно |
-| | Квен | $0 | Необмежений | 3 моделі безкоштовно |
-| | Кіро | $0 | Необмежений | Клод безкоштовно |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Порада професіонала:** Почніть із Gemini CLI (180 тис. безкоштовно/місяць) + iFlow (необмежено безкоштовно) = 0 доларів США!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Основні характеристики
+---
-### 🧠 Основна маршрутизація та інтелект
+## 🆓 Free Models — What You Actually Get
-| Особливість | Що він робить |
-| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
-| 🎯 **Розумний 4-рівневий резервний варіант** | Авто-маршрут: Підписка → Ключ API → Дешево → Безкоштовно |
-| 📊 **Відстеження квот у реальному часі** | Підрахунок живих токенів + скидання зворотного відліку для кожного постачальника |
-| 🔄 **Формат перекладу** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro seamless + відповідь санація |
-| 👥 **Підтримка кількох облікових записів** | Кілька облікових записів на постачальника з інтелектуальним вибором |
-| 🔄 **Автоматичне оновлення токенів** | Маркери OAuth оновлюються автоматично з повторною спробою |
-| 🎨 **Користувацькі комбо** | 6 стратегій: спочатку заповнює, циклічний, p2c, випадковий, найменш використовуваний, оптимізований за витратами |
-| 🧩 **Користувацькі моделі** | Додайте будь-який ідентифікатор моделі до будь-якого постачальника |
-| 🌐 **Wildcard Router** | Динамічно направляйте шаблони `provider/*` до будь-якого постачальника |
-| 🧠 **Мислення про бюджет** | Наскрізний, автоматичний, настроюваний і адаптивний режими для моделей міркування |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **Швидке впровадження системи** | Глобальне системне підказка застосовується до всіх запитів |
-| 📄 **API відповідей** | Повна підтримка OpenAI Responses API (`/v1/responses`) для Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 Мультимодальні API
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Особливість | Що він робить |
-| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Створення зображень** | `/v1/images/generations` — 4 провайдери, 9+ моделей |
-| 📐 **Вбудовування** | `/v1/embeddings` — 6 провайдерів, 9+ моделей |
-| 🎤 **Транскрипція аудіо** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Створення тексту в мовлення** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Модерації** | `/v1/moderations` — Перевірка безпеки вмісту |
-| 🔀 **Переранжування** | `/v1/rerank` — Переранжування релевантності документа |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Стійкість і безпека
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| Особливість | Що він робить |
-| ------------------------------------- | ----------------------------------------------------------------------------------------------------- |
-| 🔌 **Автоматичний вимикач** | Автоматичне відкриття/закриття для кожного постачальника з настроюваними пороговими значеннями |
-| 🛡️ **Anti-Thundering Herd** | Mutex + обмеження швидкості семафора для постачальників ключів API |
-| 🧠 **Семантичний кеш** | Дворівневий кеш (підпис + семантика) зменшує вартість і затримку |
-| ⚡ **Запит на ідемпотентність** | 5-секундне вікно дедупляції для дублікатів запитів |
-| 🔒 **Підробка відбитків пальців TLS** | Обійти виявлення ботів на основі TLS через wreq-js |
-| 🌐 **IP-фільтрація** | Білий/чорний список для керування доступом API |
-| 📊 **Редаговані ліміти ставок** | Конфігурація RPM, мінімальний проміжок і максимальна одночасність на рівні системи |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **API Endpoint Protection** | Аутентифікація + блокування постачальника для кінцевої точки `/models` |
-| 🔒 **Видимість проксі** | Кольорові значки: 🟢 глобальний, 🟡 постачальник, 🔵 кожне підключення з відображенням IP |
-| 🌐 **3-рівнева конфігурація проксі** | Налаштуйте проксі-сервери на глобальному рівні, на рівні кожного постачальника чи кожного підключення |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 Спостережливість і аналітика
+### 🟡 QWEN MODELS (Device Code Auth)
-| Особливість | Що він робить |
-| ------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
-| 📝 **Подати запит на реєстрацію** | Режим налагодження з повними журналами запитів/відповідей |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **Журнали проксі SQLite** | Постійні журнали проксі зберігаються після перезавантаження сервера |
-| 📊 **Інформаційна панель аналітики** | На основі Recharts: картки статистики, діаграма використання моделей, таблиця провайдерів |
-| 📈 **Відстеження прогресу** | Увімкніть події прогресу SSE для потокового передавання |
-| 🧪 **Оцінки LLM** | Тестування золотого набору з 4 стратегіями матчу |
-| 🔍 **Надіслати запит на телеметрію** | агрегація затримок p50/p95/p99 + трасування X-Request-Id |
-| 📋 **Інформаційна панель журналів** | Уніфікована сторінка з 4 вкладками: журнали запитів, журнали проксі, журнали аудиту, консоль |
-| 🖥️ **Перегляд журналу консолі** | Переглядач у режимі реального часу у стилі терміналу з фільтром рівнів, пошуком, автоматичним прокручуванням |
-| 📑 **Логування на основі файлів** | Перехоплювач консолі захоплює весь вихід у файл журналу JSON із обертанням |
-| 🏥 **Інформаційна панель здоров’я** | Час роботи системи, стани автоматичного вимикача, блокування, статистика кешу |
-| 💰 **Відстеження витрат** | Управління бюджетом + конфігурація ціноутворення для кожної моделі |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ Розгортання та синхронізація
+### 🟣 GEMINI CLI (Google OAuth)
-| Особливість | Що він робить |
-| ------------------------------------------- | ----------------------------------------------------------------------------------- |
-| 💾 **Хмарна синхронізація** | Синхронізація конфігурації між пристроями через Cloudflare Workers |
-| 🌐 **Розгортайте будь-де** | Localhost, VPS, Docker, Cloudflare Workers |
-| 🔑 **Керування ключами API** | Генерувати, обертати та використовувати ключі API для кожного постачальника |
-| 🧙 **Майстер адаптації** | 4-етапне покрокове налаштування для користувачів, які вперше |
-| 🔧 **Інформаційна панель інструментів CLI** | Налаштувати в один клік Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
-| 🔄 **Резервне копіювання БД** | Автоматичне резервне копіювання, відновлення, експорт і імпорт для всіх налаштувань |
-| 🌐 **Інтернаціоналізація** | Повний i18n із next-intl — підтримка англійської та португальської (Бразилія) |
-| 🌍 **Вибір мови** | Значок глобуса в заголовку для перемикання мов у реальному часі (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Каталог користувацьких даних** | `DATA_DIR` змінна env для перевизначення типового шляху зберігання `~/.omniroute` |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Деталі функції
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Smart 4-Tier Fallback
+Start MCP transport in stdio mode:
-Створюйте комбо з автоматичним резервним варіантом:
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 Відстеження квот у реальному часі
+Recommended validation flow:
-- Споживання токенів на постачальника
-- Скидання зворотного відліку (5 годин, щодня, щотижня)
-- Оцінка вартості платних рівнів
-- Щомісячні звіти про витрати
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Переклад формату
+Useful APIs for automation:
-Плавний переклад між форматами:
-
-- **OpenAI** ↔ **Клод** ↔ **Близнюки** ↔ **Відповіді OpenAI**
-- Ваш інструмент CLI надсилає формат OpenAI → OmniRoute перекладає → Постачальник отримує рідний формат
-- Працює з будь-яким інструментом, який підтримує спеціальні кінцеві точки OpenAI
-- **Дезінфікація відповіді** — видаляє нестандартні поля для суворої сумісності з OpenAI SDK
-- **Нормалізація ролі** — `developer` → `system` для не-OpenAI; `system` → `user` для моделей GLM/ERNIE
-- **Вилучення тегів мислення** — `` блоків → `reasoning_content` для моделей мислення
-- **Структурований вихід** — `json_schema` → Gemini `responseMimeType`/`responseSchema`
-
-### 👥 Підтримка кількох облікових записів
-
-- Додайте кілька облікових записів для кожного постачальника
-- Автоматична циклічна або пріоритетна маршрутизація
-- Повернення до наступного облікового запису, коли досягається квота
-
-### 🔄 Автоматичне оновлення токенів
-
-- Маркери OAuth автоматично оновлюються до закінчення терміну дії
-- Повторна автентифікація вручну не потрібна
-- Бездоганний досвід у всіх постачальників
-
-### 🎨 Спеціальні комбо
-
-- Створюйте необмежену кількість комбінацій моделей
-- 6 стратегій: спочатку заповнюй, циклічна, сила двох варіантів, випадкова, найменш використовувана, оптимізована за витратами
-- Діліться комбо на різних пристроях за допомогою Cloud Sync
-
-### 🏥 Інформаційна панель здоров'я
-
-- Статус системи (час роботи, версія, використання пам'яті)
-- Стани автоматичного вимикача для кожного постачальника (замкнуто/розімкнуто/напіврозімкнуто)
-- Статус обмеження швидкості та активні блокування
- — Статистика кешу підписів
-- Телеметрія затримки (p50/p95/p99) + кеш підказок
-- Скинути стан здоров'я одним клацанням миші
-
-### 🔧 Ігровий майданчик для перекладачів
-
-OmniRoute містить потужний вбудований Translator Playground із **4 режимами** для налагодження, тестування та моніторингу перекладів API:
-
-| Режим | Опис |
-| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻 Ігровий майданчик** | Прямий переклад формату — вставте будь-яке тіло запиту API та миттєво подивіться, як OmniRoute перекладає його між форматами постачальників (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Включає приклади шаблонів і автоматичне визначення формату. |
-| **💬 Тестер чату** | Надсилайте справжні запити в чат через OmniRoute і переглядайте повну інформацію: ваші дані, перекладений запит, відповідь постачальника та перекладену відповідь. Безцінний для перевірки комбінованої маршрутизації. |
-| **🧪 Тестовий стенд** | Режим пакетного тестування — визначте кілька тестів із різними вхідними та очікуваними результатами, запустіть їх усі одночасно та порівняйте результати між постачальниками та моделями. |
-| **📱 Live Monitor** | Моніторинг запитів у режимі реального часу — спостерігайте за вхідними запитами, коли вони проходять через OmniRoute, переглядайте трансляції форматів у реальному часі та миттєво виявляйте проблеми. |
-
-**Доступ:** Інформаційна панель → Перекладач (бічна панель)
-
-### 💾 Cloud Sync
-
-- Синхронізація постачальників, комбінацій і налаштувань на всіх пристроях
-- Автоматична фонова синхронізація
-- Безпечне зашифроване сховище
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Оцінки (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute містить вбудовану систему оцінювання для перевірки якості відповіді LLM на відповідність золотому набору. Доступ до нього через **Аналітика → Оцінки** на інформаційній панелі.
+Discover the agent:
-### Вбудований Золотий набір
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-Попередньо завантажений "Золотий набір OmniRoute" містить 10 тестів, які охоплюють:
+Send a task:
-- Привітання, математика, географія, генерація коду
-- Відповідність формату JSON, переклад, розмітка
-- Відмова безпеки (шкідливий контент), підрахунок, булева логіка
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Стратегії оцінювання
+Manage lifecycle:
-| Стратегія | Опис | Приклад |
-| ---------- | -------------------------------------------------------------- | -------------------------------- |
-| `exact` | Вихідні дані повинні точно відповідати | `"4"` |
-| `contains` | Вихідні дані повинні містити підрядок (незалежно від регістру) | `"Paris"` |
-| `regex` | Вихідні дані мають відповідати шаблону регулярного виразу | `"1.*2.*3"` |
-| `custom` | Спеціальна функція JS повертає true/false | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Посібник із налаштування
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Постачальники підписки
+🧪 End-to-end protocol validation
+
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
### Claude Code (Pro/Max)
@@ -1070,7 +1438,7 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**Професійна порада:** використовуйте Opus для складних завдань, Sonnet для швидкості. OmniRoute відстежує квоту на модель!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
@@ -1084,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (БЕЗКОШТОВНО 180K/місяць!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1096,9 +1481,9 @@ Models:
gc/gemini-2.5-pro
```
-**Найкраще:** Величезний безкоштовний рівень! Використовуйте це перед платними рівнями.
+**Best Value:** Huge free tier! Use this before paid tiers.
-### Копілот GitHub
+### GitHub Copilot
```bash
Dashboard → Providers → Connect GitHub
@@ -1114,88 +1499,88 @@ Models:
-🔑 Постачальники ключів API
+🔑 API Key Providers
-### NVIDIA NIM (БЕЗКОШТОВНІ 1000 кредитів!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Зареєструйтесь: [build.nvidia.com](https://build.nvidia.com)
-2. Отримайте безкоштовний ключ API (1000 кредитів включено)
-3. Інформаційна панель → Додати постачальника → NVIDIA NIM:
- - Ключ API: `nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**Моделі:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` та понад 50 інших
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Порада професіонала:** OpenAI-сумісний API — бездоганно працює з перекладом формату OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. Зареєструйтеся: [platform.deepseek.com](https://platform.deepseek.com)
-2. Отримайте ключ API
-3. Інформаційна панель → Додати постачальника → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Моделі:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (доступний безкоштовний рівень!)
+### Groq (Free Tier Available!)
-1. Зареєструйтеся: [console.groq.com](https://console.groq.com)
-2. Отримайте ключ API (включає безкоштовний рівень)
-3. Інформаційна панель → Додати постачальника → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Моделі:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Професійна порада:** Надшвидкий висновок — найкращий для кодування в реальному часі!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (100+ моделей)
+### OpenRouter (100+ Models)
-1. Зареєструйтеся: [openrouter.ai](https://openrouter.ai)
-2. Отримайте ключ API
-3. Інформаційна панель → Додати провайдера → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Моделі:** Отримуйте доступ до понад 100 моделей від усіх основних постачальників за допомогою єдиного ключа API.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Дешеві постачальники (резервні)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (щоденне скидання, $0,6/1 млн)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Зареєструйтеся: [Zhipu AI](https://open.bigmodel.cn/)
-2. Отримайте ключ API від Coding Plan
-3. Інформаційна панель → Додати ключ API:
- - Постачальник: `glm`
- - Ключ API: `your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**Використовуйте:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Професійна порада:** План кодування пропонує 3x квоту за 1/7 вартості! Скидання щодня о 10:00.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (5 годин скидання, $0,20/1 млн)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Зареєструйтеся: [MiniMax](https://www.minimax.io/)
-2. Отримайте ключ API
-3. Інформаційна панель → Додати ключ API
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Використовуйте:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Порада:** Найдешевший варіант для довгого контексту (1 млн токенів)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 ($9/місяць)
+### Kimi K2 ($9/month flat)
-1. Підпишіться: [Moonshot AI](https://platform.moonshot.ai/)
-2. Отримайте ключ API
-3. Інформаційна панель → Додати ключ API
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Використання:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Професійна порада:** Фіксовані 9 доларів США на місяць за 10 мільйонів токенів = 0,90 доларів США за 1 млн. ефективних витрат!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 БЕЗКОШТОВНІ постачальники (аварійне резервне копіювання)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 БЕЗКОШТОВНИХ моделей)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1210,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 БЕЗКОШТОВНІ моделі)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1222,7 +1607,7 @@ Models:
qw/qwen3-coder-flash
```
-### Кіро (Клод БЕЗКОШТОВНО)
+### Kiro (Claude FREE)
```bash
Dashboard → Connect Kiro
@@ -1237,9 +1622,9 @@ Models:
-🎨 Створення комбо
+🎨 Create Combos
-### Приклад 1: максимізація підписки → дешеве резервне копіювання
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1253,7 +1638,7 @@ Models:
Use in CLI: premium-coding
```
-### Приклад 2: лише безкоштовно (нульова вартість)
+### Example 2: Free-Only (Zero Cost)
```
Name: free-combo
@@ -1268,9 +1653,9 @@ Cost: $0 forever!
-🔧 Інтеграція CLI
+🔧 CLI Integration
-### Курсор IDE
+### Cursor IDE
```
Settings → Models → Advanced:
@@ -1279,9 +1664,9 @@ Settings → Models → Advanced:
Model: cc/claude-opus-4-6
```
-### Клод Код
+### Claude Code
-Використовуйте сторінку **Інструменти CLI** на інформаційній панелі для налаштування одним клацанням миші або редагуйте `~/.claude/settings.json` вручну.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1294,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Варіант 1 — Інформаційна панель (рекомендовано):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Варіант 2 — вручну:** Редагувати `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1316,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **Примітка:** OpenClaw працює лише з локальним OmniRoute. Використовуйте `127.0.0.1` замість `localhost`, щоб уникнути проблем із вирішенням IPv6.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### Cline / Продовжити / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1328,112 +1713,245 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Усунення несправностей
+## Усунення несправностей
-Натисніть, щоб розгорнути посібник з усунення несправностей
+Click to expand troubleshooting guide
-**"Мовна модель не надавала повідомлень"**
+**"Language model did not provide messages"**
-- Квота постачальника вичерпана → Перевірте систему відстеження квот на інформаційній панелі
-- Рішення: скористайтеся комбінованим альтернативним варіантом або перейдіть на дешевший рівень
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**Обмеження швидкості**
+**Rate limiting**
-— Вичерпана квота на підписку → Повернення до GLM/MiniMax
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-- Додати комбо: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+**OAuth token expired**
-**Термін дії маркера OAuth минув**
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-— Автоматично оновлено OmniRoute
+**High costs**
-- Якщо проблеми не зникають: Інформаційна панель → Постачальник → Повторне підключення
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Високі витрати**
+**Dashboard/API ports are wrong**
-- Перевірте статистику використання в Інформаційній панелі → Витрати
-- Переключіть основну модель на GLM/MiniMax
-- Використовуйте безкоштовний рівень (Gemini CLI, iFlow) для некритичних завдань
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Інформаційна панель відкривається через неправильний порт**
+**Cloud sync errors**
-- Встановити `PORT=20128` та `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Помилки хмарної синхронізації**
+**First login not working**
-- Переконайтеся, що `BASE_URL` вказує на ваш запущений екземпляр
-- Перевірте `CLOUD_URL` вказує на очікувану кінцеву точку хмари
-- Зберігайте значення `NEXT_PUBLIC_*` у відповідності зі значеннями на стороні сервера
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Перший вхід не працює**
+**No request logs**
-- Перевірте `INITIAL_PASSWORD` в `.env`
-- Якщо не встановлено, резервний пароль – `123456`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Немає журналів запитів**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Установіть `ENABLE_REQUEST_LOGS=true` в `.env`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-**Тест з’єднання показує «Недійсне» для OpenAI-сумісних постачальників**
-
-- Багато постачальників не розкривають кінцеву точку `/models`
-- OmniRoute v1.0.6+ включає резервну перевірку через завершення чату
-- Переконайтеся, що базова URL-адреса містить суфікс `/v1`
-
-### 🔐 OAuth
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ ВАЖЛИВО для використання OmniRoute у віддаленому VPS/Docker/сервері**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-Провідники **Antigravity** і **Gemini CLI** використовують **Google OAuth 2.0** для автентифікації. Google вимагає, щоб `redirect_uri` не використовував fluxo OAuth, який **exatamente** має URI перед кадастрадами без додатка Google Cloud Console.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-Оскільки повноваження OAuth embutidas, OmniRoute не встановлено в кадастрадах **apenas para `localhost`**. Якщо ви маєте доступ до OmniRoute у віддаленому сервері (наприклад: `https://omniroute.meuservidor.com`), або Google rejeita a autenticação com:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### Рішення: налаштуйте власні облікові записи OAuth
+#### Solution: Configure your own OAuth credentials
-Потрібно точно написати **Ідентифікатор клієнта OAuth 2.0** у Google Cloud Console через URI вашого сервера.
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
#### Passo a passo
-**1. Доступ до Google Cloud Console**
+**1. Acesse o Google Cloud Console**
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
-**2. Crie um novo OAuth 2.0 ID клієнта**
+**2. Crie um novo OAuth 2.0 Client ID**
-- Натисніть **"+ Створити облікові дані"** → **"Ідентифікатор клієнта OAuth"**
-- Tipo de aplicativo: **"Веб-програма"**
-- Назва: escolha qualquer nome (наприклад: `OmniRoute Remote`)
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. Додайте як авторизовані URI перенаправлення**
+**3. Adicione as Authorized Redirect URIs**
-Без поля **"Авторизовані URI перенаправлення"**, додайте:
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
```
-> Замініть `seu-servidor.com` домен або IP на свій сервер (включно з необхідним портом, наприклад: `http://45.33.32.156:20128/callback`).
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. Зберегти електронну копію як ідентифікацію**
+**4. Salve e copie as credenciais**
-Наприклад, Google показує **Ідентифікатор клієнта** і **Секрет клієнта**.
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. Налаштувати як variáveis de ambiente**
+**5. Configure as variáveis de ambiente**
-Немає `.env` (або наших варіантів середовища Docker):
+No seu `.env` (ou nas variáveis de ambiente do Docker):
```bash
# Para Antigravity:
@@ -1458,21 +1976,21 @@ docker restart omniroute
**7. Tente conectar novamente**
-Інформаційна панель → Постачальники → Антигравітація (або Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
-Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a authenticação funcionará.
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### Тимчасове вирішення проблеми (необхідне налаштування облікових записів)
+#### Workaround temporário (sem configurar credenciais próprias)
Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. OmniRoute скидає URL-адресу авторизації Google
-2. Якщо ви авторизуєтеся, перенаправлення даних Google для `localhost` (неможливо віддалено від сервера)
-3. **Скопіюйте повну URL-адресу** для переходу до вашого браузера (повідомте, що сторінка не створена)
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
-5. Натисніть **"Підключити"**
+5. Clique em **"Connect"**
> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
@@ -1480,128 +1998,123 @@ Se não quiser criar credenciais próprias agora, ainda é possível usar o flux
---
-## 🛠️
+
-- **Серед виконання**: Node.js 18–22 LTS (⚠️ Node.js 24+ **не підтримується** — рідні двійкові файли `better-sqlite3` несумісні)
-- **Мова**: TypeScript 5.9 — **100% TypeScript** для `src/` та `open-sse/` (версія 1.0.6)
-- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
-- **База даних**: LowDB (JSON) + SQLite (стан домену + журнали проксі)
-- **Потокове передавання**: події, надіслані сервером (SSE)
-- **Auth**: OAuth 2.0 (PKCE) + JWT + ключі API
-- **Тестування**: програма для тестування Node.js (368+ модульних тестів)
-- **CI/CD**: дії GitHub (автоматична публікація npm + Docker Hub після випуску)
-- **Веб-сайт**: [omniroute.online](https://omniroute.online)
-- **Пакет**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **Стійкість**: автоматичний вимикач, експоненціальна віддача, захист від громового стада, підробка TLS
-
----
-
-## 📖 Документація
-
-| Документ | Опис |
-| -------------------------------------------- | ----------------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | Постачальники, комбо, інтеграція CLI, розгортання |
-| [API Reference](docs/API_REFERENCE.md) | Усі кінцеві точки з прикладами |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | Загальні проблеми та рішення |
-| [Architecture](docs/ARCHITECTURE.md) | Архітектура системи та внутрішні |
-| [Contributing](CONTRIBUTING.md) | Розробка установки та рекомендацій |
-| [OpenAPI Spec](docs/openapi.yaml) | Специфікація OpenAPI 3.0 |
-| [Security Policy](SECURITY.md) | Повідомлення про вразливості та методи безпеки |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Повний посібник: налаштування VM + nginx + Cloudflare |
-| [Features Gallery](docs/FEATURES.md) | Огляд інформаційної панелі зі знімками екрана |
-
-### 📸 Попередній перегляд інформаційної панелі
+## 🛠️ Tech Stack
-Натисніть, щоб переглянути знімки панелі інструментів
+Click to expand tech stack details
-| Сторінка | Скріншот |
-| ------------------------ | ------------------------------------------------- |
-| **Постачальники** |  |
-| **Комбінації** |  |
-| **Аналітика** |  |
-| **Здоров'я** |  |
-| **Перекладач** |  |
-| **Налаштування** |  |
-| **Інструменти CLI** |  |
-| **Журнали використання** |  |
-| **Кінцева точка** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## Документація
-OmniRoute має **заплановано понад 210 функцій** на кількох етапах розробки. Ось ключові області:
-
-| Категорія | Заплановані особливості | Основні моменти |
-| -------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------- |
-| 🧠 **Маршрутизація та інтелект** | 25+ | Маршрутизація з найменшою затримкою, маршрутизація на основі тегів, попередній перегляд квот, вибір облікового запису P2C |
-| 🔒 **Безпека та відповідність** | 20+ | Захист SSRF, маскування облікових даних, обмеження швидкості для кінцевої точки, визначення обсягу ключа керування |
-| 📊 **Спостережливість** | 15+ | Інтеграція OpenTelemetry, моніторинг квот у реальному часі, відстеження витрат на модель |
-| 🔄 **Інтеграція постачальників** | 20+ | Реєстр динамічної моделі, час відновлення провайдера, Codex із кількома обліковими записами, розбір квоти Copilot |
-| ⚡ **Виконання** | 15+ | Подвійний рівень кешу, кеш запитів, кеш відповідей, потокове підтримання активності, пакетний API |
-| 🌐 **Екосистема** | 10+ | API WebSocket, гаряче перезавантаження конфігурації, розподілене сховище конфігурацій, комерційний режим |
-
-### 🔜 Незабаром
-
-- 🔗 **Інтеграція OpenCode** — власна підтримка постачальника для IDE кодування OpenCode AI
-- 🔗 **Інтеграція TRAE** — повна підтримка інфраструктури розробки TRAE AI
-- 📦 **Batch API** — асинхронна пакетна обробка масових запитів
-- 🎯 **Маршрутизація на основі тегів** — Маршрутизація запитів на основі спеціальних тегів і метаданих
-- 💰 **Стратегія найнижчої вартості** — автоматично вибирайте найдешевшого доступного постачальника
-
-> 📝 Повні специфікації функцій доступні в [link](docs/new-features/) (217 детальних специфікацій)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 Автори
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Як зробити внесок
+### How to Contribute
-1. Розгалужте репозиторій
-2. Створіть свою гілку функцій (`git checkout -b feature/amazing-feature`)
-3. Зафіксуйте свої зміни (`git commit -m 'Add amazing feature'`)
-4. Push до відділення (`git push origin feature/amazing-feature`)
-5. Відкрийте Pull Request
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Див. [CONTRIBUTING.md](CONTRIBUTING.md), щоб отримати докладні вказівки.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Випуск нової версії
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Зоряна історія
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Подяка
+## 🙏 Acknowledgments
-Особлива подяка **[9router](https://github.com/decolua/9router)** від **[decolua](https://github.com/decolua)** — оригінального проекту, який надихнув цей форк. OmniRoute спирається на цю неймовірну основу завдяки додатковим функціям, мультимодальним API і повному перепису TypeScript.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Особлива подяка **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — оригінальній реалізації Go, яка надихнула цей порт JavaScript.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Ліцензія
+## Ліцензія
-Ліцензія Массачусетського технологічного інституту – подробиці див. [LICENSE](LICENSE).
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Створено з ❤️ для розробників, які працюють у режимі 24/7
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/uk-UA/docs/FEATURES.md b/docs/i18n/uk-UA/docs/FEATURES.md
new file mode 100644
index 0000000000..68b009832d
--- /dev/null
+++ b/docs/i18n/uk-UA/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Українська)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/vi/README.md b/docs/i18n/vi/README.md
index ab1daaa815..4611c26358 100644
--- a/docs/i18n/vi/README.md
+++ b/docs/i18n/vi/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — Cổng AI miễn phí
+# 🚀 OmniRoute — The Free AI Gateway (Tiếng Việt)
-### Không bao giờ ngừng viết mã. Định tuyến thông minh tới **Mô hình AI MIỄN PHÍ và chi phí thấp** với tính năng dự phòng tự động.
-
-_Proxy API phổ quát của bạn — một điểm cuối, hơn 36 nhà cung cấp, không có thời gian ngừng hoạt động._
-
-**Hoàn thành cuộc trò chuyện • Nhúng • Tạo hình ảnh • Âm thanh • Sắp xếp lại • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 Nhà cung cấp AI miễn phí cho các tác nhân mã hóa yêu thích của bạn
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_Kết nối mọi công cụ IDE hoặc CLI được hỗ trợ bởi AI thông qua OmniRoute — cổng API miễn phí để mã hóa không giới hạn._
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,113 +162,52 @@ _Kết nối mọi công cụ IDE hoặc CLI được hỗ trợ bởi AI thông
|
-📡 Tất cả đại lý kết nối qua http://localhost:20128/v1 hoặc http://cloud.omniroute.online/v1 — một cấu hình, số mô hình và hạn ngạch không giới hạn
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 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)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 Tại sao lại là OmniRoute?
-
-**Ngưng lãng phí tiền và đạt đến giới hạn:**
-
--
Hạn mức đăng ký hết hạn không được sử dụng hàng tháng
--
Giới hạn tốc độ khiến bạn không thể viết mã giữa chừng
--
API đắt tiền ($20-50/tháng cho mỗi nhà cung cấp)
--
Chuyển đổi thủ công giữa các nhà cung cấp
-
-**OmniRoute giải quyết vấn đề này:**
-
-- ✅ **Tối đa hóa số lượt đăng ký** - Theo dõi hạn ngạch, sử dụng từng bit trước khi đặt lại
-- ✅ **Tự động dự phòng** - Đăng ký → Khóa API → Giá rẻ → Miễn phí, không có thời gian ngừng hoạt động
-- ✅ **Nhiều tài khoản** - Luân chuyển giữa các tài khoản cho mỗi nhà cung cấp
-- ✅ **Universal** - Hoạt động với Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, mọi công cụ CLI
-
----
-
-## 📧 Hỗ trợ
-
-> 💬 **Tham gia cộng đồng của chúng tôi!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Nhận trợ giúp, chia sẻ mẹo và luôn cập nhật.
-
-- **Trang web**: [omniroute.online](https://omniroute.online)
+- **Website**: [omniroute.online](https://omniroute.online)
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
-- **Vấn đề**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
+- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **Dự án gốc**: [9router by decolua](https://github.com/decolua/9router)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 Nó hoạt động như thế nào
+## 🔄 How It Works
```
┌─────────────┐
@@ -227,452 +236,453 @@ Result: Never stop coding, minimal cost
---
-## 🎯 OmniRoute giải quyết được gì — 30 điểm khó thực sự và trường hợp sử dụng
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **Mọi nhà phát triển sử dụng công cụ AI đều phải đối mặt với những vấn đề này hàng ngày.** OmniRoute được xây dựng để giải quyết tất cả — từ chi phí vượt mức cho đến chặn khu vực, từ luồng OAuth bị hỏng đến hoạt động giao thức và khả năng quan sát của doanh nghiệp.
+> **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 protocol operations and enterprise observability.
-💸 1. "Tôi trả tiền cho một thuê bao đắt tiền nhưng vẫn bị gián đoạn bởi các giới hạn"
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-Các nhà phát triển trả 20–200 USD/tháng cho Claude Pro, Codex Pro hoặc GitHub Copilot. Ngay cả khi trả tiền, hạn ngạch vẫn có mức trần - 5 giờ sử dụng, giới hạn hàng tuần hoặc giới hạn tốc độ mỗi phút. Giữa phiên mã hóa, nhà cung cấp ngừng phản hồi và nhà phát triển mất đi dòng chảy và năng suất.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Dự phòng 4 tầng thông minh** — Nếu hết hạn ngạch đăng ký, tự động chuyển hướng đến Khóa API → Giá rẻ → Miễn phí mà không cần can thiệp thủ công
-- **Theo dõi hạn ngạch theo thời gian thực** — Hiển thị mức tiêu thụ mã thông báo trong thời gian thực với tính năng đếm ngược đặt lại (5 giờ, hàng ngày, hàng tuần)
-- **Hỗ trợ nhiều tài khoản** — Nhiều tài khoản cho mỗi nhà cung cấp với tính năng tự động quay vòng — khi hết một tài khoản, hãy chuyển sang tài khoản tiếp theo
-- **Combo tùy chỉnh** — Chuỗi dự phòng có thể tùy chỉnh với 6 chiến lược cân bằng (điền trước, quay vòng, P2C, ngẫu nhiên, ít sử dụng nhất, tối ưu hóa chi phí)
-- **Hạn ngạch kinh doanh Codex** — Giám sát hạn ngạch không gian làm việc của Doanh nghiệp/Nhóm trực tiếp trong bảng điều khiển
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2. "Tôi cần sử dụng nhiều nhà cung cấp nhưng mỗi nhà cung cấp có một API khác nhau"
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI sử dụng một định dạng, Claude (Anthropic) sử dụng một định dạng khác, Gemini lại sử dụng một định dạng khác. Nếu nhà phát triển muốn thử nghiệm các mô hình từ các nhà cung cấp khác nhau hoặc dự phòng giữa các nhà cung cấp đó, họ cần phải định cấu hình lại SDK, thay đổi điểm cuối, xử lý các định dạng không tương thích. Các nhà cung cấp tùy chỉnh (FriendLI, NIM) có các điểm cuối mô hình không chuẩn.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Điểm cuối hợp nhất** — Một `http://localhost:20128/v1` duy nhất đóng vai trò là proxy cho tất cả hơn 36 nhà cung cấp
-- **Dịch định dạng** — Tự động và minh bạch: OpenAI ↔ Claude ↔ Gemini ↔ API phản hồi
-- **Sạch hóa phản hồi** — Loại bỏ các trường không chuẩn (`x_groq`, `usage_breakdown`, `service_tier`) phá vỡ OpenAI SDK v1.83+
-- **Chuẩn hóa vai trò** — Chuyển đổi `developer` → `system` cho các nhà cung cấp không thuộc OpenAI; `system` → `user` cho GLM/ERNIE
-- **Think Tag Extraction** — Trích xuất các khối `` từ các mô hình như DeepSeek R1 thành `reasoning_content` được tiêu chuẩn hóa
-- **Đầu ra có cấu trúc cho Gemini** — `json_schema` → `responseMimeType`/`responseSchema` chuyển đổi tự động
-- **`stream` mặc định là `false`** — Phù hợp với thông số OpenAI, tránh SSE không mong muốn trong SDK Python/Rust/Go
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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. "Nhà cung cấp AI của tôi chặn khu vực/quốc gia của tôi"
+🌐 3. "My AI provider blocks my region/country"
-Các nhà cung cấp như OpenAI/Codex chặn quyền truy cập từ các khu vực địa lý nhất định. Người dùng gặp phải các lỗi như `unsupported_country_region_territory` trong quá trình kết nối OAuth và API. Điều này đặc biệt gây khó chịu cho các nhà phát triển từ các nước đang phát triển.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Cấu hình proxy 3 cấp** — Proxy có thể định cấu hình ở 3 cấp độ: toàn cầu (tất cả lưu lượng truy cập), mỗi nhà cung cấp (chỉ một nhà cung cấp) và mỗi kết nối/khóa
-- **Huy hiệu proxy được mã hóa màu** — Chỉ báo trực quan: 🟢 proxy toàn cầu, 🟡 proxy nhà cung cấp, 🔵 proxy kết nối, luôn hiển thị IP
-- **Trao đổi mã thông báo OAuth thông qua proxy** — Luồng OAuth cũng đi qua proxy, giải quyết `unsupported_country_region_territory`
-- **Kiểm tra kết nối qua Proxy** — Kiểm tra kết nối sử dụng proxy đã định cấu hình (không cần bỏ qua trực tiếp nữa)
-- **Hỗ trợ SOCKS5** — Hỗ trợ proxy SOCKS5 đầy đủ cho định tuyến đi
-- **Giả mạo dấu vân tay TLS** — Dấu vân tay TLS giống trình duyệt thông qua `wreq-js` để vượt qua khả năng phát hiện bot
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4. "Tôi muốn sử dụng AI để viết mã nhưng tôi không có tiền"
+🆓 4. "I want to use AI for coding but I have no money"
-Không phải ai cũng có thể trả 20–200 USD/tháng để đăng ký AI. Sinh viên, nhà phát triển từ các quốc gia mới nổi, những người có sở thích và người làm nghề tự do cần được tiếp cận với các mô hình chất lượng với chi phí bằng 0.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Tích hợp sẵn nhà cung cấp cấp miễn phí** — Hỗ trợ riêng cho các nhà cung cấp miễn phí 100%: iFlow (8 mẫu không giới hạn), Qwen (3 mẫu không giới hạn), Kiro (Claude miễn phí), Gemini CLI (miễn phí 180K/tháng)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **Combo chỉ miễn phí** — Chuỗi `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/tháng mà không có thời gian ngừng hoạt động
-- **Tín dụng miễn phí NVIDIA NIM** — Tích hợp 1000 tín dụng miễn phí
-- **Chiến lược tối ưu hóa chi phí** — Chiến lược định tuyến tự động chọn nhà cung cấp sẵn có rẻ nhất
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5. "Tôi cần bảo vệ cổng AI của mình khỏi bị truy cập trái phép"
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-Khi đưa cổng AI vào mạng (LAN, VPS, Docker), bất kỳ ai có địa chỉ đều có thể sử dụng mã thông báo/hạn ngạch của nhà phát triển. Nếu không có biện pháp bảo vệ, các API dễ bị lạm dụng, chèn ép và lạm dụng.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Quản lý khóa API** — Tạo, xoay vòng và xác định phạm vi cho mỗi nhà cung cấp bằng trang `/dashboard/api-manager` chuyên dụng
-- **Quyền cấp mô hình** — Hạn chế khóa API đối với các mô hình cụ thể (`openai/*`, mẫu ký tự đại diện), với nút chuyển đổi Cho phép tất cả/Hạn chế
-- **Bảo vệ điểm cuối API** — Yêu cầu khóa cho `/v1/models` và chặn các nhà cung cấp cụ thể khỏi danh sách
-- **Auth Guard + CSRF Protection** — Tất cả các tuyến bảng điều khiển được bảo vệ bằng phần mềm trung gian `withAuth` + mã thông báo CSRF
-- **Giới hạn tốc độ** — Giới hạn tốc độ trên mỗi IP với các cửa sổ có thể định cấu hình
-- **Lọc IP** — Danh sách cho phép/danh sách chặn để kiểm soát truy cập
-- **Prompt Tiêm Guard** — Khử trùng các mẫu nhắc nhở độc hại
-- **Mã hóa AES-256-GCM** — Thông tin xác thực được mã hóa ở trạng thái lưu trữ
+- **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. "Nhà cung cấp của tôi ngừng hoạt động và tôi mất luồng mã hóa"
+🛑 6. "My provider went down and I lost my coding flow"
-Các nhà cung cấp AI có thể trở nên không ổn định, trả về lỗi 5xx hoặc đạt giới hạn tốc độ tạm thời. Nếu một nhà phát triển phụ thuộc vào một nhà cung cấp duy nhất thì họ sẽ bị gián đoạn. Nếu không có bộ ngắt mạch, việc thử lại nhiều lần có thể làm hỏng ứng dụng.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Bộ ngắt mạch cho mỗi nhà cung cấp** — Tự động mở/đóng với ngưỡng có thể định cấu hình và thời gian hồi chiêu (Đóng/Mở/Nửa mở)
-- **Thời gian chờ theo cấp số nhân** — Độ trễ thử lại lũy tiến
-- **Bầy chống sấm sét** — Mutex + bảo vệ semaphore chống lại các cơn bão thử lại đồng thời
-- **Chuỗi dự phòng kết hợp** — Nếu nhà cung cấp chính không thành công, nó sẽ tự động rơi qua chuỗi mà không cần can thiệp
-- **Combo Circuit Breaker** — Tự động vô hiệu hóa các nhà cung cấp bị lỗi trong chuỗi kết hợp
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-- **Bảng thông tin sức khỏe** — Giám sát thời gian hoạt động, trạng thái ngắt mạch, khóa, số liệu thống kê bộ nhớ đệm, độ trễ p50/p95/p99
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. "Cấu hình từng công cụ AI thật tẻ nhạt và lặp đi lặp lại"
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-Nhà phát triển sử dụng Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Mỗi công cụ cần một cấu hình khác nhau (điểm cuối API, khóa, mô hình). Việc cấu hình lại khi chuyển đổi nhà cung cấp hoặc mô hình là một sự lãng phí thời gian.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Bảng điều khiển công cụ CLI** — Trang chuyên dụng với thiết lập bằng một cú nhấp chuột cho Claude Code, Codex CLI, OpenClaw, Kilo Code, AntiGravity, Cline
-- **Trình tạo cấu hình GitHub Copilot** — Tạo `chatLanguageModels.json` cho Mã VS với lựa chọn mô hình hàng loạt
-- **Trình hướng dẫn tích hợp** — Thiết lập 4 bước có hướng dẫn cho người dùng lần đầu
-- **Một điểm cuối, tất cả các kiểu máy** — Định cấu hình `http://localhost:20128/v1` một lần, truy cập hơn 36 nhà cung cấp
+- **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 67+ providers
-🔑 8. "Quản lý mã thông báo OAuth từ nhiều nhà cung cấp là địa ngục"
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code, Codex, Gemini CLI, Copilot — tất cả đều sử dụng OAuth 2.0 với các mã thông báo sắp hết hạn. Các nhà phát triển cần liên tục xác thực lại, xử lý `client_secret is missing`, `redirect_uri_mismatch` và các lỗi trên máy chủ từ xa. OAuth trên LAN/VPS đặc biệt có vấn đề.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Tự động làm mới mã thông báo** — Làm mới mã thông báo OAuth ở chế độ nền trước khi hết hạn
-- **Tích hợp OAuth 2.0 (PKCE)** — Luồng tự động cho Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
-- **OAuth nhiều tài khoản** — Nhiều tài khoản cho mỗi nhà cung cấp thông qua trích xuất mã thông báo JWT/ID
-- **OAuth LAN/Remote Fix** — Phát hiện IP riêng cho `redirect_uri` + chế độ URL thủ công cho máy chủ từ xa
-- **OAuth đằng sau Nginx** — Sử dụng `window.location.origin` để tương thích với proxy ngược
-- **Hướng dẫn OAuth từ xa** — Hướng dẫn từng bước về thông tin đăng nhập Google Cloud trên VPS/Docker
+- **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. "Tôi không biết mình đang chi bao nhiêu hay ở đâu"
+📊 9. "I don't know how much I'm spending or where"
-Các nhà phát triển sử dụng nhiều nhà cung cấp trả phí nhưng không có quan điểm thống nhất về chi tiêu. Mỗi nhà cung cấp có trang tổng quan thanh toán riêng nhưng không có chế độ xem tổng hợp. Chi phí bất ngờ có thể chồng chất.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Bảng thông tin phân tích chi phí** — Theo dõi chi phí mỗi mã thông báo và quản lý ngân sách cho mỗi nhà cung cấp
-- **Giới hạn ngân sách cho mỗi cấp** — Mức chi tiêu trần cho mỗi cấp kích hoạt dự phòng tự động
-- **Cấu hình định giá theo mẫu** — Giá có thể định cấu hình cho mỗi mẫu
-- **Thống kê sử dụng trên mỗi khóa API** — Số lượng yêu cầu và dấu thời gian được sử dụng lần cuối trên mỗi khóa
-- **Bảng thông tin phân tích** — Thẻ thống kê, biểu đồ sử dụng mô hình, bảng nhà cung cấp với tỷ lệ thành công và độ trễ
+- **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. "Tôi không thể chẩn đoán lỗi và sự cố trong cuộc gọi AI"
+🐛 10. "I can't diagnose errors and problems in AI calls"
-Khi cuộc gọi không thành công, nhà phát triển không biết liệu đó có phải là giới hạn tốc độ, mã thông báo đã hết hạn, sai định dạng hay lỗi nhà cung cấp hay không. Nhật ký bị phân mảnh trên các thiết bị đầu cuối khác nhau. Nếu không có khả năng quan sát được thì việc gỡ lỗi chỉ là thử và sai.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Bảng điều khiển nhật ký hợp nhất** — 4 tab: Nhật ký yêu cầu, Nhật ký proxy, Nhật ký kiểm tra, Bảng điều khiển
-- **Trình xem nhật ký bảng điều khiển** — Trình xem kiểu thiết bị đầu cuối thời gian thực với các cấp độ được mã hóa màu, tự động cuộn, tìm kiếm, lọc
-- **Nhật ký proxy SQLite** — Nhật ký liên tục vẫn tồn tại khi máy chủ khởi động lại
-- **Sân chơi dịch thuật** — 4 chế độ gỡ lỗi: Sân chơi (dịch định dạng), Trình kiểm tra trò chuyện (khứ hồi), Bàn thử nghiệm (hàng loạt), Giám sát trực tiếp (thời gian thực)
-- **Yêu cầu đo từ xa** — độ trễ p50/p95/p99 + truy tìm X-Request-Id
-- **Ghi nhật ký dựa trên tệp bằng xoay vòng** — Trình chặn chặn bảng điều khiển ghi lại mọi thứ vào nhật ký JSON bằng cách xoay vòng dựa trên kích thước
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11. "Việc triển khai và bảo trì cổng rất phức tạp"
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-Việc cài đặt, định cấu hình và duy trì proxy AI trên các môi trường khác nhau (cục bộ, VPS, Docker, đám mây) tốn nhiều công sức. Các vấn đề như đường dẫn được mã hóa cứng, `EACCES` trên thư mục, xung đột cổng và các bản dựng đa nền tảng sẽ gây thêm rắc rối.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **npm cài đặt toàn cầu** — `npm install -g omniroute && omniroute` — đã xong
-- **Docker Đa nền tảng** — AMD64 + ARM64 gốc (Apple Silicon, AWS Graviton, Raspberry Pi)
-- **Hồ sơ soạn thảo Docker** — `base` (không có công cụ CLI) và `cli` (với Claude Code, Codex, OpenClaw)
-- **Ứng dụng máy tính để bàn điện tử** — Ứng dụng gốc dành cho Windows/macOS/Linux với khay hệ thống, tự động khởi động, chế độ ngoại tuyến
-- **Chế độ chia cổng** — API và Bảng điều khiển trên các cổng riêng biệt cho các tình huống nâng cao (proxy ngược, mạng vùng chứa)
-- **Cloud Sync** — Đồng bộ hóa cấu hình giữa các thiết bị thông qua Cloudflare Workers
-- **Sao lưu DB** — Tự động sao lưu, khôi phục, xuất và nhập tất cả cài đặt
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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. "Giao diện chỉ có tiếng Anh và nhóm của tôi không nói được tiếng Anh"
+🌍 12. "The interface is English-only and my team doesn't speak English"
-Các đội ở các quốc gia không nói tiếng Anh, đặc biệt là ở Châu Mỹ Latinh, Châu Á và Châu Âu, gặp khó khăn với giao diện chỉ có tiếng Anh. Rào cản ngôn ngữ làm giảm khả năng tiếp nhận và tăng lỗi cấu hình.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Bảng điều khiển i18n — 30 ngôn ngữ** — Tất cả hơn 500 phím được dịch bao gồm tiếng Ả Rập, tiếng Bungari, tiếng Đan Mạch, tiếng Đức, tiếng Tây Ban Nha, tiếng Phần Lan, tiếng Pháp, tiếng Do Thái, tiếng Hindi, tiếng Hungary, tiếng Indonesia, tiếng Ý, tiếng Nhật, tiếng Hàn, tiếng Mã Lai, tiếng Hà Lan, tiếng Na Uy, tiếng Ba Lan, tiếng Bồ Đào Nha (PT/BR), tiếng Rumani, tiếng Nga, tiếng Slovak, tiếng Thụy Điển, tiếng Thái, tiếng Ukraina, tiếng Việt, tiếng Trung, tiếng Philipin, tiếng Anh
-- **Hỗ trợ RTL** — Hỗ trợ từ phải sang trái cho tiếng Ả Rập và tiếng Do Thái
-- **README đa ngôn ngữ** — 30 bản dịch tài liệu hoàn chỉnh
-- **Bộ chọn ngôn ngữ** — Biểu tượng quả cầu trong tiêu đề để chuyển đổi theo thời gian thực
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13. "Tôi cần nhiều hơn là trò chuyện - tôi cần nội dung nhúng, hình ảnh, âm thanh"
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-AI không chỉ hoàn thành cuộc trò chuyện. Nhà phát triển cần tạo hình ảnh, phiên âm âm thanh, tạo phần nhúng cho RAG, sắp xếp lại tài liệu và kiểm duyệt nội dung. Mỗi API có điểm cuối và định dạng khác nhau.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Nhúng** — `/v1/embeddings` với 6 nhà cung cấp và hơn 9 mẫu máy
-- **Tạo hình ảnh** — `/v1/images/generations` với 10 nhà cung cấp và hơn 20 mô hình (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, AntiGravity, SD WebUI, ComfyUI)
-- **Chuyển văn bản thành video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) và SD WebUI
-- **Chuyển văn bản thành nhạc** — `/v1/music/generations` — ComfyUI (Mở âm thanh ổn định, MusicGen)
-- **Phiên âm âm thanh** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-- **Chuyển văn bản thành giọng nói** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + các nhà cung cấp hiện có
-- **Kiểm duyệt** — `/v1/moderations` — Kiểm tra an toàn nội dung
-- **Sắp xếp lại** — `/v1/rerank` — Sắp xếp lại mức độ liên quan của tài liệu
-- **API phản hồi** — Hỗ trợ đầy đủ `/v1/responses` cho Codex
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14. "Tôi không có cách nào để kiểm tra và so sánh chất lượng giữa các mẫu"
+🧪 14. "I have no way to test and compare quality across models"
-Các nhà phát triển muốn biết mô hình nào là tốt nhất cho trường hợp sử dụng của họ — mã, dịch thuật, lý luận — nhưng việc so sánh thủ công rất chậm. Không có công cụ đánh giá tích hợp nào tồn tại.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Đánh giá LLM** — Bộ thử nghiệm vàng với 10 trường hợp tải sẵn bao gồm lời chào, toán, địa lý, tạo mã, tuân thủ JSON, dịch thuật, đánh dấu, từ chối an toàn
-- **4 Chiến lược kết hợp** — `exact`, `contains`, `regex`, `custom` (chức năng JS)
-- **Băng thử nghiệm sân chơi dịch giả** — Thử nghiệm hàng loạt với nhiều đầu vào và đầu ra dự kiến, so sánh giữa các nhà cung cấp
-- **Trình kiểm tra trò chuyện** — Toàn bộ chuyến đi với kết xuất phản hồi trực quan
-- **Live Monitor** — Luồng thời gian thực của tất cả các yêu cầu truyền qua proxy
+- **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. "Tôi cần mở rộng quy mô mà không làm giảm hiệu suất"
+📈 15. "I need to scale without losing performance"
-Khi khối lượng yêu cầu tăng lên mà không lưu vào bộ nhớ đệm thì các câu hỏi tương tự sẽ tạo ra chi phí trùng lặp. Nếu không có tính tạm thời, các yêu cầu trùng lặp sẽ bị lãng phí. Giới hạn tỷ lệ cho mỗi nhà cung cấp phải được tôn trọng.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Bộ nhớ đệm ngữ nghĩa** — Bộ nhớ đệm hai tầng (chữ ký + ngữ nghĩa) giúp giảm chi phí và độ trễ
-- **Yêu cầu Idempotency** — Khoảng thời gian loại bỏ trùng lặp 5 giây cho các yêu cầu giống hệt nhau
-- **Phát hiện giới hạn tỷ lệ** — RPM của mỗi nhà cung cấp, khoảng cách tối thiểu và theo dõi đồng thời tối đa
-- **Giới hạn tỷ lệ có thể chỉnh sửa** — Giá trị mặc định có thể định cấu hình trong Cài đặt → Khả năng phục hồi với tính bền bỉ
-- **Bộ đệm xác thực khóa API** — Bộ đệm 3 tầng cho hiệu suất sản xuất
-- **Bảng thông tin sức khỏe với phép đo từ xa** — độ trễ p50/p95/p99, số liệu thống kê bộ nhớ đệm, thời gian hoạt động
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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. "Tôi muốn kiểm soát hành vi của mô hình trên toàn cầu"
+🤖 16. "I want to control model behavior globally"
-Các nhà phát triển muốn tất cả phản hồi bằng một ngôn ngữ cụ thể, với giọng điệu cụ thể hoặc muốn giới hạn các mã thông báo lý luận. Việc định cấu hình điều này trong mọi công cụ/yêu cầu là không thực tế.
+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.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- **Tiêm nhắc nhở hệ thống** — Lời nhắc chung được áp dụng cho tất cả các yêu cầu
-- **Xác thực ngân sách tư duy** — Kiểm soát phân bổ mã thông báo hợp lý cho mỗi yêu cầu (chuyển qua, tự động, tùy chỉnh, thích ứng)
-- **6 Chiến lược định tuyến** — Chiến lược toàn cầu xác định cách phân phối yêu cầu
-- **Bộ định tuyến ký tự đại diện** — Các mẫu `provider/*` tự động định tuyến tới bất kỳ nhà cung cấp nào
-- **Bật/Tắt kết hợp chuyển đổi** — Chuyển đổi kết hợp trực tiếp từ bảng điều khiển
-- **Chuyển đổi nhà cung cấp** — Bật/tắt tất cả kết nối cho nhà cung cấp chỉ bằng một cú nhấp chuột
-- **Nhà cung cấp bị chặn** — Loại trừ các nhà cung cấp cụ thể khỏi danh sách `/v1/models`
+- **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
-🧰 17. "Tôi cần các công cụ MCP làm khả năng của sản phẩm hạng nhất"
+🧰 17. "I need MCP tools as first-class product capabilities"
-Nhiều cổng AI chỉ hiển thị MCP dưới dạng chi tiết triển khai ẩn. Các nhóm cần một lớp hoạt động rõ ràng và dễ quản lý.
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- MCP xuất hiện trong tab điều hướng bảng điều khiển và giao thức điểm cuối
-- Trang quản lý MCP chuyên dụng với quy trình, công cụ, phạm vi và kiểm tra
-- Tích hợp tính năng khởi động nhanh cho `omniroute --mcp` và quá trình cài đặt ứng dụng khách
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18. "Tôi cần phối hợp A2A với đường dẫn tác vụ đồng bộ hóa + truyền phát"
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-Quy trình làm việc của tổng đài viên cần cả phản hồi trực tiếp và thực thi theo luồng trong thời gian dài với khả năng kiểm soát vòng đời.
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Điểm cuối JSON-RPC A2A (`POST /a2a`) với `message/send` và `message/stream`
-- Truyền phát SSE với sự lan truyền trạng thái đầu cuối
-- API vòng đời tác vụ cho `tasks/get` và `tasks/cancel`
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19. "Tôi cần tình trạng quy trình MCP thực sự, trạng thái không đoán được"
+🛰️ 19. "I need real MCP process health, not guessed status"
-Các nhóm vận hành cần biết liệu MCP có thực sự tồn tại hay không, chứ không chỉ là liệu API có thể truy cập được hay không.
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Tệp nhịp tim thời gian chạy với PID, dấu thời gian, vận chuyển, số lượng công cụ và chế độ phạm vi
-- API trạng thái MCP kết hợp nhịp tim + hoạt động gần đây
-- Thẻ trạng thái giao diện người dùng về độ mới của quy trình/thời gian hoạt động/nhịp tim
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20. "Tôi cần thực thi công cụ MCP có thể kiểm tra được"
+📋 20. "I need auditable MCP tool execution"
-Khi các công cụ thay đổi cấu hình hoặc kích hoạt các hành động vận hành, các nhóm cần truy xuất nguồn gốc pháp lý.
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Ghi nhật ký kiểm tra được hỗ trợ bởi SQLite cho các lệnh gọi công cụ MCP
-- Bộ lọc theo công cụ, thành công/thất bại, khóa API và phân trang
-- Bảng kiểm tra bảng điều khiển + điểm cuối thống kê để tự động hóa
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21. "Tôi cần quyền MCP trong phạm vi cho mỗi lần tích hợp"
+🔐 21. "I need scoped MCP permissions per integration"
-Các khách hàng khác nhau phải có quyền truy cập ít đặc quyền nhất vào các danh mục công cụ.
+Different clients should have least-privilege access to tool categories.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- 9 phạm vi MCP chi tiết để truy cập công cụ được kiểm soát
-- Thực thi phạm vi và khả năng hiển thị trong giao diện người dùng quản lý MCP
-- Tư thế mặc định an toàn cho dụng cụ vận hành
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22. "Tôi cần kiểm soát hoạt động mà không cần triển khai lại"
+⚙️ 22. "I need operational controls without redeploying"
-Các nhóm cần thay đổi thời gian chạy nhanh trong các sự cố hoặc sự kiện tốn kém.
+Teams need quick runtime changes during incidents or cost events.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Chuyển đổi kích hoạt kết hợp trực tiếp từ bảng điều khiển MCP
-- Áp dụng hồ sơ khả năng phục hồi từ các gói chính sách được xác định trước
-- Đặt lại trạng thái ngắt mạch từ cùng bảng vận hành
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23. "Tôi cần khả năng hiển thị và hủy trực tiếp trong vòng đời nhiệm vụ A2A"
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-Nếu không có khả năng hiển thị vòng đời, các sự cố trong nhiệm vụ sẽ khó phân loại.
+Without lifecycle visibility, task incidents become hard to triage.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Liệt kê/lọc nhiệm vụ theo trạng thái/kỹ năng với phân trang
-- Xem chi tiết về siêu dữ liệu, sự kiện và hiện vật của nhiệm vụ
-- Điểm cuối hủy tác vụ và hành động UI có xác nhận
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24. "Tôi cần số liệu luồng hoạt động cho tải A2A"
+🌊 24. "I need active stream metrics for A2A load"
-Luồng công việc phát trực tuyến yêu cầu hiểu biết sâu sắc về hoạt động đồng thời và kết nối trực tiếp.
+Streaming workflows require operational insight into concurrency and live connections.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Bộ đếm luồng hoạt động được tích hợp vào trạng thái A2A
-- Dấu thời gian nhiệm vụ cuối cùng và số lượng trên mỗi trạng thái
-- Thẻ bảng điều khiển A2A để theo dõi hoạt động theo thời gian thực
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25. "Tôi cần phát hiện đại lý tiêu chuẩn cho khách hàng"
+🪪 25. "I need standard agent discovery for clients"
-Máy khách và người điều phối bên ngoài cần siêu dữ liệu có thể đọc được bằng máy để triển khai.
+External clients and orchestrators need machine-readable metadata for onboarding.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Thẻ đại lý bị lộ tại `/.well-known/agent.json`
-- Khả năng và kỹ năng thể hiện trong UI quản lý
-- API trạng thái A2A bao gồm siêu dữ liệu khám phá để tự động hóa
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26. "Tôi cần khả năng khám phá giao thức trong UX sản phẩm"
+🧭 26. "I need protocol discoverability in the product UX"
-Nếu người dùng không thể khám phá các bề mặt giao thức, chất lượng chấp nhận và hỗ trợ sẽ giảm.
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Các mục thanh bên cho MCP và A2A
-- Tab Giao thức của trang điểm cuối với trạng thái và khởi động nhanh
-- Liên kết từ tổng quan đến bảng điều khiển quản lý chuyên dụng
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27. "Tôi cần xác thực giao thức end-to-end với khách hàng thực"
+🧪 27. "I need end-to-end protocol validation with real clients"
-Các thử nghiệm mô phỏng không đủ để xác thực tính tương thích của giao thức trước khi phát hành.
+Mock tests are not enough to validate protocol compatibility before release.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Bộ E2E khởi động ứng dụng và sử dụng vận chuyển máy khách MCP SDK thực
-- Máy khách A2A kiểm tra các luồng khám phá, gửi, truyền phát, nhận và hủy
-- Kiểm tra chéo các xác nhận đối với kiểm tra MCP và API nhiệm vụ A2A
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28. "Tôi cần khả năng quan sát thống nhất trên tất cả các giao diện"
+📡 28. "I need unified observability across all interfaces"
-Việc phân chia khả năng quan sát theo giao thức sẽ tạo ra các điểm mù và MTTR dài hơn.
+Splitting observability by protocol creates blind spots and longer MTTR.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Bảng điều khiển/nhật ký/phân tích thống nhất trong một sản phẩm
-- Sức khỏe + kiểm toán + yêu cầu đo từ xa trên các lớp OpenAI, MCP và A2A
-- API hoạt động cho trạng thái và tự động hóa
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29. "Tôi cần một thời gian chạy cho proxy + công cụ + điều phối tác nhân"
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-Việc chạy nhiều dịch vụ riêng biệt làm tăng chi phí vận hành và các chế độ lỗi.
+Running many separate services increases operational cost and failure modes.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Proxy tương thích với OpenAI, máy chủ MCP và máy chủ A2A trong một ngăn xếp
-- Chia sẻ xác thực, khả năng phục hồi, lưu trữ dữ liệu và khả năng quan sát
-- Mô hình chính sách nhất quán trên tất cả các bề mặt tương tác
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30. "Tôi cần gửi quy trình công việc tổng thể mà không cần sử dụng quá nhiều mã keo"
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-Các nhóm bị mất tốc độ khi kết hợp nhiều dịch vụ và tập lệnh đặc biệt.
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**Cách OmniRoute giải quyết vấn đề này:**
+**How OmniRoute solves it:**
-- Chiến lược điểm cuối thống nhất cho khách hàng và đại lý
-- Giao diện người dùng quản lý giao thức tích hợp và đường dẫn xác thực khói
-- Nền tảng sẵn sàng sản xuất (bảo mật, ghi nhật ký, khả năng phục hồi, sao lưu)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### Sách hướng dẫn ví dụ (Trường hợp sử dụng tích hợp)
+### Example Playbooks (Integrated Use Cases)
-**Playbook A: Tối đa hóa đăng ký trả phí + dự phòng giá rẻ**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -684,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**Playbook B: Ngăn xếp mã hóa không tốn phí**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -696,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**Playbook C: chuỗi dự phòng luôn hoạt động 24/7**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -709,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**Playbook D: Tác nhân hoạt động với MCP + A2A**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ Bắt đầu nhanh
+## 🆓 Start Free — Zero Configuration Cost
-**1. Cài đặt trên toàn cầu:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## Bắt đầu nhanh
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 Trang tổng quan mở lúc `http://localhost:20128`
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| Lệnh | Mô tả |
-| ----------------------- | --------------------------------------- |
-| `omniroute` | Máy chủ khởi động (cổng mặc định 20128) |
-| `omniroute --port 3000` | Sử dụng cổng tùy chỉnh |
-| `omniroute --no-open` | Không tự động mở trình duyệt |
-| `omniroute --help` | Hiển thị trợ giúp |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. Kết nối nhà cung cấp MIỄN PHÍ:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-Bảng điều khiển → Nhà cung cấp → Kết nối **Mã Claude** hoặc **AntiGravity** → Đăng nhập OAuth → Xong!
+Optional split-port mode:
-**3. Sử dụng trong công cụ CLI của bạn:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
- Endpoint: http://localhost:20128/v1
- API Key: [copy from dashboard]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**Chỉ vậy thôi!** Bắt đầu viết mã với các mô hình AI MIỄN PHÍ.
+### 2) Connect providers and create your API key
-**Thay thế - chạy từ nguồn:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-OmniRoute có sẵn dưới dạng hình ảnh Docker công khai trên [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**Chạy nhanh:**
+**Quick run:**
```bash
docker run -d \
@@ -778,7 +855,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Với tệp môi trường:**
+**With environment file:**
```bash
# Copy and edit .env first
@@ -793,7 +870,7 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**Sử dụng Docker Compose:**
+**Using Docker Compose:**
```bash
# Base profile (no CLI tools)
@@ -803,257 +880,552 @@ docker compose --profile base up -d
docker compose --profile cli up -d
```
-| Hình ảnh | Gắn thẻ | Kích thước | Mô tả |
-| ------------------------ | -------- | ---------- | ------------------------------ |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | Bản phát hành ổn định mới nhất |
-| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Phiên bản hiện tại |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
-
-## 🖥️
+## 🖥️ Desktop App — Offline & Always-On
> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
+
- 🖥️ **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
+### Bắt đầu nhanh
+
```bash
-npm run electron:dev # Development mode
+# Development mode
+npm run electron:dev
+
+# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 Sơ lược về giá
+## 💰 Pricing at a Glance
-| Bậc | Nhà cung cấp | Chi phí | Đặt lại hạn ngạch | Tốt nhất cho |
-| --------------- | ------------------- | ---------------------------- | --------------------- | ----------------------- |
-| **💳 ĐĂNG KÝ** | Mã Claude (Pro) | $20/tháng | 5h + hàng tuần | Đã đăng ký |
-| | Codex (Plus/Pro) | $20-200/tháng | 5h + hàng tuần | Người dùng OpenAI |
-| | Song Tử CLI | **MIỄN PHÍ** | 180K/tháng + 1K/ngày | Mọi người! |
-| | Phi công phụ GitHub | $10-19/tháng | Hàng tháng | Người dùng GitHub |
-| **🔑 KHÓA API** | NVIDIA NIM | **MIỄN PHÍ** (1000 tín dụng) | Một lần | Kiểm tra bậc miễn phí |
-| | DeepSeek | Trả tiền cho mỗi lần sử dụng | Không có | Giá/chất lượng tốt nhất |
-| | Groq | Cấp miễn phí + trả phí | Tỷ lệ giới hạn | Suy luận cực nhanh |
-| | xAI (Grok) | Trả tiền cho mỗi lần sử dụng | Không có | Mô hình Grok |
-| | Mistral | Cấp miễn phí + trả phí | Tỷ lệ giới hạn | AI Châu Âu |
-| | OpenRouter | Trả tiền cho mỗi lần sử dụng | Không có | Hơn 100 mẫu |
-| **💰 RẺ** | GLM-4.7 | 0,6 USD/1 triệu USD | 10 giờ sáng hàng ngày | Dự phòng ngân sách |
-| | MiniMax M2.1 | 0,2 USD/1 triệu USD | lăn 5 giờ | Lựa chọn rẻ nhất |
-| | Kimi K2 | $9/tháng căn hộ | 10 triệu token/tháng | Chi phí dự đoán |
-| **🆓 MIỄN PHÍ** | iFlow | $0 | Không giới hạn | 8 mẫu miễn phí |
-| | Qwen | $0 | Không giới hạn | 3 mẫu miễn phí |
-| | Kiro | $0 | Không giới hạn | Claude miễn phí |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 Mẹo chuyên nghiệp:** Bắt đầu với Gemini CLI (180K miễn phí/tháng) + combo iFlow (miễn phí không giới hạn) = chi phí $0!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 Tính năng chính
+---
-### 🧠 Định tuyến lõi & thông minh
+## 🆓 Free Models — What You Actually Get
-| Tính năng | Nó làm gì |
-| --------------------------------------------- | ----------------------------------------------------------------------------------------- |
-| 🎯 **Dự phòng 4 tầng thông minh** | Tự động định tuyến: Đăng ký → Khóa API → Giá rẻ → Miễn phí |
-| 📊 **Theo dõi hạn ngạch theo thời gian thực** | Số lượng mã thông báo trực tiếp + đếm ngược đặt lại cho mỗi nhà cung cấp |
-| 🔄 **Dịch định dạng** | OpenAI ↔ Claude ↔ Gemini ↔ Con trỏ ↔ Kiro liền mạch + vệ sinh phản hồi |
-| 👥 **Hỗ trợ nhiều tài khoản** | Nhiều tài khoản cho mỗi nhà cung cấp với lựa chọn thông minh |
-| 🔄 **Tự động làm mới mã thông báo** | Mã thông báo OAuth tự động làm mới bằng thử lại |
-| 🎨 **Combo tùy chỉnh** | 6 chiến lược: điền trước, quay vòng, p2c, ngẫu nhiên, ít sử dụng nhất, tối ưu hóa chi phí |
-| 🧩 **Mẫu tùy chỉnh** | Thêm bất kỳ ID mẫu nào vào bất kỳ nhà cung cấp nào |
-| 🌐 **Bộ định tuyến ký tự đại diện** | Định tuyến động các mẫu `provider/*` tới bất kỳ nhà cung cấp nào |
-| 🧠 **Ngân sách suy nghĩ** | Các chế độ truyền qua, tự động, tùy chỉnh và thích ứng cho các mô hình lý luận |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **Tiêm nhắc nhở hệ thống** | Lời nhắc hệ thống toàn cầu được áp dụng cho tất cả các yêu cầu |
-| 📄 **API phản hồi** | Hỗ trợ đầy đủ API phản hồi OpenAI (`/v1/responses`) cho Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 API đa phương thức
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| Tính năng | Nó làm gì |
-| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **Tạo hình ảnh** | `/v1/images/generations` — 4 nhà cung cấp, hơn 9 mô hình |
-| 📐 **Nhúng** | `/v1/embeddings` — 6 nhà cung cấp, hơn 9 mô hình |
-| 🎤 **Phiên âm âm thanh** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **Chuyển văn bản thành giọng nói** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **Kiểm duyệt** | `/v1/moderations` — Kiểm tra an toàn nội dung |
-| 🔀 **Sắp xếp lại** | `/v1/rerank` — Sắp xếp lại mức độ liên quan của tài liệu |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ Khả năng phục hồi và bảo mật
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| Tính năng | Nó làm gì |
-| -------------------------------------- | -------------------------------------------------------------------------------------- |
-| 🔌 **Ngắt mạch** | Tự động mở/đóng theo từng nhà cung cấp với các ngưỡng có thể định cấu hình |
-| 🛡️ **Bầy chống sấm sét** | Mutex + giới hạn tốc độ semaphore cho nhà cung cấp khóa API |
-| 🧠 **Bộ đệm ngữ nghĩa** | Bộ đệm hai lớp (chữ ký + ngữ nghĩa) giảm chi phí và độ trễ |
-| ⚡ **Yêu cầu quyền bình đẳng** | Khoảng thời gian loại trừ 5 giây đối với các yêu cầu trùng lặp |
-| 🔒 **Giả mạo vân tay TLS** | Bỏ qua việc phát hiện bot dựa trên TLS thông qua wreq-js |
-| 🌐 **Lọc IP** | Danh sách cho phép/danh sách chặn để kiểm soát truy cập API |
-| 📊 **Giới hạn tỷ lệ có thể chỉnh sửa** | RPM có thể định cấu hình, khoảng cách tối thiểu và đồng thời tối đa ở cấp hệ thống |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
-| 🛡 **Bảo vệ điểm cuối API** | Kiểm soát xác thực + chặn nhà cung cấp cho điểm cuối `/models` |
-| 🔒 **Khả năng hiển thị proxy** | Huy hiệu được mã hóa màu: 🟢 toàn cầu, 🟡 nhà cung cấp, 🔵 mỗi kết nối với màn hình IP |
-| 🌐 **Cấu hình proxy 3 cấp** | Định cấu hình proxy ở cấp độ toàn cầu, theo nhà cung cấp hoặc theo từng kết nối |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 Khả năng quan sát & phân tích
+### 🟡 QWEN MODELS (Device Code Auth)
-| Tính năng | Nó làm gì |
-| ---------------------------------------- | --------------------------------------------------------------------------------------------- |
-| 📝 **Yêu cầu ghi nhật ký** | Chế độ gỡ lỗi với nhật ký yêu cầu/phản hồi đầy đủ |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **Nhật ký proxy SQLite** | Nhật ký proxy liên tục vẫn tồn tại khi khởi động lại máy chủ |
-| 📊 **Bảng thông tin phân tích** | Recharts-Powered: thẻ thống kê, biểu đồ sử dụng mô hình, bảng nhà cung cấp |
-| 📈 **Theo dõi tiến độ** | Chọn tham gia các sự kiện tiến trình SSE để phát trực tuyến |
-| 🧪 **Đánh giá LLM** | Thử nghiệm set vàng với 4 chiến thuật trận đấu |
-| 🔍 **Yêu cầu đo từ xa** | tổng hợp độ trễ p50/p95/p99 + theo dõi X-Request-Id |
-| 📋 **Bảng điều khiển nhật ký** | Trang 4 tab hợp nhất: Nhật ký yêu cầu, Nhật ký proxy, Nhật ký kiểm tra, Bảng điều khiển |
-| 🖥️ **Trình xem nhật ký bảng điều khiển** | Trình xem kiểu thiết bị đầu cuối thời gian thực với bộ lọc cấp độ, tìm kiếm, tự động cuộn |
-| 📑 **Ghi nhật ký dựa trên tệp** | Trình chặn chặn của bảng điều khiển ghi lại tất cả đầu ra vào tệp nhật ký JSON bằng cách xoay |
-| 🏥 **Bảng thông tin sức khỏe** | Thời gian hoạt động của hệ thống, trạng thái ngắt mạch, khóa, số liệu thống kê bộ đệm |
-| 💰 **Theo dõi chi phí** | Quản lý ngân sách + cấu hình giá theo từng mô hình |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ Triển khai & đồng bộ
+### 🟣 GEMINI CLI (Google OAuth)
-| Tính năng | Nó làm gì |
-| ---------------------------------- | --------------------------------------------------------------------------------------- |
-| 💾 **Đồng bộ đám mây** | Đồng bộ hóa cấu hình trên các thiết bị thông qua Cloudflare Workers |
-| 🌐 **Triển khai mọi nơi** | Localhost, VPS, Docker, Công nhân Cloudflare |
-| 🔑 **Quản lý khóa API** | Tạo, xoay vòng và phạm vi khóa API cho mỗi nhà cung cấp |
-| 🧙 **Trình hướng dẫn giới thiệu** | Thiết lập có hướng dẫn 4 bước cho người dùng lần đầu |
-| 🔧 **Bảng điều khiển công cụ CLI** | Định cấu hình bằng một cú nhấp chuột Claude, Codex, Cline, OpenClaw, Kilo, AntiGravity |
-| 🔄 **Sao lưu DB** | Tự động sao lưu, khôi phục, xuất và nhập cho tất cả cài đặt |
-| 🌐 **Quốc tế hóa** | I18n đầy đủ với hỗ trợ next-intl — Tiếng Anh + Tiếng Bồ Đào Nha (Brazil) |
-| 🌍 **Bộ chọn ngôn ngữ** | Biểu tượng quả địa cầu trong tiêu đề để chuyển đổi ngôn ngữ theo thời gian thực (🇺🇸/🇧🇷) |
-| 🧹 **Clear All Models** | One-click model list clearing in provider details |
-| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
-| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
-| 📂 **Thư mục dữ liệu tùy chỉnh** | `DATA_DIR` env var để ghi đè đường dẫn lưu trữ `~/.omniroute` mặc định |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 Chi tiết tính năng
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 Dự phòng 4 tầng thông minh
+Start MCP transport in stdio mode:
-Tạo combo với dự phòng tự động:
-
-```
-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
+```bash
+omniroute --mcp
```
-### 📊 Theo dõi hạn ngạch theo thời gian thực
+Recommended validation flow:
-- Tiêu thụ mã thông báo trên mỗi nhà cung cấp
-- Đặt lại đếm ngược (5 giờ, hàng ngày, hàng tuần)
-- Ước tính chi phí cho các bậc trả phí
-- Báo cáo chi tiêu hàng tháng
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 Dịch định dạng
+Useful APIs for automation:
-Dịch liền mạch giữa các định dạng:
-
-- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **Phản hồi của OpenAI**
-- Công cụ CLI của bạn gửi định dạng OpenAI → OmniRoute dịch → Nhà cung cấp nhận định dạng gốc
-- Hoạt động với mọi công cụ hỗ trợ điểm cuối OpenAI tùy chỉnh
-- **Sạch hóa phản hồi** — Loại bỏ các trường không chuẩn để tương thích nghiêm ngặt với OpenAI SDK
-- **Chuẩn hóa vai trò** — `developer` → `system` đối với non-OpenAI; `system` → `user` dành cho kiểu máy GLM/ERNIE
-- **Trích xuất thẻ suy nghĩ** — `` khối → `reasoning_content` cho các mô hình tư duy
-- **Đầu ra có cấu trúc** — `json_schema` → `responseMimeType`/`responseSchema` của Gemini
-
-### 👥 Hỗ trợ nhiều tài khoản
-
-- Thêm nhiều tài khoản cho mỗi nhà cung cấp
-- Tự động định tuyến vòng tròn hoặc dựa trên mức độ ưu tiên
-- Dự phòng tài khoản tiếp theo khi đạt hạn ngạch
-
-### 🔄 Tự động làm mới mã thông báo
-
-- Mã thông báo OAuth tự động làm mới trước khi hết hạn
-- Không cần xác thực lại thủ công
-- Trải nghiệm liền mạch trên tất cả các nhà cung cấp
-
-### 🎨 Combo tùy chỉnh
-
-- Tạo kết hợp mô hình không giới hạn
-- 6 chiến lược: điền trước, quay vòng, sức mạnh của hai lựa chọn, ngẫu nhiên, ít sử dụng nhất, tối ưu hóa chi phí
-- Chia sẻ combo trên các thiết bị với Cloud Sync
-
-### 🏥 Bảng thông tin sức khỏe
-
-- Trạng thái hệ thống (thời gian hoạt động, phiên bản, mức sử dụng bộ nhớ)
-- Trạng thái ngắt mạch của mỗi nhà cung cấp (Đóng/Mở/Nửa mở)
-- Trạng thái giới hạn tỷ lệ và khóa hoạt động
-- Thống kê bộ đệm chữ ký
-- Đo từ xa độ trễ (p50/p95/p99) + bộ đệm nhắc nhở
-- Đặt lại tình trạng sức khỏe chỉ bằng một cú nhấp chuột
-
-### 🔧 Sân chơi dịch thuật
-
-OmniRoute bao gồm Sân chơi dịch thuật tích hợp mạnh mẽ với **4 chế độ** để gỡ lỗi, kiểm tra và giám sát các bản dịch API:
-
-| Chế độ | Mô tả |
-| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **💻Sân chơi** | Dịch định dạng trực tiếp - dán bất kỳ nội dung yêu cầu API nào và xem ngay cách OmniRoute dịch nó giữa các định dạng nhà cung cấp (OpenAI ↔ Claude ↔ Gemini ↔ API phản hồi). Bao gồm các mẫu ví dụ và tự động phát hiện định dạng. |
-| **💬 Trình kiểm tra trò chuyện** | Gửi các yêu cầu trò chuyện thực tế thông qua OmniRoute và xem toàn bộ hành trình: thông tin đầu vào của bạn, yêu cầu được dịch, phản hồi của nhà cung cấp và phản hồi được dịch lại. Vô giá để xác nhận định tuyến kết hợp. |
-| **🧪 Ghế thử nghiệm** | Chế độ thử nghiệm hàng loạt - xác định nhiều trường hợp thử nghiệm với đầu vào và đầu ra dự kiến khác nhau, chạy tất cả chúng cùng một lúc và so sánh kết quả giữa các nhà cung cấp và mô hình. |
-| **📱 Giám sát trực tiếp** | Giám sát yêu cầu theo thời gian thực — xem các yêu cầu đến khi chúng truyền qua OmniRoute, xem các bản dịch định dạng đang diễn ra trực tiếp và xác định các vấn đề ngay lập tức. |
-
-**Truy cập:** Bảng điều khiển → Trình dịch (thanh bên)
-
-### 💾 Đồng bộ đám mây
-
-- Đồng bộ hóa nhà cung cấp, combo và cài đặt trên các thiết bị
-- Đồng bộ nền tự động
-- Lưu trữ được mã hóa an toàn
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 Đánh giá (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute bao gồm khung đánh giá tích hợp để kiểm tra chất lượng phản hồi LLM dựa trên bộ vàng. Truy cập thông qua **Analytics → Đánh giá** trong bảng điều khiển.
+Discover the agent:
-### Bộ vàng tích hợp
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-"Bộ vàng OmniRoute" được tải sẵn chứa 10 trường hợp thử nghiệm bao gồm:
+Send a task:
-- Lời chào, toán, địa lý, tạo mã
-- Tuân thủ định dạng JSON, dịch thuật, đánh dấu
-- Từ chối an toàn (nội dung có hại), đếm, logic boolean
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### Chiến lược đánh giá
+Manage lifecycle:
-| Chiến lược | Mô tả | Ví dụ |
-| ---------- | --------------------------------------------------------------- | -------------------------------- |
-| `exact` | Đầu ra phải khớp chính xác | `"4"` |
-| `contains` | Đầu ra phải chứa chuỗi con (không phân biệt chữ hoa chữ thường) | `"Paris"` |
-| `regex` | Đầu ra phải khớp với mẫu biểu thức chính quy | `"1.*2.*3"` |
-| `custom` | Hàm JS tùy chỉnh trả về true/false | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 Hướng dẫn thiết lập
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 Nhà cung cấp đăng ký
+🧪 End-to-end protocol validation
-### Mã Claude (Pro/Max)
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
+
+### Claude Code (Pro/Max)
```bash
Dashboard → Providers → Connect Claude Code
@@ -1066,7 +1438,7 @@ Models:
cc/claude-haiku-4-5-20251001
```
-**Mẹo chuyên nghiệp:** Sử dụng Opus cho các tác vụ phức tạp, Sonnet cho tốc độ. OmniRoute theo dõi hạn ngạch cho mỗi mô hình!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
@@ -1080,7 +1452,24 @@ Models:
cx/gpt-5.1-codex-max
```
-### Gemini CLI (MIỄN PHÍ 180K/tháng!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
Dashboard → Providers → Connect Gemini CLI
@@ -1092,9 +1481,9 @@ Models:
gc/gemini-2.5-pro
```
-**Giá trị tốt nhất:** Cấp miễn phí rất lớn! Sử dụng điều này trước các bậc trả phí.
+**Best Value:** Huge free tier! Use this before paid tiers.
-### Phi công phụ GitHub
+### GitHub Copilot
```bash
Dashboard → Providers → Connect GitHub
@@ -1110,88 +1499,88 @@ Models:
-🔑 Nhà cung cấp khóa API
+🔑 API Key Providers
-### NVIDIA NIM (1000 tín dụng MIỄN PHÍ!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. Đăng ký: [build.nvidia.com](https://build.nvidia.com)
-2. Nhận khóa API miễn phí (bao gồm 1000 tín dụng suy luận)
-3. Bảng điều khiển → Thêm nhà cung cấp → NVIDIA NIM:
- - Khóa API: `nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**Mẫu máy:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` và hơn 50 mẫu khác
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**Mẹo chuyên nghiệp:** API tương thích với OpenAI — hoạt động trơn tru với tính năng dịch định dạng của OmniRoute!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
-### Tìm kiếm sâu
+### DeepSeek
-1. Đăng ký: [platform.deepseek.com](https://platform.deepseek.com)
-2. Nhận khóa API
-3. Trang tổng quan → Thêm nhà cung cấp → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**Mẫu xe:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq (Có sẵn bậc miễn phí!)
+### Groq (Free Tier Available!)
-1. Đăng ký: [console.groq.com](https://console.groq.com)
-2. Nhận khóa API (bao gồm bậc miễn phí)
-3. Bảng điều khiển → Thêm nhà cung cấp → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**Mẫu xe:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**Mẹo chuyên nghiệp:** Suy luận cực nhanh — tốt nhất cho mã hóa thời gian thực!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter (Hơn 100 mẫu)
+### OpenRouter (100+ Models)
1. Sign up: [openrouter.ai](https://openrouter.ai)
-2. Nhận khóa API
-3. Bảng điều khiển → Thêm nhà cung cấp → OpenRouter
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**Mô hình:** Truy cập hơn 100 mô hình từ tất cả các nhà cung cấp chính thông qua một khóa API duy nhất.
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 Nhà cung cấp giá rẻ (Dự phòng)
+💰 Cheap Providers (Backup)
-### GLM-4.7 (Đặt lại hàng ngày, 0,6 USD/1 triệu)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. Đăng ký: [Zhipu AI](https://open.bigmodel.cn/)
-2. Nhận khóa API từ Gói mã hóa
-3. Bảng điều khiển → Thêm khóa API:
- - Nhà cung cấp: `glm`
- - Khóa API: `your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**Sử dụng:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**Mẹo chuyên nghiệp:** Gói mã hóa cung cấp hạn ngạch 3× với chi phí 1/7! Đặt lại vào 10:00 sáng hàng ngày.
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1 (đặt lại 5 giờ, 0,20 USD/1M)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. Đăng ký: [MiniMax](https://www.minimax.io/)
-2. Nhận khóa API
-3. Bảng điều khiển → Thêm khóa API
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**Sử dụng:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**Mẹo chuyên nghiệp:** Tùy chọn rẻ nhất cho ngữ cảnh dài (1 triệu mã thông báo)!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2 ($9/tháng cố định)
+### Kimi K2 ($9/month flat)
-1. Đăng ký: [Moonshot AI](https://platform.moonshot.ai/)
-2. Nhận khóa API
-3. Bảng điều khiển → Thêm khóa API
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**Sử dụng:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**Mẹo chuyên nghiệp:** Đã sửa lỗi 9 USD/tháng cho 10 triệu mã thông báo = 0,90 USD/1 triệu chi phí hiệu quả!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 Nhà cung cấp MIỄN PHÍ (Dự phòng khẩn cấp)
+🆓 FREE Providers (Emergency Backup)
-### iFlow (8 mẫu MIỄN PHÍ)
+### iFlow (5 FREE models via OAuth)
```bash
Dashboard → Connect iFlow
@@ -1206,7 +1595,7 @@ Models:
if/deepseek-r1
```
-### Qwen (3 mẫu MIỄN PHÍ)
+### Qwen (4 FREE models via Device Code)
```bash
Dashboard → Connect Qwen
@@ -1218,7 +1607,7 @@ Models:
qw/qwen3-coder-flash
```
-### Kiro (Claude MIỄN PHÍ)
+### Kiro (Claude FREE)
```bash
Dashboard → Connect Kiro
@@ -1233,9 +1622,9 @@ Models:
-🎨 Tạo Combo
+🎨 Create Combos
-### Ví dụ 1: Tối đa hóa đăng ký → Sao lưu giá rẻ
+### Example 1: Maximize Subscription → Cheap Backup
```
Dashboard → Combos → Create New
@@ -1264,9 +1653,9 @@ Cost: $0 forever!
-🔧 Tích hợp CLI
+🔧 CLI Integration
-### IDE con trỏ
+### Cursor IDE
```
Settings → Models → Advanced:
@@ -1275,9 +1664,9 @@ Settings → Models → Advanced:
Model: cc/claude-opus-4-6
```
-### Mã Claude
+### Claude Code
-Sử dụng trang **Công cụ CLI** trong trang tổng quan để định cấu hình bằng một cú nhấp chuột hoặc chỉnh sửa `~/.claude/settings.json` theo cách thủ công.
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1290,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**Tùy chọn 1 — Trang tổng quan (được khuyến nghị):**
+**Option 1 — Dashboard (recommended):**
```
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**Tùy chọn 2 — Thủ công:** Chỉnh sửa `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1312,9 +1701,9 @@ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
}
```
-> **Lưu ý:** OpenClaw chỉ hoạt động với OmniRoute cục bộ. Sử dụng `127.0.0.1` thay vì `localhost` để tránh các vấn đề về độ phân giải IPv6.
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
-### Cline / Tiếp tục / RooCode
+### Cline / Continue / RooCode
```
Settings → API Configuration:
@@ -1324,110 +1713,245 @@ Settings → API Configuration:
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 Khắc phục sự cố
+## Xử lý sự cố
-Nhấp để mở rộng hướng dẫn khắc phục sự cố
+Click to expand troubleshooting guide
-**"Mô hình ngôn ngữ không cung cấp tin nhắn"**
+**"Language model did not provide messages"**
-- Đã hết hạn ngạch nhà cung cấp → Kiểm tra trình theo dõi hạn ngạch bảng điều khiển
-- Giải pháp: Sử dụng combo dự phòng hoặc chuyển sang tầng rẻ hơn
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**Giới hạn tỷ lệ**
+**Rate limiting**
-- Hết hạn ngạch đăng ký → Dự phòng sang GLM/MiniMax
-- Thêm tổ hợp: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**Mã thông báo OAuth đã hết hạn**
+**OAuth token expired**
-- Tự động làm mới bởi OmniRoute
-- Nếu sự cố vẫn tiếp diễn: Bảng điều khiển → Nhà cung cấp → Kết nối lại
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**Chi phí cao**
+**High costs**
-- Kiểm tra số liệu thống kê sử dụng trong Bảng điều khiển → Chi phí
-- Chuyển mô hình chính sang GLM/MiniMax
-- Sử dụng bậc miễn phí (Gemini CLI, iFlow) cho các tác vụ không quan trọng
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**Bảng điều khiển mở sai cổng**
+**Dashboard/API ports are wrong**
-- Đặt `PORT=20128` và `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Lỗi đồng bộ hóa đám mây**
+**Cloud sync errors**
-- Xác minh `BASE_URL` trỏ tới phiên bản đang chạy của bạn
-- Xác minh `CLOUD_URL` điểm tới điểm cuối đám mây dự kiến của bạn
-- Giữ các giá trị `NEXT_PUBLIC_*` được căn chỉnh với các giá trị phía máy chủ
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**Đăng nhập lần đầu không hoạt động**
+**First login not working**
-- Kiểm tra `INITIAL_PASSWORD` trong `.env`
-- Nếu không được đặt, mật khẩu dự phòng là `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**Không có nhật ký yêu cầu**
+**No request logs**
-- Đặt `ENABLE_REQUEST_LOGS=true` trong `.env`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**Kiểm tra kết nối cho thấy "Không hợp lệ" đối với các nhà cung cấp tương thích với OpenAI**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- Nhiều nhà cung cấp không hiển thị điểm cuối `/models`
-- OmniRoute v1.0.6+ bao gồm xác thực dự phòng thông qua hoàn thành trò chuyện
-- Đảm bảo URL cơ sở bao gồm hậu tố `/v1`
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
-### 🔐 OAuth
+### 🔐 OAuth on a Remote Server
+
-> **⚠️ QUAN TRỌNG đối với người sử dụng OmniRoute trên VPS/Docker/servidor remoto**
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
-### OAuth
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
-Os đã được chứng minh **AntiGravity** e **Gemini CLI** sử dụng **Google OAuth 2.0** để xác thực. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** một trong các URI trước khi lập danh sách trên Google Cloud Console để ứng dụng.
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
-Vì các thông tin xác thực OAuth không có OmniRoute estão cadastradas **apenas para `localhost`**. Bạn có thể truy cập OmniRoute bằng cách điều khiển lại máy chủ (ví dụ: `https://omniroute.meuservidor.com`), hoặc Google sẽ cung cấp thông tin xác thực với:
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
```
Error 400: redirect_uri_mismatch
```
-### Giải pháp: Định cấu hình thông tin đăng nhập OAuth
+#### Solution: Configure your own OAuth credentials
-Bạn nên chú ý **OAuth 2.0 Client ID** không có Google Cloud Console vì URI làm dịch vụ của bạn.
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
-#### Vượt qua một lần nữa
+#### Step-by-step
-**1. Truy cập vào Google Cloud Console**
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
+
+#### Passo a passo
+
+**1. Acesse o Google Cloud Console**
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
-**2. Hãy yêu cầu ID khách hàng OAuth 2.0 mới**
+**2. Crie um novo OAuth 2.0 Client ID**
-- Nhấn vào **"+ Tạo thông tin xác thực"** → **"ID khách hàng OAuth"**
-- Mẹo ứng dụng: **"Ứng dụng web"**
-- Tên: escolha qualquer nome (ví dụ: `OmniRoute Remote`)
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
-**3. Adicione dưới dạng URI chuyển hướng được ủy quyền**
+**3. Adicione as Authorized Redirect URIs**
-Không có quảng cáo **"URI chuyển hướng được ủy quyền"**, khuyến cáo:
+No campo **"Authorized redirect URIs"**, adicione:
```
https://seu-servidor.com/callback
```
-> Thay thế `seu-servidor.com` từ địa chỉ IP hoặc dịch vụ IP của bạn (bao gồm một cổng cần thiết, ví dụ: `http://45.33.32.156:20128/callback`).
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
-**4. Lưu và sao chép dưới dạng uy tín**
+**4. Salve e copie as credenciais**
-Sau đó, Google đã đăng trên **ID khách hàng** và **Bí mật khách hàng**.
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
-**5. Định cấu hình theo các biến thể của môi trường**
+**5. Configure as variáveis de ambiente**
-Không có `.env` (hoặc có nhiều biến thể môi trường xung quanh Docker):
+No seu `.env` (ou nas variáveis de ambiente do Docker):
```bash
# Para Antigravity:
@@ -1440,7 +1964,7 @@ GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
```
-**6. Reinicie hoặc OmniRoute**
+**6. Reinicie o OmniRoute**
```bash
# Se usando npm:
@@ -1450,152 +1974,147 @@ npm run dev
docker restart omniroute
```
-**7. Lều kết nối mới lạ**
+**7. Tente conectar novamente**
-Bảng điều khiển → Nhà cung cấp → Anti Gravity (hoặc Gemini CLI) → OAuth
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
-Google đã chuyển hướng điều chỉnh cho `https://seu-servidor.com/callback` và một chức năng xác thực.
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
---
-### Thời gian giải quyết (sem configurar credenciais próprias)
+#### Workaround temporário (sem configurar credenciais próprias)
-Nếu không có câu hỏi nào về thông tin xác thực trước đây, bạn có thể sử dụng thông tin **hướng dẫn sử dụng URL**:
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
-1. O OmniRoute tìm kiếm URL tự động của Google
-2. Sau khi bạn tự động đăng ký, hoặc chuyển hướng Google sang `localhost` (bạn không thể điều chỉnh lại dịch vụ)
-3. **Sao chép một URL hoàn chỉnh** da cuối cùng của trình duyệt của bạn (mesmo que a página not carregue)
-4. URL này không có khả năng xuất hiện không có phương thức kết nối nào với OmniRoute
-5. Kết nối với nhau **"Kết nối"**
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
+4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
+5. Clique em **"Connect"**
-> Chức năng giải pháp này có thể giúp tự động cấp quyền cho URL và có thể chuyển hướng độc lập đến mục tiêu hoặc không.
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **Thời gian chạy**: Node.js 18–22 LTS (⚠️ Node.js 24+ **không được hỗ trợ** — `better-sqlite3` các tệp nhị phân gốc không tương thích)
-- **Ngôn ngữ**: TypeScript 5.9 — **100% TypeScript** trên `src/` và `open-sse/` (v1.0.6)
-- **Khung**: Next.js 16 + React 19 + Tailwind CSS 4
-- **Cơ sở dữ liệu**: LowDB (JSON) + SQLite (trạng thái miền + nhật ký proxy)
-- **Truyền phát**: Sự kiện do máy chủ gửi (SSE)
-- **Xác thực**: OAuth 2.0 (PKCE) + JWT + Khóa API
-- **Thử nghiệm**: Trình chạy thử nghiệm Node.js (hơn 368 bài kiểm tra đơn vị)
-- **CI/CD**: GitHub Actions (tự động xuất bản npm + Docker Hub khi phát hành)
-- **Trang web**: [omniroute.online](https://omniroute.online)
-- **Gói**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-- **Khả năng phục hồi**: Ngắt mạch, lùi theo cấp số nhân, chống sét bầy đàn, giả mạo TLS
-
----
-
-## 📖 Tài liệu
-
-| Tài liệu | Mô tả |
-| -------------------------------------------- | --------------------------------------------------------- |
-| [User Guide](docs/USER_GUIDE.md) | Nhà cung cấp, combo, tích hợp CLI, triển khai |
-| [API Reference](docs/API_REFERENCE.md) | Tất cả các điểm cuối có ví dụ |
-| [Troubleshooting](docs/TROUBLESHOOTING.md) | Các vấn đề thường gặp và giải pháp |
-| [Architecture](docs/ARCHITECTURE.md) | Kiến trúc hệ thống và nội bộ |
-| [Contributing](CONTRIBUTING.md) | Thiết lập và hướng dẫn phát triển |
-| [OpenAPI Spec](docs/openapi.yaml) | Đặc tả OpenAPI 3.0 |
-| [Security Policy](SECURITY.md) | Báo cáo lỗ hổng bảo mật và thực hành bảo mật |
-| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Hướng dẫn đầy đủ: Thiết lập VM + nginx + Cloudflare |
-| [Features Gallery](docs/FEATURES.md) | Tham quan bảng điều khiển trực quan với ảnh chụp màn hình |
-
-### 📸 Xem trước bảng điều khiển
+## 🛠️ Tech Stack
-Nhấp để xem ảnh chụp màn hình trang tổng quan
+Click to expand tech stack details
-| Trang | Ảnh chụp màn hình |
-| ------------------- | ------------------------------------------------- |
-| **Nhà cung cấp** |  |
-| **Combo** |  |
-| **Phân tích** |  |
-| **Sức khỏe** |  |
-| **Người dịch** |  |
-| **Cài đặt** |  |
-| **Công cụ CLI** |  |
-| **Nhật ký sử dụng** |  |
-| **Điểm cuối** |  |
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
---
-## 🗺️
+## Tài liệu
-OmniRoute có **210+ tính năng được lên kế hoạch** qua nhiều giai đoạn phát triển. Dưới đây là các lĩnh vực chính:
-
-| Danh mục | Tính năng dự kiến | Điểm nổi bật |
-| ------------------------------ | -------------------- | -------------------------------------------------------------------------------------------------------------- |
-| 🧠 **Định tuyến & thông minh** | 25+ | Định tuyến có độ trễ thấp nhất, định tuyến dựa trên thẻ, ưu tiên hạn ngạch, chọn tài khoản P2C |
-| 🔒 **Bảo mật & Tuân thủ** | 20+ | Tăng cường SSRF, che giấu thông tin xác thực, giới hạn tốc độ cho mỗi điểm cuối, phạm vi khóa quản lý |
-| 📊 **Khả năng quan sát** | 15+ | Tích hợp OpenTelemetry, giám sát hạn ngạch thời gian thực, theo dõi chi phí trên mỗi mô hình |
-| 🔄 **Tích hợp nhà cung cấp** | 20+ | Đăng ký mô hình động, thời gian hồi chiêu của nhà cung cấp, Codex nhiều tài khoản, phân tích hạn ngạch Copilot |
-| ⚡ **Hiệu suất** | 15+ | Lớp bộ đệm kép, bộ đệm nhắc nhở, bộ đệm phản hồi, lưu giữ luồng, API hàng loạt |
-| 🌐 **Hệ sinh thái** | 10+ | API WebSocket, cấu hình tải lại nóng, kho cấu hình phân tán, chế độ thương mại |
-
-### 🔜 Sắp ra mắt
-
-- 🔗 **Tích hợp OpenCode** — Hỗ trợ của nhà cung cấp gốc cho IDE mã hóa OpenCode AI
-- 🔗 **Tích hợp TRAE** — Hỗ trợ đầy đủ cho khung phát triển TRAE AI
-- 📦 **Batch API** — Xử lý hàng loạt không đồng bộ cho các yêu cầu hàng loạt
-- 🎯 **Định tuyến dựa trên thẻ** — Định tuyến các yêu cầu dựa trên thẻ và siêu dữ liệu tùy chỉnh
-- 💰 **Chiến lược chi phí thấp nhất** — Tự động chọn nhà cung cấp có sẵn rẻ nhất
-
-> 📝 Thông số kỹ thuật đầy đủ tính năng có sẵn trong [link](docs/new-features/) (217 thông số kỹ thuật chi tiết)
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 👥 Người đóng góp
+## 🗺️ Roadmap
+
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### Cách đóng góp
+### How to Contribute
-1. Phân nhánh kho lưu trữ
-2. Tạo nhánh tính năng của bạn (`git checkout -b feature/amazing-feature`)
-3. Cam kết thay đổi của bạn (`git commit -m 'Add amazing feature'`)
-4. Đẩy vào nhánh (`git push origin feature/amazing-feature`)
-5. Mở yêu cầu kéo
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-Xem [CONTRIBUTING.md](CONTRIBUTING.md) để biết hướng dẫn chi tiết.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### Phát hành phiên bản mới
+### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Lịch sử ngôi sao
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 Lời cảm ơn
+## 🙏 Acknowledgments
-Đặc biệt cảm ơn **[9router](https://github.com/decolua/9router)** của **[decolua](https://github.com/decolua)** — dự án ban đầu đã truyền cảm hứng cho đợt phân nhánh này. OmniRoute được xây dựng dựa trên nền tảng đáng kinh ngạc đó với các tính năng bổ sung, API đa phương thức và viết lại TypeScript đầy đủ.
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-Đặc biệt cảm ơn **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — cách triển khai Go ban đầu đã truyền cảm hứng cho cổng JavaScript này.
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 Giấy phép
+## Giấy phép
-Giấy phép MIT - xem [LICENSE](LICENSE) để biết chi tiết.
+MIT License - see [LICENSE](LICENSE) for details.
---
-
Được xây dựng với ❤️ dành cho nhà phát triển viết mã 24/7
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/vi/docs/FEATURES.md b/docs/i18n/vi/docs/FEATURES.md
new file mode 100644
index 0000000000..3488ce2edc
--- /dev/null
+++ b/docs/i18n/vi/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (Tiếng Việt)
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/i18n/zh-CN/README.md b/docs/i18n/zh-CN/README.md
index 4426c20907..8c945feee4 100644
--- a/docs/i18n/zh-CN/README.md
+++ b/docs/i18n/zh-CN/README.md
@@ -1,24 +1,94 @@
-
-

-
- # 🚀 OmniRoute — 免费 AI 网关
+# 🚀 OmniRoute — The Free AI Gateway (中文(简体))
-### 永不停止编程。智能路由至**免费和低成本 AI 模型**,自动故障转移。
-
-_您的通用 API 代理 — 一个端点,36+ 提供商,零停机时间。_
-
-**Chat Completions • Embeddings • 图像生成 • 音频 • Reranking • 100% TypeScript**
+🌐 **Languages:** 🇺🇸 [English](../../../README.md) · 🇪🇸 [es](../es/README.md) · 🇫🇷 [fr](../fr/README.md) · 🇩🇪 [de](../de/README.md) · 🇮🇹 [it](../it/README.md) · 🇷🇺 [ru](../ru/README.md) · 🇨🇳 [zh-CN](../zh-CN/README.md) · 🇯🇵 [ja](../ja/README.md) · 🇰🇷 [ko](../ko/README.md) · 🇸🇦 [ar](../ar/README.md) · 🇮🇳 [in](../in/README.md) · 🇹🇭 [th](../th/README.md) · 🇻🇳 [vi](../vi/README.md) · 🇮🇩 [id](../id/README.md) · 🇲🇾 [ms](../ms/README.md) · 🇳🇱 [nl](../nl/README.md) · 🇵🇱 [pl](../pl/README.md) · 🇸🇪 [sv](../sv/README.md) · 🇳🇴 [no](../no/README.md) · 🇩🇰 [da](../da/README.md) · 🇫🇮 [fi](../fi/README.md) · 🇵🇹 [pt](../pt/README.md) · 🇷🇴 [ro](../ro/README.md) · 🇭🇺 [hu](../hu/README.md) · 🇧🇬 [bg](../bg/README.md) · 🇸🇰 [sk](../sk/README.md) · 🇺🇦 [uk-UA](../uk-UA/README.md) · 🇮🇱 [he](../he/README.md) · 🇵🇭 [phi](../phi/README.md) · 🇧🇷 [pt-BR](../pt-BR/README.md)
---
-### 🤖 为您最爱的编程代理提供免费 AI
+### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback.
-_通过 OmniRoute 连接任何 AI 驱动的 IDE 或 CLI 工具 — 免费 API 网关,无限编程。_
+_Your universal API proxy — one endpoint, 67+ providers, zero downtime. Now with **MCP & A2A** agent orchestration._
+
+**Chat Completions • Embeddings • Image Generation • Video • Music • Audio • Reranking • **Web Search** • MCP Server • A2A Protocol • 100% TypeScript**
+
+---
+
+
+
+[](https://www.npmjs.com/package/omniroute)
+[](https://www.npmjs.com/package/omniroute)
+[](https://hub.docker.com/r/diegosouzapw/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)](docs/i18n/pt-BR/README.md) | 🇪🇸 [Español](docs/i18n/es/README.md) | 🇫🇷 [Français](docs/i18n/fr/README.md) | 🇮🇹 [Italiano](docs/i18n/it/README.md) | 🇷🇺 [Русский](docs/i18n/ru/README.md) | 🇨🇳 [中文 (简体)](docs/i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](docs/i18n/de/README.md) | 🇮🇳 [हिन्दी](docs/i18n/in/README.md) | 🇹🇭 [ไทย](docs/i18n/th/README.md) | 🇺🇦 [Українська](docs/i18n/uk-UA/README.md) | 🇸🇦 [العربية](docs/i18n/ar/README.md) | 🇯🇵 [日本語](docs/i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](docs/i18n/vi/README.md) | 🇧🇬 [Български](docs/i18n/bg/README.md) | 🇩🇰 [Dansk](docs/i18n/da/README.md) | 🇫🇮 [Suomi](docs/i18n/fi/README.md) | 🇮🇱 [עברית](docs/i18n/he/README.md) | 🇭🇺 [Magyar](docs/i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](docs/i18n/id/README.md) | 🇰🇷 [한국어](docs/i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](docs/i18n/ms/README.md) | 🇳🇱 [Nederlands](docs/i18n/nl/README.md) | 🇳🇴 [Norsk](docs/i18n/no/README.md) | 🇵🇹 [Português (Portugal)](docs/i18n/pt/README.md) | 🇷🇴 [Română](docs/i18n/ro/README.md) | 🇵🇱 [Polski](docs/i18n/pl/README.md) | 🇸🇰 [Slovenčina](docs/i18n/sk/README.md) | 🇸🇪 [Svenska](docs/i18n/sv/README.md) | 🇵🇭 [Filipino](docs/i18n/phi/README.md) | 🇨🇿 [Čeština](docs/i18n/cs/README.md)
+
+---
+
+## 🆕 What's New in v3.0.0
+
+> **Upgrading from v2.9.5?** — See the [full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) for all changes.
+
+| Area | Change |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection remediation |
+| ✅ **Route Validation** | All 176 API routes now validated with Zod schemas + `validateBody()` — CI `check:route-validation:t06` passes |
+| 🐛 **omniModel Tag Leak** | Internal `
` tags no longer leak to clients in SSE streaming responses (#585) |
+| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with per-provider/account quota enforcement, idempotency, SHA-256 storage, and optional GitHub issue reporting |
+| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG → generic fallback chain |
+| 🔄 **Model Auto-Sync** | 24h scheduler and manual UI toggle to sync model lists for built-in and custom OpenAI-compatible providers |
+| 🌐 **OpenCode Zen/Go** | Two new providers from @kang-heewon via PR #530: free tier + subscription tier via `OpencodeExecutor` |
+| 🐛 **Gemini CLI OAuth** | Actionable error when `GEMINI_OAUTH_CLIENT_SECRET` is missing in Docker (was cryptic Google error) |
+| 🐛 **OpenCode config** | `saveOpenCodeConfig()` now correctly writes TOML to `XDG_CONFIG_HOME` |
+| 🐛 **Pinned model override** | `body.model` correctly set to `pinnedModel` on context-cache protection |
+| 🐛 **Codex/Claude loop** | `tool_result` blocks now converted to text to stop infinite loops |
+| 🐛 **Login redirect** | Login no longer freezes after skipping password setup |
+| 🐛 **Windows paths** | MSYS2/Git-Bash paths (`/c/...`) normalized to `C:\...` automatically |
+
+---
+
+## 🖼️ Main Dashboard
+
+
+

+
+
+---
+
+## 📸 Dashboard Preview
+
+
+Click to see dashboard screenshots
+
+| Page | Screenshot |
+| -------------- | ------------------------------------------------- |
+| **Providers** |  |
+| **Combos** |  |
+| **Analytics** |  |
+| **Health** |  |
+| **Translator** |  |
+| **Settings** |  |
+| **CLI Tools** |  |
+| **Usage Logs** |  |
+| **Endpoints** |  |
+
+
+
+---
+
+### 🤖 Free AI Provider for your favorite coding agents
+
+_Connect any AI-powered IDE or CLI tool through OmniRoute — free API gateway for unlimited coding._
-
+

OpenClaw
@@ -92,586 +162,527 @@ _通过 OmniRoute 连接任何 AI 驱动的 IDE 或 CLI 工具 — 免费 API
|
-📡 所有代理通过 http://localhost:20128/v1 或 http://cloud.omniroute.online/v1 连接 — 一个配置,无限模型和配额
+📡 All agents connect via http://localhost:20128/v1 or http://cloud.omniroute.online/v1 — one config, unlimited models and quota
---
-### 🆕 What's New in v3.0.0
+## 🤔 Why OmniRoute?
-| Area | Change |
-| ------------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**Stop wasting money and hitting limits:**
-### 🆕 What's New in v3.0.0
+-
Subscription quota expires unused every month
+-
Rate limits stop you mid-coding
+-
Expensive APIs ($20-50/month per provider)
+-
Manual switching between providers
-| Area | Change |
-| -------------------------- | --------------------------------------------------------------------------------- |
-| 🔒 **CodeQL Security** | Fixed 10+ CodeQL alerts: polynomial-redos, insecure-randomness, shell-injection |
-| ✅ **Route Validation** | All 176 API routes validated with Zod schemas + `validateBody()` |
-| 🐛 **omniModel Tag Leak** | Internal `` tags no longer leak to clients in SSE streams (#585) |
-| 🔑 **Registered Keys API** | Auto-provision API keys via `POST /api/v1/registered-keys` with quota enforcement |
-| 🎨 **Provider Icons** | 130+ provider logos via `@lobehub/icons` (SVG) with PNG fallback |
-| 🔄 **Model Auto-Sync** | 24h scheduler refreshes model lists for 16 providers |
-| 🌐 **OpenCode Zen/Go** | Two new providers: free tier + subscription tier |
-| 🔧 **926 Tests** | Full test suite passes with 0 failures |
+**OmniRoute solves this:**
+
+- ✅ **Maximize subscriptions** - Track quota, use every bit before reset
+- ✅ **Auto fallback** - Subscription → API Key → Cheap → Free, zero downtime
+- ✅ **Multi-account** - Round-robin between accounts per provider
+- ✅ **Universal** - Works with Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, any CLI tool
---
-[](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)
+## 📧 Support
-[🌐 网站](https://omniroute.online) • [🚀 快速开始](#-快速开始) • [💡 功能特性](#-核心功能) • [📖 文档](#-文档) • [💰 定价](#-定价概览)
+> 💬 **Join our community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Get help, share tips, and stay updated.
-🌐 **Available in:** 🇺🇸 [English](../../README.md) | 🇧🇷 [Português (Brasil)](../pt-BR/README.md) | 🇪🇸 [Español](../es/README.md) | 🇫🇷 [Français](../fr/README.md) | 🇮🇹 [Italiano](../it/README.md) | 🇷🇺 [Русский](../ru/README.md) | 🇨🇳 [中文 (简体)](../zh-CN/README.md) | 🇩🇪 [Deutsch](../de/README.md) | 🇮🇳 [हिन्दी](../in/README.md) | 🇹🇭 [ไทย](../th/README.md) | 🇺🇦 [Українська](../uk-UA/README.md) | 🇸🇦 [العربية](../ar/README.md) | 🇯🇵 [日本語](../ja/README.md) | 🇻🇳 [Tiếng Việt](../vi/README.md) | 🇧🇬 [Български](../bg/README.md) | 🇩🇰 [Dansk](../da/README.md) | 🇫🇮 [Suomi](../fi/README.md) | 🇮🇱 [עברית](../he/README.md) | 🇭🇺 [Magyar](../hu/README.md) | 🇮🇩 [Bahasa Indonesia](../id/README.md) | 🇰🇷 [한국어](../ko/README.md) | 🇲🇾 [Bahasa Melayu](../ms/README.md) | 🇳🇱 [Nederlands](../nl/README.md) | 🇳🇴 [Norsk](../no/README.md) | 🇵🇹 [Português (Portugal)](../pt/README.md) | 🇷🇴 [Română](../ro/README.md) | 🇵🇱 [Polski](../pl/README.md) | 🇸🇰 [Slovenčina](../sk/README.md) | 🇸🇪 [Svenska](../sv/README.md) | 🇵🇭 [Filipino](../phi/README.md)
-
-
-
----
-
-## 🖼️
-
-
-

-
-
----
-
-## 📸
-
-
-...
-
-| # | # |
-| ----- | ---------------------------------------- |
-| **1** |  |
-| **2** |  |
-| **3** |  |
-| **4** |  |
-| **5** |  |
-| **6** |  |
-| **7** |  |
-| **8** |  |
-| **9** |  |
-
-
-
----
-
-## 🤔 为什么选择 OmniRoute?
-
-**停止浪费金钱和遭遇限制:**
-
--
订阅配额每月未使用就过期
--
速率限制在编程中途停止你
--
昂贵的 API(每个提供商 $20-50/月)
--
手动在提供商间切换
-
-**OmniRoute 解决这些问题:**
-
-- ✅ **最大化订阅** — 追踪配额,在重置前用完每一点
-- ✅ **自动故障转移** — 订阅 → API Key → 低价 → 免费,零停机
-- ✅ **多账号** — 每个提供商的账号轮询
-- ✅ **通用** — 适用于 Claude Code、Codex、Gemini CLI、Cursor、Cline、OpenClaw、任何 CLI 工具
-
----
-
-## 📧 支持
-
-> 💬 **加入我们的社区!** [WhatsApp 群组](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — 获取帮助、分享技巧、了解最新动态。
-
-- **网站**: [omniroute.online](https://omniroute.online)
+- **Website**: [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)
-- **WhatsApp**: [社区群组](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
-- **原始项目**: [decolua 的 9router](https://github.com/decolua/9router)
+- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
+- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md), open a PR, or pick a `good first issue`
+- **Original Project**: [9router by decolua](https://github.com/decolua/9router)
+
+### 🐛 Reporting a Bug?
+
+When opening an issue, please run the system-info command and attach the generated file:
+
+```bash
+npm run system-info
+```
+
+This generates a `system-info.txt` with your Node.js version, OmniRoute version, OS details, installed CLI tools (iflow, gemini, claude, codex, antigravity, droid, etc.), Docker/PM2 status, and system packages — everything we need to reproduce your issue quickly. Attach the file directly to your GitHub issue.
---
-## 🔄 工作原理
+## 🔄 How It Works
```
┌─────────────┐
-│ 您的 CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
-│ 工具 │
+│ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
+│ Tool │
└──────┬──────┘
│ http://localhost:20128/v1
↓
┌─────────────────────────────────────────┐
-│ OmniRoute(智能路由器) │
-│ • 格式转换(OpenAI ↔ Claude) │
-│ • 配额追踪 + Embeddings + 图像 │
-│ • 自动令牌刷新 │
+│ OmniRoute (Smart Router) │
+│ • Format translation (OpenAI ↔ Claude) │
+│ • Quota tracking + Embeddings + Images │
+│ • Auto token refresh │
└──────┬──────────────────────────────────┘
│
- ├─→ [第1层: 订阅] Claude Code, Codex, Gemini CLI
- │ ↓ 配额用完
- ├─→ [第2层: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM 等
- │ ↓ 预算限制
- ├─→ [第3层: 低价] GLM ($0.6/1M), MiniMax ($0.2/1M)
- │ ↓ 预算限制
- └─→ [第4层: 免费] iFlow, Qwen, Kiro(无限制)
+ ├─→ [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
```
---
-## 🎯 OmniRoute 解决了什么 — 30 个真正的痛点和用例
+## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
-> **每个使用 AI 工具的开发人员每天都会面临这些问题。** OmniRoute 的构建是为了解决所有这些问题 - 从成本超支到区域封锁,从损坏的 OAuth 流程到协议操作和企业可观察性。
+> **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 protocol operations and enterprise observability.
-💸 1.“我支付了昂贵的订阅费用,但仍然受到限制的干扰”
+💸 1. "I pay for an expensive subscription but still get interrupted by limits"
-开发人员每月为 Claude Pro、Codex Pro 或 GitHub Copilot 支付 20-200 美元。即使付费,配额也有上限——5 小时的使用时间、每周限制或每分钟的费率限制。在编码会话中,提供商停止响应,开发人员失去流量和生产力。
+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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **智能 4 层回退** — 如果订阅配额用完,自动重定向到 API 密钥 → 便宜 → 免费,零手动干预
-- **实时配额跟踪** — 实时显示代币消耗情况并重置倒计时(5 小时、每日、每周)
-- **多帐户支持** — 每个提供商有多个帐户,具有自动循环 — 当一个帐户用完时,切换到下一个帐户
-- **自定义组合** — 可定制的后备链,具有 6 种平衡策略(先填充、循环、P2C、随机、最少使用、成本优化)
-- **Codex Business Quotas** — 直接在仪表板中监控业务/团队工作空间配额
+- **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
+- **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
+- **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
-🔌 2.“我需要使用多个提供程序,但每个提供程序都有不同的 API”
+🔌 2. "I need to use multiple providers but each has a different API"
-OpenAI 使用一种格式,Claude(Anthropic)使用另一种格式,Gemini 使用另一种格式。如果开发人员想要测试来自不同提供商的模型或在它们之间进行回退,他们需要重新配置 SDK、更改端点、处理不兼容的格式。自定义提供程序(FriendLI、NIM)具有非标准模型端点。
+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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **统一端点** — 单个 `http://localhost:20128/v1` 充当所有 36 个以上提供商的代理
-- **格式翻译** — 自动且透明:OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-- **响应清理** — 删除破坏 OpenAI SDK v1.83+ 的非标准字段(`x_groq`、`usage_breakdown`、`service_tier`)
-- **角色标准化** — 对于非 OpenAI 提供商,将 `developer` → `system` 转换; `system` → `user` 适用于 GLM/ERNIE
-- **Think Tag Extraction** — 将 DeepSeek R1 等模型中的 `` 块提取为标准化 `reasoning_content`
-- **Gemini 的结构化输出** — `json_schema` → `responseMimeType`/`responseSchema` 自动转换
-- **`stream` 默认为 `false`** — 与 OpenAI 规范保持一致,避免 Python/Rust/Go SDK 中出现意外的 SSE
+- **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 67+ providers
+- **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
+- **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
+- **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
+- **Think Tag Extraction** — Extracts `` 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.“我的人工智能提供商封锁了我的地区/国家”
+🌐 3. "My AI provider blocks my region/country"
-OpenAI/Codex 等提供商会阻止来自某些地理区域的访问。用户在 OAuth 和 API 连接期间收到类似 `unsupported_country_region_territory` 的错误。这对于发展中国家的开发商来说尤其令人沮丧。
+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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **3 级代理配置** — 3 级可配置代理:全局(所有流量)、每个提供商(仅一个提供商)和每个连接/密钥
-- **颜色编码的代理徽章** — 视觉指示器:🟢 全局代理、🟡 提供商代理、🔵 连接代理,始终显示 IP
-- **通过代理进行 OAuth 令牌交换** — OAuth 流程也通过代理,解决了 `unsupported_country_region_territory`
-- **通过代理进行连接测试** — 连接测试使用配置的代理(不再直接绕过)
-- **SOCKS5 支持** — 对出站路由的完整 SOCKS5 代理支持
-- **TLS 指纹欺骗** — 通过 `wreq-js` 的类似浏览器的 TLS 指纹来绕过机器人检测
+- **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
+- **🔏 CLI Fingerprint Matching** — Reorders headers and body fields to match native CLI binary signatures, drastically reducing account flagging risk. The proxy IP is preserved — you get both stealth **and** IP masking simultaneously
-🆓 4.“我想用AI编码,但我没有钱”
+🆓 4. "I want to use AI for coding but I have no money"
-并不是每个人都能每月支付 20-200 美元来订阅 AI。来自新兴国家的学生、开发人员、业余爱好者和自由职业者需要以零成本获得优质模型。
+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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **内置免费层级提供商** — 对 100% 免费提供商的本机支持:iFlow(8 个无限型号)、Qwen(3 个无限型号)、Kiro(Claude 免费)、Gemini CLI(180K/月免费)
+- **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (5 unlimited models via OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited models: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID for free), Gemini CLI (180K tokens/month free)
- **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/` prefix
-- **仅限免费组合** — 链 `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 0 美元/月,零停机时间
-- **NVIDIA NIM 免费积分** — 集成 1000 个免费积分
-- **成本优化策略** — 自动选择最便宜的可用提供商的路由策略
+- **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
+- **NVIDIA NIM Free Access** — ~40 RPM dev-forever free access to 70+ models at build.nvidia.com (transitioning from credits to pure rate limits)
+- **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
-🔒 5.“我需要保护我的AI网关免遭未经授权的访问”
+🔒 5. "I need to protect my AI gateway from unauthorized access"
-当将人工智能网关暴露到网络(LAN、VPS、Docker)时,任何拥有该地址的人都可以消耗开发者的代币/配额。如果没有保护,API 很容易被误用、提示注入和滥用。
+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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **API 密钥管理** — 使用专用的 `/dashboard/api-manager` 页面为每个提供商生成、轮换和范围界定
-- **模型级权限** — 将 API 密钥限制为特定模型(`openai/*`、通配符模式),并具有“允许全部”/“限制”切换功能
-- **API 端点保护** — 需要 `/v1/models` 的密钥并阻止列表中的特定提供商
-- **Auth Guard + CSRF 保护** — 所有仪表板路由均受 `withAuth` 中间件 + CSRF 令牌保护
-- **速率限制器** — 通过可配置窗口限制每个 IP 的速率
-- **IP 过滤** — 用于访问控制的允许列表/阻止列表
-- **Prompt Injection Guard** — 针对恶意提示模式的清理
-- **AES-256-GCM 加密** — 静态加密的凭证
+- **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.“我的提供商宕机了,我失去了编码流程”
+🛑 6. "My provider went down and I lost my coding flow"
-AI 提供商可能会变得不稳定、返回 5xx 错误或达到临时速率限制。如果开发人员依赖于单一提供商,他们就会受到干扰。如果没有断路器,重复重试可能会使应用程序崩溃。
+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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **每个提供商的断路器** — 自动打开/关闭,具有可配置的阈值和冷却时间(关闭/打开/半打开)
-- **指数退避** — 渐进式重试延迟
-- **Anti-Thundering Herd** — 互斥锁 + 信号量保护,防止并发重试风暴
-- **组合后备链** — 如果主要提供商发生故障,则自动从该链中掉下来,无需干预
-- **组合断路器** — 自动禁用组合链中出现故障的提供商
-- **运行状况仪表板** — 正常运行时间监控、断路器状态、锁定、缓存统计、p50/p95/p99 延迟
+- **Circuit Breaker per-model** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open), scoped per-model to avoid cascading blocks
+- **Exponential Backoff** — Progressive retry delays
+- **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
+- **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
+- **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
+- **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
-🔧 7. “配置每个AI工具都是繁琐且重复的”
+🔧 7. "Configuring each AI tool is tedious and repetitive"
-开发人员使用 Cursor、Claude Code、Codex CLI、OpenClaw、Gemini CLI、Kilo Code...每个工具都需要不同的配置(API 端点、密钥、模型)。切换提供商或模型时重新配置是浪费时间。
+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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **CLI 工具仪表板** — 专用页面,可一键设置 Claude Code、Codex CLI、OpenClaw、Kilo Code、Antigravity、Cline
-- **GitHub Copilot 配置生成器** — 通过批量模型选择为 VS Code 生成 `chatLanguageModels.json`
-- **入门向导** — 为首次使用的用户提供 4 步设置指导
-- **一个端点,所有型号** — 配置 `http://localhost:20128/v1` 一次,访问 36 个以上提供商
+- **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 67+ providers
-🔑 8.“管理来自多个提供商的 OAuth 令牌简直就是地狱”
+🔑 8. "Managing OAuth tokens from multiple providers is hell"
-Claude Code、Codex、Gemini CLI、Copilot — 全部使用带有过期令牌的 OAuth 2.0。开发人员需要不断地重新进行身份验证,处理`client_secret is missing`、`redirect_uri_mismatch`以及远程服务器上的故障。 LAN/VPS 上的 OAuth 问题尤其严重。
+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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **自动令牌刷新** — OAuth 令牌在过期前在后台刷新
-- **OAuth 2.0 (PKCE) 内置** — Claude Code、Codex、Gemini CLI、Copilot、Kiro、Qwen、iFlow 的自动流程
-- **多帐户 OAuth** — 每个提供商通过 JWT/ID 令牌提取多个帐户
-- **OAuth LAN/远程修复** — `redirect_uri` 的私有 IP 检测 + 远程服务器的手动 URL 模式
-- **Nginx 背后的 OAuth** — 使用 `window.location.origin` 实现反向代理兼容性
-- **远程 OAuth 指南** — VPS/Docker 上的 Google Cloud 凭据分步指南
+- **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.“我不知道我花了多少钱或在哪里”
+📊 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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **成本分析仪表板** — 每个提供商的每个代币成本跟踪和预算管理
-- **每层预算限制** — 触发自动回退的每层支出上限
-- **按型号定价配置** — 每个型号的可配置价格
-- **每个 API 密钥的使用统计信息** — 每个密钥的请求计数和上次使用的时间戳
-- **分析仪表板** — 统计卡、模型使用图表、包含成功率和延迟的提供商表
+- **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.“我无法诊断人工智能调用中的错误和问题”
+🐛 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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **统一日志仪表板** — 4 个选项卡:请求日志、代理日志、审核日志、控制台
-- **控制台日志查看器** — 实时终端式查看器,具有颜色编码级别、自动滚动、搜索、过滤功能
-- **SQLite 代理日志** — 服务器重新启动后仍保留的持久日志
-- **Translator Playground** — 4 种调试模式:Playground(格式翻译)、Chat Tester(往返)、Test Bench(批量)、Live Monitor(实时)
-- **请求遥测** — p50/p95/p99 延迟 + X-Request-Id 跟踪
-- **基于文件的日志记录与旋转** — 控制台拦截器通过基于大小的旋转将所有内容捕获到 JSON 日志
+- **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
+- **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
+- **SQLite Proxy Logs** — Persistent logs that survive server restarts
+- **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
+- **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
+- **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
+- **System Info Report** — `npm run system-info` generates `system-info.txt` with your full environment (Node version, OmniRoute version, OS, CLI tools, Docker/PM2 status). Attach it when reporting issues for instant triage.
-🏗️ 11.“部署和维护网关很复杂”
+🏗️ 11. "Deploying and maintaining the gateway is complex"
-跨不同环境(本地、VPS、Docker、云)安装、配置和维护 AI 代理是一项劳动密集型工作。硬编码路径、目录上的 `EACCES`、端口冲突和跨平台构建等问题会增加摩擦。
+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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **npm 全局安装** — `npm install -g omniroute && omniroute` — 完成
-- **Docker 多平台** — AMD64 + ARM64 本机(Apple Silicon、AWS Graviton、Raspberry Pi)
-- **Docker Compose Profiles** — `base`(无 CLI 工具)和 `cli`(带有 Claude Code、Codex、OpenClaw)
-- **Electron 桌面应用程序** — 适用于 Windows/macOS/Linux 的本机应用程序,带系统托盘、自动启动、离线模式
-- **分割端口模式** — API 和仪表板位于单独的端口上,适用于高级场景(反向代理、容器网络)
-- **云同步** — 通过 Cloudflare Workers 跨设备配置同步
-- **数据库备份** — 自动备份、恢复、导出和导入所有设置
+- **npm global install** — `npm install -g omniroute && omniroute` — done
+- **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
+- **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.“界面只有英文,我的团队不会说英语”
+🌍 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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **仪表板 i18n — 30 种语言** — 所有 500 多个按键已翻译,包括阿拉伯语、保加利亚语、丹麦语、德语、西班牙语、芬兰语、法语、希伯来语、印地语、匈牙利语、印度尼西亚语、意大利语、日语、韩语、马来语、荷兰语、挪威语、波兰语、葡萄牙语(PT/BR)、罗马尼亚语、俄语、斯洛伐克语、瑞典语、泰语、乌克兰语、越南语、中文、菲律宾语、英语
-- **RTL 支持** — 从右到左支持阿拉伯语和希伯来语
-- **多语言自述文件** — 30 个完整的文档翻译
-- **语言选择器** — 标题中的地球图标用于实时切换
+- **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
+- **RTL Support** — Right-to-left support for Arabic and Hebrew
+- **Multi-Language READMEs** — 30 complete documentation translations
+- **Language Selector** — Globe icon in header for real-time switching
-🔄 13.“我需要的不仅仅是聊天 - 我需要嵌入、图像、音频”
+🔄 13. "I need more than chat — I need embeddings, images, audio"
-人工智能不仅仅是完成聊天。开发人员需要生成图像、转录音频、为 RAG 创建嵌入、重新排列文档以及审核内容。每个 API 都有不同的端点和格式。
+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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **嵌入** — `/v1/embeddings` 具有 6 个提供商和 9 个以上模型
-- **图像生成** — `/v1/images/generations` 具有 10 个提供商和 20 多个模型(OpenAI、xAI、Together、Fireworks、Nebius、Hyperbolic、NanoBanana、Antigravity、SD WebUI、ComfyUI)
-- **文本到视频** — `/v1/videos/generations` — ComfyUI(AnimateDiff、SVD)和 SD WebUI
-- **文本转音乐** — `/v1/music/generations` — ComfyUI(稳定音频打开,MusicGen)
-- **音频转录** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM、HuggingFace、Qwen3
-- **文本转语音** — `/v1/audio/speech` — ElevenLabs、Nvidia NIM、HuggingFace、Coqui、Tortoise、Qwen3 以及现有提供商
-- **审核** — `/v1/moderations` — 内容安全检查
-- **重新排名** — `/v1/rerank` — 文档相关性重新排名
-- **响应 API** — 对 Codex 的完整 `/v1/responses` 支持
+- **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
+- **Image Generation** — `/v1/images/generations` with 10 providers and 20+ models (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
+- **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) and SD WebUI
+- **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
+- **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
+- **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, **Inworld**, **Cartesia**, **PlayHT**, + existing providers
+- **Moderations** — `/v1/moderations` — Content safety checks
+- **Reranking** — `/v1/rerank` — Document relevance reranking
+- **Responses API** — Full `/v1/responses` support for Codex
-🧪 14.“我无法测试和比较不同型号的质量”
+🧪 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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **LLM 评估** — 黄金套装测试,包含 10 个预加载案例,涵盖问候语、数学、地理、代码生成、JSON 合规性、翻译、降价、安全拒绝
-- **4种匹配策略** — `exact`、`contains`、`regex`、`custom`(JS函数)
-- **Translator Playground 测试台** — 使用多个输入和预期输出进行批量测试、跨提供商比较
-- **聊天测试器** — 带有视觉响应渲染的完整往返
-- **实时监控** — 流经代理的所有请求的实时流
+- **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.“我需要在不损失性能的情况下进行扩展”
+📈 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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **语义缓存** - 两层缓存(签名+语义)降低成本和延迟
-- **请求幂等性** — 相同请求的 5 秒重复数据删除窗口
-- **速率限制检测** — 每个提供商的 RPM、最小间隙和最大并发跟踪
-- **可编辑的速率限制** — 可在“设置”→“持久弹性”中配置默认值
-- **API 密钥验证缓存** — 用于提高生产性能的 3 层缓存
-- **带有遥测功能的运行状况仪表板** — p50/p95/p99 延迟、缓存统计数据、正常运行时间
+- **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
+- **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.“我想全局控制模型行为”
+🤖 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.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- **系统提示注入** — 全局提示应用于所有请求
-- **思考预算验证** - 每个请求的推理令牌分配控制(直通、自动、自定义、自适应)
-- **6 种路由策略** — 确定如何分发请求的全局策略
-- **通配符路由器** — `provider/*` 模式动态路由到任何提供商
-- **组合启用/禁用切换** — 直接从仪表板切换组合
-- **提供商切换** — 一键启用/禁用提供商的所有连接
-- **阻止的提供商** — 从 `/v1/models` 列表中排除特定提供商
+- **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
-🧰 17.“我需要MCP工具作为一流的产品能力”
+🧰 17. "I need MCP tools as first-class product capabilities"
-许多 AI 网关仅将 MCP 作为隐藏的实现细节公开。团队需要一个可见的、可管理的操作层。
+Many AI gateways expose MCP only as a hidden implementation detail. Teams need a visible, manageable operation layer.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- MCP 显示在仪表板导航和端点协议选项卡中
-- 专用 MCP 管理页面,包含流程、工具、范围和审计
-- `omniroute --mcp` 和客户入门的内置快速启动
+- MCP appears in the dashboard navigation and endpoint protocol tab
+- Dedicated MCP management page with process, tools, scopes, and audit
+- Built-in quick-start for `omniroute --mcp` and client onboarding
-🧠 18.“我需要具有同步+流任务路径的 A2A 编排”
+🧠 18. "I need A2A orchestration with sync + stream task paths"
-代理工作流程需要直接回复和具有生命周期控制的长时间运行的流式执行。
+Agent workflows need both direct replies and long-running streamed execution with lifecycle control.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- A2A JSON-RPC 端点 (`POST /a2a`) 与 `message/send` 和 `message/stream`
-- 具有终端状态传播的 SSE 流式传输
-- `tasks/get` 和 `tasks/cancel` 的任务生命周期 API
+- A2A JSON-RPC endpoint (`POST /a2a`) with `message/send` and `message/stream`
+- SSE streaming with terminal state propagation
+- Task lifecycle APIs for `tasks/get` and `tasks/cancel`
-🛰️ 19.“我需要真实的 MCP 进程运行状况,而不是猜测的状态”
+🛰️ 19. "I need real MCP process health, not guessed status"
-运营团队需要知道 MCP 是否确实存在,而不仅仅是 API 是否可访问。
+Operational teams need to know if MCP is actually alive, not just whether an API is reachable.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- 带有 PID、时间戳、传输、工具计数和范围模式的运行时心跳文件
-- MCP状态API结合心跳+最近的活动
-- 用于流程/正常运行时间/心跳新鲜度的 UI 状态卡
+- Runtime heartbeat file with PID, timestamps, transport, tool count, and scope mode
+- MCP status API combining heartbeat + recent activity
+- UI status cards for process/uptime/heartbeat freshness
-📋 20.“我需要可审核的 MCP 工具执行”
+📋 20. "I need auditable MCP tool execution"
-当工具改变配置或触发操作操作时,团队需要取证可追溯性。
+When tools mutate config or trigger ops actions, teams need forensic traceability.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- SQLite 支持的 MCP 工具调用审核日志记录
-- 按工具、成功/失败、API 密钥和分页过滤
-- 仪表板审核表+自动化统计端点
+- SQLite-backed audit logging for MCP tool calls
+- Filters by tool, success/failure, API key, and pagination
+- Dashboard audit table + stats endpoints for automation
-🔐 21.“每次集成我都需要范围内的 MCP 权限”
+🔐 21. "I need scoped MCP permissions per integration"
-不同的客户端应该具有对工具类别的最低权限访问权限。
+Different clients should have least-privilege access to tool categories.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- 9 个粒度 MCP 范围,用于受控工具访问
-- MCP 管理 UI 中的范围执行和可见性
-- 操作工具的安全默认姿势
+- 9 granular MCP scopes for controlled tool access
+- Scope enforcement and visibility in MCP management UI
+- Safe default posture for operational tooling
-⚙️ 22.“我需要操作控制而不重新部署”
+⚙️ 22. "I need operational controls without redeploying"
-团队需要在事件或成本事件期间快速更改运行时。
+Teams need quick runtime changes during incidents or cost events.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- 直接从 MCP 仪表板切换组合激活
-- 应用预定义策略包中的弹性配置文件
-- 从同一操作面板重置断路器状态
+- Switch combo activation directly from MCP dashboard
+- Apply resilience profiles from pre-defined policy packs
+- Reset circuit breaker state from the same operations panel
-🔄 23.“我需要实时 A2A 任务生命周期可见性和取消”
+🔄 23. "I need live A2A task lifecycle visibility and cancellation"
-如果没有生命周期可见性,任务事件就很难分类。
+Without lifecycle visibility, task incidents become hard to triage.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- 任务列表/按状态/技能过滤并分页
-- 深入了解任务元数据、事件和工件
-- 任务取消端点和带有确认的 UI 操作
+- Task listing/filtering by state/skill with pagination
+- Drill-down on task metadata, events, and artifacts
+- Task cancellation endpoint and UI action with confirmation
-🌊 24.“我需要 A2A 负载的活动流指标”
+🌊 24. "I need active stream metrics for A2A load"
-流媒体工作流程需要对并发和实时连接的操作洞察。
+Streaming workflows require operational insight into concurrency and live connections.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- 活动流计数器集成到 A2A 状态中
-- 最后任务时间戳和每个状态计数
-- 用于实时操作监控的 A2A 仪表板卡
+- Active stream counters integrated into A2A status
+- Last task timestamp and per-state counts
+- A2A dashboard cards for real-time ops monitoring
-🪪 25.“我需要为客户发现标准代理”
+🪪 25. "I need standard agent discovery for clients"
-外部客户端和协调器需要机器可读的元数据来进行引导。
+External clients and orchestrators need machine-readable metadata for onboarding.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- 特工卡暴露在`/.well-known/agent.json`
-- 管理 UI 中显示的能力和技能
-- A2A 状态 API 包括用于自动化的发现元数据
+- Agent Card exposed at `/.well-known/agent.json`
+- Capabilities and skills shown in management UI
+- A2A status API includes discovery metadata for automation
-🧭 26.“我需要产品 UX 中的协议可发现性”
+🧭 26. "I need protocol discoverability in the product UX"
-如果用户无法发现协议表面,采用和支持质量就会下降。
+If users cannot discover protocol surfaces, adoption and support quality drop.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- MCP 和 A2A 的侧边栏条目
-- 端点页面“协议”选项卡包含快速启动和状态
-- 从概述到专用管理仪表板的链接
+- Consolidated **Endpoints** page with tabs for Proxy, MCP, A2A, and API Endpoints
+- Inline service status toggles (Online/Offline) for MCP and A2A
+- Links from overview to dedicated management tabs
-🧪 27.“我需要与真实客户端进行端到端协议验证”
+🧪 27. "I need end-to-end protocol validation with real clients"
-模拟测试不足以在发布前验证协议兼容性。
+Mock tests are not enough to validate protocol compatibility before release.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- E2E 套件,可启动应用程序并使用真正的 MCP SDK 客户端传输
-- A2A 客户端测试发现、发送、流式传输、获取和取消流程
-- 针对 MCP 审计和 A2A 任务 API 交叉检查断言
+- E2E suite that boots app and uses real MCP SDK client transport
+- A2A client tests for discovery, send, stream, get, and cancel flows
+- Cross-check assertions against MCP audit and A2A tasks APIs
-📡 28.“我需要跨所有接口的统一可观察性”
+📡 28. "I need unified observability across all interfaces"
-按协议分割可观察性会产生盲点和更长的 MTTR。
+Splitting observability by protocol creates blind spots and longer MTTR.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- 一个产品中的统一仪表板/日志/分析
-- 跨 OpenAI、MCP 和 A2A 层的运行状况 + 审计 + 请求遥测
-- 用于状态和自动化的操作 API
+- Unified dashboards/logs/analytics in one product
+- Health + audit + request telemetry across OpenAI, MCP, and A2A layers
+- Operational APIs for status and automation
-💼 29.“我需要一个用于代理+工具+代理编排的运行时”
+💼 29. "I need one runtime for proxy + tools + agent orchestration"
-运行许多单独的服务会增加运营成本和故障模式。
+Running many separate services increases operational cost and failure modes.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- 兼容 OpenAI 的代理、MCP 服务器和 A2A 服务器位于一个堆栈中
-- 共享身份验证、弹性、数据存储和可观察性
-- 所有交互界面上一致的策略模型
+- OpenAI-compatible proxy, MCP server, and A2A server in one stack
+- Shared auth, resilience, data store, and observability
+- Consistent policy model across all interaction surfaces
-🚀 30.“我需要在没有胶水代码蔓延的情况下交付代理工作流程”
+🚀 30. "I need to ship agentic workflows without glue-code sprawl"
-拼接多个临时服务和脚本时,团队会失去速度。
+Teams lose velocity when stitching multiple ad-hoc services and scripts.
-**OmniRoute 如何解决:**
+**How OmniRoute solves it:**
-- 客户端和代理的统一端点策略
-- 内置协议管理 UI 和烟雾验证路径
-- 生产就绪的基础(安全性、日志记录、弹性、备份)
+- Unified endpoint strategy for clients and agents
+- Built-in protocol management UIs and smoke validation paths
+- Production-ready foundations (security, logging, resilience, backup)
-### 示例手册(集成用例)
+### Example Playbooks (Integrated Use Cases)
-**剧本 A:最大化付费订阅 + 廉价备份**
+**Playbook A: Maximize paid subscription + cheap backup**
```txt
Combo: "maximize-claude"
@@ -683,7 +694,7 @@ Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
```
-**剧本 B:零成本编码堆栈**
+**Playbook B: Zero-cost coding stack**
```txt
Combo: "free-forever"
@@ -695,7 +706,7 @@ Monthly cost: $0
Outcome: stable free coding workflow
```
-**剧本 C:24/7 始终在线的后备链**
+**Playbook C: 24/7 always-on fallback chain**
```txt
Combo: "always-on"
@@ -708,65 +719,132 @@ Combo: "always-on"
Outcome: deep fallback depth for deadline-critical workloads
```
-**剧本 D:使用 MCP + A2A 的特工操作**
+**Playbook D: Agent ops with MCP + A2A**
```txt
1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
2) Run A2A tasks via `message/send` and `message/stream`
-3) Observe via /dashboard/mcp and /dashboard/a2a
-4) Control incidents with resilience profile + task cancellation
+3) Observe via /dashboard/endpoint (MCP and A2A tabs)
+4) Toggle services via inline status controls
```
---
-## ⚡ 快速开始
+## 🆓 Start Free — Zero Configuration Cost
-**1. 全局安装:**
+> Setup AI coding in minutes at **$0/month**. Connect these free accounts and use the built-in **Free Stack** combo.
+
+| Step | Action | Providers Unlocked |
+| ---- | -------------------------------------------------- | ------------------------------------------------------------------ |
+| 1 | Connect **Kiro** (AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 — **unlimited** |
+| 2 | Connect **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... — **unlimited** |
+| 3 | Connect **Qwen** (Device Code) | qwen3-coder-plus, qwen3-coder-flash... — **unlimited** |
+| 4 | Connect **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro — **180K/mo free** |
+| 5 | `/dashboard/combos` → **Free Stack ($0)** template | Round-robin all free providers automatically |
+
+**Point any IDE/CLI to:** `http://localhost:20128/v1` · API Key: `any-string` · Done.
+
+> **Optional extra coverage (also free):** Groq API key (30 RPM free), NVIDIA NIM (40 RPM free, 70+ models), Cerebras (1M tok/day), LongCat API key (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ models).
+
+## 快速开始
+
+### 1) Install and run
```bash
npm install -g omniroute
omniroute
```
-🎉 仪表板在 `http://localhost:20128` 打开
+> **pnpm users:** Run `pnpm approve-builds -g` after install to enable native build scripts required by `better-sqlite3` and `@swc/core`:
+>
+> ```bash
+> pnpm install -g omniroute
+> pnpm approve-builds -g # Select all packages → approve
+> omniroute
+> ```
-| 命令 | 描述 |
-| ----------------------- | ---------------------------- |
-| `omniroute` | 启动服务器(默认端口 20128) |
-| `omniroute --port 3000` | 使用自定义端口 |
-| `omniroute --no-open` | 不自动打开浏览器 |
-| `omniroute --help` | 显示帮助 |
+Dashboard opens at `http://localhost:20128` and API base URL is `http://localhost:20128/v1`.
-**2. 连接免费提供商:**
+| Command | Description |
+| ----------------------- | ----------------------------------------------------------- |
+| `omniroute` | Start server (`PORT=20128`, API and dashboard on same port) |
+| `omniroute --port 3000` | Set canonical/API port to 3000 |
+| `omniroute --mcp` | Start MCP server (stdio transport) |
+| `omniroute --no-open` | Don't auto-open browser |
+| `omniroute --help` | Show help |
-仪表板 → 提供商 → 连接 **Claude Code** 或 **Antigravity** → OAuth 登录 → 完成!
+Optional split-port mode:
-**3. 在 CLI 工具中使用:**
-
-```
-Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline 设置:
- Endpoint: http://localhost:20128/v1
- API Key: [从仪表板复制]
- Model: if/kimi-k2-thinking
+```bash
+PORT=20128 DASHBOARD_PORT=20129 omniroute
+# API: http://localhost:20128/v1
+# Dashboard: http://localhost:20129
```
-**完成!** 开始使用免费 AI 模型编程。
+### 2) Connect providers and create your API key
-**替代方案 — 从源代码运行:**
+1. Open Dashboard → `Providers` and connect at least one provider (OAuth or API key).
+2. Open Dashboard → `Endpoints` and create an API key.
+3. (Optional) Open Dashboard → `Combos` and set your fallback chain.
+
+### 3) Point your coding tool to OmniRoute
+
+```txt
+Base URL: http://localhost:20128/v1
+API Key: [copy from Endpoint page]
+Model: if/kimi-k2-thinking (or any provider/model prefix)
+```
+
+Works with Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, and OpenAI-compatible SDKs.
+
+### 4) Enable and validate protocols (v2.0)
+
+**MCP (for tool-driven operations):**
+
+```bash
+omniroute --mcp
+```
+
+Then connect your MCP client over `stdio` and test tools like:
+
+- `omniroute_get_health`
+- `omniroute_list_combos`
+
+**A2A (for agent-to-agent workflows):**
+
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
+
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
+```
+
+### 5) Validate everything end-to-end (recommended)
+
+```bash
+npm run test:protocols:e2e
+```
+
+This suite validates real MCP and A2A client flows against a running app.
+
+### Alternative: run from source
```bash
cp .env.example .env
npm install
-PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
+PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
```
---
## 🐳 Docker
-OmniRoute 作为公共 Docker 镜像在 [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute) 上可用。
+OmniRoute is available as a public Docker image on [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
-**快速运行:**
+**Quick run:**
```bash
docker run -d \
@@ -777,10 +855,10 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**使用环境文件:**
+**With environment file:**
```bash
-# 先复制并编辑 .env
+# Copy and edit .env first
cp .env.example .env
docker run -d \
@@ -792,293 +870,627 @@ docker run -d \
diegosouzapw/omniroute:latest
```
-**使用 Docker Compose:**
+**Using Docker Compose:**
```bash
-# 基础配置(无 CLI 工具)
+# Base profile (no CLI tools)
docker compose --profile base up -d
-# CLI 配置(内置 Claude Code、Codex、OpenClaw)
+# CLI profile (Claude Code, Codex, OpenClaw built-in)
docker compose --profile cli up -d
```
-| 镜像 | 标签 | 大小 | 描述 |
-| ------------------------ | -------- | ------ | ---------- |
-| `diegosouzapw/omniroute` | `latest` | ~250MB | 最新稳定版 |
-| `diegosouzapw/omniroute` | `1.0.6` | ~250MB | 当前版本 |
+Dashboard support for Docker deployments now includes a one-click **Cloudflare Quick Tunnel** on `Dashboard → Endpoints`. The first enable downloads `cloudflared` only when needed, starts a temporary tunnel to your current `/v1` endpoint, and shows the generated `https://*.trycloudflare.com/v1` URL directly below your normal public URL.
+
+Notes:
+
+- Quick Tunnel URLs are temporary and change after every restart.
+- Managed install currently supports Linux, macOS, and Windows on `x64` / `arm64`.
+- Set `CLOUDFLARED_BIN=/absolute/path/to/cloudflared` if you want OmniRoute to use an existing binary instead of downloading one.
+
+**Using Docker Compose with Caddy (HTTPS Auto-TLS):**
+
+OmniRoute can be securely exposed using Caddy's automatic SSL provisioning. Ensure your domain's DNS A record points to your server's IP.
+
+```yaml
+services:
+ omniroute:
+ image: diegosouzapw/omniroute:latest
+ container_name: omniroute
+ restart: unless-stopped
+ volumes:
+ - omniroute-data:/app/data
+ environment:
+ - PORT=20128
+ - NEXT_PUBLIC_BASE_URL=https://your-domain.com
+
+ caddy:
+ image: caddy:latest
+ container_name: caddy
+ restart: unless-stopped
+ ports:
+ - "80:80"
+ - "443:443"
+ command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
+
+volumes:
+ omniroute-data:
+```
+
+| Image | Tag | Size | Description |
+| ------------------------ | -------- | ------ | --------------------- |
+| `diegosouzapw/omniroute` | `latest` | ~250MB | Latest stable release |
+| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Current version |
---
----
+## 🖥️ Desktop App — Offline & Always-On
-## 🖥️
+> 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
-> 🆕 **全新!** OmniRoute 现已提供适用于 Windows、macOS 和 Linux 的**原生桌面应用程序**。
+Run OmniRoute as a standalone desktop app — no terminal, no browser, no internet required for local models. The Electron-based app includes:
-- 🖥️ **原生窗口** — 专属应用窗口,集成系统托盘
-- 🔄 **自动启动** — 系统登录时启动 OmniRoute
-- 🔔 **原生通知** — 配额耗尽或提供商问题时收到提醒
-- ⚡ **一键安装** — NSIS (Windows)、DMG (macOS)、AppImage (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 # 开发模式
-npm run electron:build # 当前平台
+# Development mode
+npm run electron:dev
+
+# Build for your platform
+npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
-npm run electron:build:mac # macOS (.dmg)
+npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
```
-📖 完整文档:[`electron/README.md`](electron/README.md)
+### System Tray
+
+When minimized, OmniRoute lives in your system tray with quick actions:
+
+- Open dashboard
+- Change server port
+- Quit application
+
+📖 Full documentation: [`electron/README.md`](electron/README.md)
---
-## 💰 定价概览
+## 💰 Pricing at a Glance
-| 层级 | 提供商 | 费用 | 配额重置 | 最适合 |
-| -------------- | ----------------- | --------------------- | --------------- | ------------ |
-| **💳 订阅** | Claude Code (Pro) | $20/月 | 5小时 + 每周 | 已订阅用户 |
-| | Codex (Plus/Pro) | $20-200/月 | 5小时 + 每周 | OpenAI 用户 |
-| | Gemini CLI | **免费** | 180K/月 + 1K/天 | 所有人! |
-| | GitHub Copilot | $10-19/月 | 每月 | GitHub 用户 |
-| **🔑 API KEY** | NVIDIA NIM | **免费**(1000 积分) | 一次性 | 免费测试 |
-| | DeepSeek | 按使用量 | 无 | 最佳性价比 |
-| | Groq | 免费层 + 付费 | 限速 | 超快推理 |
-| | xAI (Grok) | 按使用量 | 无 | Grok 模型 |
-| | Mistral | 免费层 + 付费 | 限速 | 欧洲 AI |
-| | OpenRouter | 按使用量 | 无 | 100+ 模型 |
-| **💰 低价** | GLM-4.7 | $0.6/1M | 每日 10时 | 经济备用 |
-| | MiniMax M2.1 | $0.2/1M | 5小时滚动 | 最便宜选项 |
-| | Kimi K2 | $9/月固定 | 每月 10M Token | 可预测成本 |
-| **🆓 免费** | iFlow | $0 | 无限制 | 8 个免费模型 |
-| | Qwen | $0 | 无限制 | 3 个免费模型 |
-| | Kiro | $0 | 无限制 | 免费 Claude |
+| Tier | Provider | Cost | Quota Reset | Best For |
+| ------------------- | --------------------------- | ------------------------- | ---------------- | --------------------------------- |
+| **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed |
+| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users |
+| | Gemini CLI | **FREE** | 180K/mo + 1K/day | Everyone! |
+| | GitHub Copilot | $10-19/mo | Monthly | GitHub users |
+| **🔑 API KEY** | NVIDIA NIM | **FREE** (dev forever) | ~40 RPM | 70+ open models |
+| | Cerebras | **FREE** (1M tok/day) | 60K TPM / 30 RPM | World's fastest |
+| | Groq | **FREE** (30 RPM) | 14.4K RPD | Ultra-fast Llama/Gemma |
+| | DeepSeek V3.2 | $0.27/$1.10 per 1M | None | Best price/quality reasoning |
+| | xAI Grok-4 Fast | **$0.20/$0.50 per 1M** 🆕 | None | Fastest + tool calling, ultralow |
+| | xAI Grok-4 (standard) | $0.20/$1.50 per 1M 🆕 | None | Reasoning flagship from xAI |
+| | Mistral | Free trial + paid | Rate limited | European AI |
+| | OpenRouter | Pay-per-use | None | 100+ models aggr. |
+| **💰 CHEAP** | GLM-5 (via Z.AI) 🆕 | $0.5/1M | Daily 10AM | 128K output, newest flagship |
+| | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup |
+| | MiniMax M2.5 🆕 | $0.3/1M input | 5-hour rolling | Reasoning + agentic tasks |
+| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option |
+| | Kimi K2.5 (Moonshot API) 🆕 | Pay-per-use | None | Direct Moonshot API access |
+| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost |
+| **🆓 FREE** | iFlow | **$0** | Unlimited | 5 models unlimited |
+| | Qwen | **$0** | Unlimited | 4 models unlimited |
+| | Kiro | **$0** | Unlimited | Claude Sonnet/Haiku (AWS Builder) |
+| | LongCat Flash-Lite 🆕 | **$0** (50M tok/day 🔥) | 1 RPS | Largest free quota on Earth |
+| | Pollinations AI 🆕 | **$0** (no key needed) | 1 req/15s | GPT-5, Claude, DeepSeek, Llama 4 |
+| | Cloudflare Workers AI 🆕 | **$0** (10K Neurons/day) | ~150 resp/day | 50+ models, global edge |
+| | Scaleway AI 🆕 | **$0** (1M tokens total) | Rate limited | EU/GDPR, Qwen3 235B, Llama 70B |
-**💡 专业建议:** 从 Gemini CLI(每月 180K 免费)+ iFlow(无限免费)开始 = $0 成本!
+> 🆕 **New models added (Mar 2026):** Grok-4 Fast family at $0.20/$0.50/M (benchmarked at 1143ms — 30% faster than Gemini 2.5 Flash), GLM-5 via Z.AI with 128K output, MiniMax M2.5 reasoning, DeepSeek V3.2 updated pricing, Kimi K2.5 via Moonshot direct API.
+
+**💡 $0 Combo Stack — The Complete Free Setup:**
+
+```
+# 🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
+Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED
+Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key
+Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day
+Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day
+NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+```
+
+**Zero cost. Never stops coding.** Configure this as one OmniRoute combo and all fallbacks happen automatically — no manual switching ever.
---
-## 💡 核心功能
+---
-### 🧠 路由与智能
+## 🆓 Free Models — What You Actually Get
-| 功能 | 功能描述 |
-| ----------------------------- | ----------------------------------------------------------------------------- |
-| 🎯 **智能 4 层故障转移** | 自动路由:订阅 → API Key → 低价 → 免费 |
-| 📊 **实时配额追踪** | 实时 Token 计数 + 每个提供商的重置倒计时 |
-| 🔄 **格式转换** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro 无缝切换 |
-| 👥 **多账号支持** | 每个提供商多个账号,智能选择 |
-| 🔄 **自动令牌刷新** | OAuth 令牌自动刷新并重试 |
-| 🎨 **自定义组合** | 6 种策略:fill-first、round-robin、p2c、random、least-used、cost-optimized |
-| 🧩 **自定义模型** | 为任何提供商添加任何模型 ID |
-| 🌐 **通配符路由** | 动态路由 `provider/*` 模式到任何提供商 |
-| 🧠 **推理预算** | passthrough、auto、custom 和 adaptive 模式用于推理模型 |
-| 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
-| ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
-| 💬 **System Prompt 注入** | 全局 System Prompt 应用于所有请求 |
-| 📄 **Responses API** | 完整支持 OpenAI Responses API (`/v1/responses`) 用于 Codex |
+> All models below are **100% free with zero credit card required**. OmniRoute auto-routes between them when one quota runs out — combine them all for an unbreakable $0 combo.
-### 🎵 多模态 API
+### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
-| 功能 | 功能描述 |
-| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 🖼️ **图像生成** | `/v1/images/generations` — 4 个提供商,9+ 模型 |
-| 📐 **Embeddings** | `/v1/embeddings` — 6 个提供商,9+ 模型 |
-| 🎤 **音频转录** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
-| 🔊 **文字转语音** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
-| 🛡️ **内容审核** | `/v1/moderations` — 内容安全检查 |
-| 🔀 **重排序** | `/v1/rerank` — 文档相关性重排序 |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | --------------------- |
+| `claude-sonnet-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-haiku-4.5` | `kr/` | **Unlimited** | No reported daily cap |
+| `claude-opus-4.6` | `kr/` | **Unlimited** | Latest Opus via Kiro |
-### 🛡️ 弹性与安全
+### 🟢 IFLOW MODELS (Free OAuth — No Credit Card)
-| 功能 | 功能描述 |
-| ------------------------------- | ---------------------------------------------------------------------------- |
-| 🔌 **断路器** | 每个提供商自动打开/关闭,可配置阈值 |
-| 🛡️ **反惊群** | Mutex + 信号量限速用于 API Key 提供商 |
-| 🧠 **语义缓存** | 两层缓存(签名 + 语义)降低成本和延迟 |
-| ⚡ **请求幂等性** | 5 秒去重窗口防止重复请求 |
-| 🔒 **TLS 指纹伪装** | 通过 wreq-js 绕过基于 TLS 的机器人检测 |
-| 🌐 **IP 过滤** | 白名单/黑名单用于 API 访问控制 |
-| 📊 **可编辑速率限制** | 可配置的 RPM、最小间隔和最大并发 |
-| 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
-| 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------ | ------ | ------------- | --------------- |
+| `kimi-k2-thinking` | `if/` | **Unlimited** | No reported cap |
+| `qwen3-coder-plus` | `if/` | **Unlimited** | No reported cap |
+| `deepseek-r1` | `if/` | **Unlimited** | No reported cap |
+| `minimax-m2.1` | `if/` | **Unlimited** | No reported cap |
+| `kimi-k2` | `if/` | **Unlimited** | No reported cap |
-### 📊 可观察性与分析
+### 🟡 QWEN MODELS (Device Code Auth)
-| 功能 | 功能描述 |
-| -------------------------------- | ---------------------------------------------------- |
-| 📝 **请求日志** | 调试模式,完整的请求/响应日志 |
-| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
-| 💾 **SQLite 日志** | 持久化代理日志,服务器重启后仍然保留 |
-| 📊 **分析仪表板** | Recharts:统计卡片、使用量图表、提供商表格 |
-| 📈 **进度追踪** | 流式传输的 SSE 进度事件(可选) |
-| 🧪 **LLM 评估** | 黄金集测试,4 种匹配策略 |
-| 🔍 **请求遥测** | p50/p95/p99 延迟聚合 + X-Request-Id 追踪 |
-| 📋 **日志 + 配额** | 专用页面用于日志浏览和配额追踪 |
-| 🏥 **健康仪表板** | 运行时间、断路器状态、锁定、缓存统计 |
-| 💰 **成本追踪** | 预算管理 + 每模型定价配置 |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------- | ------ | ------------- | ------------------- |
+| `qwen3-coder-plus` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-flash` | `qw/` | **Unlimited** | No reported cap |
+| `qwen3-coder-next` | `qw/` | **Unlimited** | No reported cap |
+| `vision-model` | `qw/` | **Unlimited** | Multimodal (images) |
-### ☁️ 部署与同步
+### 🟣 GEMINI CLI (Google OAuth)
-| 功能 | 功能描述 |
-| --------------------- | ---------------------------------------------------------- |
-| 💾 **Cloud Sync** | 通过 Cloudflare Workers 在设备间同步配置 |
-| 🌐 **随处部署** | Localhost、VPS、Docker、Cloudflare Workers |
-| 🔑 **API Key 管理** | 按提供商生成、轮换和设定 API Key 范围 |
-| 🧙 **配置向导** | 4 步引导式设置,面向新用户 |
-| 🔧 **CLI 工具仪表板** | 一键配置 Claude、Codex、Cline、OpenClaw、Kilo、Antigravity |
-| 🔄 **数据库备份** | 自动备份和恢复所有设置 |
+| Model | Prefix | Limit | Rate Limit |
+| ------------------------ | ------ | --------------------------- | ------------- |
+| `gemini-3-flash-preview` | `gc/` | **180K tok/month** + 1K/day | Monthly reset |
+| `gemini-2.5-pro` | `gc/` | 180K/month (shared pool) | High quality |
+
+### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---------- | ------------ | ----------- | ------------------------------------------------------ |
+| Free (Dev) | No token cap | **~40 RPM** | 70+ models; transitioning to pure rate limits mid-2025 |
+
+Popular free models: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`
+
+### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ----------------- | ---------------- | ------------------------------------------- |
+| Free | **1M tokens/day** | 60K TPM / 30 RPM | World's fastest LLM inference; resets daily |
+
+Available free: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`
+
+### 🔴 GROQ (Free API Key — console.groq.com)
+
+| Tier | Daily Limit | Rate Limit | Notes |
+| ---- | ------------- | ---------------- | ----------------------------------------- |
+| Free | **14.4K RPD** | 30 RPM per model | No credit card; 429 on limit, not charged |
+
+Available free: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`
+
+### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
+
+| Model | Prefix | Daily Free Quota | Notes |
+| ----------------------------- | ------ | ----------------- | ----------------------- |
+| `LongCat-Flash-Lite` | `lc/` | **50M tokens** 💥 | Largest free quota ever |
+| `LongCat-Flash-Chat` | `lc/` | 500K tokens | Multi-turn chat |
+| `LongCat-Flash-Thinking` | `lc/` | 500K tokens | Reasoning / CoT |
+| `LongCat-Flash-Thinking-2601` | `lc/` | 500K tokens | Jan 2026 version |
+| `LongCat-Flash-Omni-2603` | `lc/` | 500K tokens | Multimodal |
+
+> 100% free while in public beta. Sign up at [longcat.chat](https://longcat.chat) with email or phone. Resets daily 00:00 UTC.
+
+### 🟢 POLLINATIONS AI (No API Key Required) 🆕
+
+| Model | Prefix | Rate Limit | Provider Behind |
+| ---------- | ------ | ---------- | ------------------ |
+| `openai` | `pol/` | 1 req/15s | GPT-5 |
+| `claude` | `pol/` | 1 req/15s | Anthropic Claude |
+| `gemini` | `pol/` | 1 req/15s | Google Gemini |
+| `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 |
+| `llama` | `pol/` | 1 req/15s | Meta Llama 4 Scout |
+| `mistral` | `pol/` | 1 req/15s | Mistral AI |
+
+> ✨ **Zero friction:** No signup, no API key. Add the Pollinations provider with an empty key field and it works immediately.
+
+### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
+
+| Tier | Daily Neurons | Equivalent Usage | Notes |
+| ---- | ------------- | --------------------------------------- | ----------------------- |
+| Free | **10,000** | ~150 LLM resp / 500s audio / 15K embeds | Global edge, 50+ models |
+
+Popular free models: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (free audio!), `@cf/qwen/qwen2.5-coder-15b-instruct`
+
+> Requires API Token + Account ID from [dash.cloudflare.com](https://dash.cloudflare.com). Store Account ID in provider settings.
+
+### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
+
+| Tier | Free Quota | Location | Notes |
+| ---- | ------------- | ------------ | ----------------------------------- |
+| Free | **1M tokens** | 🇫🇷 Paris, EU | No credit card needed within limits |
+
+Available free: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
+
+> EU/GDPR compliant. Get API key at [console.scaleway.com](https://console.scaleway.com).
+
+> **💡 The Ultimate Free Stack (11 Providers, $0 Forever):**
+>
+> ```
+> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
+> iFlow (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
+> LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥
+> Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed
+> Qwen (qw/) → qwen3-coder models UNLIMITED
+> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free
+> Cloudflare AI (cf/) → 50+ models — 10K Neurons/day
+> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU)
+> Groq (groq/) → Llama/Gemma — 14.4K req/day ultra-fast
+> NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever
+> Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
+> ```
+
+## 🎙️ Free Transcription Combo
+
+> Transcribe any audio/video for **$0** — Deepgram leads with $200 free, AssemblyAI $50 fallback, Groq Whisper as unlimited emergency backup.
+
+| Provider | Free Credits | Best Model | Rate Limit |
+| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
+| 🟢 **Deepgram** | **$200 free** (signup) | `nova-3` — best accuracy, 30+ languages | No RPM limit on free credits |
+| 🔵 **AssemblyAI** | **$50 free** (signup) | `universal-3-pro` — chapters, sentiment, PII | No RPM limit on free credits |
+| 🔴 **Groq** | **Free forever** | `whisper-large-v3` — OpenAI Whisper | 30 RPM (rate limited) |
+
+**Suggested combo in `/dashboard/combos`:**
+
+```
+Name: free-transcription
+Strategy: Priority
+Nodes:
+ [1] deepgram/nova-3 → uses $200 free first
+ [2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
+ [3] groq/whisper-large-v3 → free forever, emergency fallback
+```
+
+Then in `/dashboard/media` → **Transcription** tab: upload any audio or video file → select your combo endpoint → get transcription in supported formats.
+
+## 💡 Key Features
+
+OmniRoute v2.0 is built as an operational platform, not just a relay proxy.
+
+### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
+
+| Feature | What It Does |
+| ------------------------------------ | ------------------------------------------------------------------------------------------- |
+| ⚡ **Grok-4 Fast Family** | xAI models at $0.20/$0.50/M — benchmarked 1143ms (30% faster than Gemini 2.5 Flash) |
+| 🧠 **GLM-5 via Z.AI** | 128K output context, $0.5/1M — newest flagship from the GLM family |
+| 🔮 **MiniMax M2.5** | Reasoning + agentic tasks at $0.30/1M — significant upgrade from M2.1 |
+| 🎯 **toolCalling Flag per Model** | Per-model `toolCalling: true/false` in registry — AutoCombo skips non-tool-capable models |
+| 🌍 **Multilingual Intent Detection** | PT/ZH/ES/AR keywords in AutoCombo scoring — better model selection for non-English content |
+| 📊 **Benchmark-Driven Fallbacks** | Real p95 latency from live requests feeds combo scoring — AutoCombo learns from actual data |
+| 🔁 **Request Deduplication** | Content-hash based dedup window — multi-agent safe, prevents duplicate charges |
+| 🔌 **Pluggable RouterStrategy** | Extensible `RouterStrategy` interface — add custom routing logic as plugins |
+
+### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
+
+| Feature | What It Does |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
+| 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
+| 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 more), process spawner, `/api/acp/agents` endpoint |
+| 🤖 **ACP Agents Dashboard** | Debug › Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool. **OpenCode** users get a "Download opencode.json" button that auto-generates a ready-to-use config with all available models. |
+| 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
+| 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
+| 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
+
+### 🤖 Agent & Protocol Operations (v2.0)
+
+| Feature | What It Does |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 🔧 **MCP Server (16 tools)** | IDE/agent tools via 3 transports: stdio, SSE (`/api/mcp/sse`), Streamable HTTP (`/api/mcp/stream`) |
+| 🤝 **A2A Server (JSON-RPC + SSE)** | Agent-to-agent task execution with sync and streaming flows |
+| 🧭 **Consolidated Endpoints Page** | Tabbed management page with Endpoint Proxy, MCP, A2A, and API Endpoints tabs |
+| 🎚️ **Service Enable/Disable Toggles** | ON/OFF switches for MCP and A2A with settings persistence (default: OFF) |
+| 🛰️ **MCP Runtime Heartbeat** | Real process status (pid, uptime, heartbeat age, transport, scope mode) |
+| 📋 **MCP Audit Trail** | Filterable audit logs with success/failure and key attribution |
+| 🔐 **MCP Scope Enforcement** | 9 granular scope permissions for controlled tool access |
+| 📡 **A2A Task Lifecycle Management** | List/filter tasks, inspect events/artifacts, cancel running tasks |
+| 📋 **Agent Card Discovery** | `/.well-known/agent.json` for client auto-discovery |
+| 🧪 **Protocol E2E Test Harness** | Real MCP SDK + A2A client flows in `test:protocols:e2e` |
+| ⚙️ **Operational Controls** | Switch combo, apply resilience profiles, reset breakers from one control surface |
+
+### 🧠 Routing & Intelligence
+
+| Feature | What It Does |
+| ---------------------------------- | ------------------------------------------------------------------------ |
+| 🎯 **Smart 4-Tier Fallback** | Auto-route: Subscription → API Key → Cheap → Free |
+| 📊 **Real-Time Quota Tracking** | Live token count + reset countdown per provider |
+| 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Responses with schema-safe conversions |
+| 👥 **Multi-Account Support** | Multiple accounts per provider with intelligent selection |
+| 🔄 **Auto Token Refresh** | OAuth tokens refresh automatically with retry |
+| 🎨 **Custom Combos** | 6 balancing strategies + fallback chain control |
+| 🌐 **Wildcard Router** | `provider/*` dynamic routing |
+| 🧠 **Thinking Budget Controls** | Passthrough, auto, custom, and adaptive reasoning limits |
+| 🔀 **Model Aliases** | Built-in + custom model aliasing and migration safety |
+| ⚡ **Background Degradation** | Route low-priority background tasks to cheaper models |
+| 🧪 **Task-Aware Smart Routing** | Auto-select model by content type (coding/vision/analysis/summarization) |
+| 💬 **System Prompt Injection** | Global behavior controls applied consistently |
+| 📄 **Responses API Compatibility** | Full `/v1/responses` support for Codex and advanced agentic workflows |
+
+### 🎵 Multi-Modal APIs
+
+| Feature | What It Does |
+| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 🖼️ **Image Generation** | `/v1/images/generations` with cloud and local backends |
+| 📐 **Embeddings** | `/v1/embeddings` for search and RAG pipelines |
+| 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — 7 providers (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), auto-language detection, MP4/MP3/WAV support |
+| 🔊 **Text-to-Speech** | `/v1/audio/speech` — 10 providers (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) with correct error messages |
+| 🎬 **Video Generation** | `/v1/videos/generations` (ComfyUI + SD WebUI workflows) |
+| 🎵 **Music Generation** | `/v1/music/generations` (ComfyUI workflows) |
+| 🛡️ **Moderations** | `/v1/moderations` safety checks |
+| 🔀 **Reranking** | `/v1/rerank` for relevance scoring |
+| 🔍 **Web Search** 🆕 | `/v1/search` — 5 providers (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ free/month, auto-failover, cache |
+
+### 🛡️ Resilience, Security & Governance
+
+| Feature | What It Does |
+| ----------------------------------- | -------------------------------------------------------------------------------------- |
+| 🔌 **Circuit Breakers** | Per-model trip/recover with threshold controls |
+| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
+| 🛡️ **Anti-Thundering Herd** | Mutex + semaphore protections on retry/rate events |
+| 🧠 **Semantic + Signature Cache** | Cost/latency reduction with two cache layers |
+| ⚡ **Request Idempotency** | Duplicate protection window |
+| 🔒 **TLS Fingerprint Spoofing** | Browser-like TLS fingerprint — **reduces bot detection and account flagging** |
+| 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
+| 🌐 **IP Filtering** | Allowlist/blocklist control for exposed deployments |
+| 📊 **Editable Rate Limits** | Configurable global/provider-level limits with persistence |
+| 🔑 **API Key Management + Scoping** | Secure key issuance/rotation and model/provider controls |
+| 👁️ **Scoped API Key Reveal** 🆕 | Opt-in recovery of API keys via `ALLOW_API_KEY_REVEAL` |
+| 🛡️ **Protected `/models`** | Optional auth gating and provider hiding for model catalog |
+
+### 📊 Observability & Analytics
+
+| Feature | What It Does |
+| -------------------------------- | ----------------------------------------------------- |
+| 📝 **Request + Proxy Logging** | Full request/response and proxy logging |
+| 📉 **Streamed Detailed Logs** 🆕 | Reconstructs SSE payload streams cleanly into the UI |
+| 📋 **Unified Logs Dashboard** | Request, proxy, audit, and console views in one page |
+| 🔍 **Request Telemetry** | p50/p95/p99 latency and request tracing |
+| 🏥 **Health Dashboard** | Uptime, breaker states, lockouts, cache stats |
+| 💰 **Cost Tracking** | Budget controls and per-model pricing visibility |
+| 📈 **Analytics Visualizations** | Model/provider usage insights and trend views |
+| 🧪 **Evaluation Framework** | Golden set testing with configurable match strategies |
+| 📡 **Live Diagnostics** 🆕 | Semantic cache bypass for accurate combo live testing |
+
+### ☁️ Deployment & Platform
+
+| Feature | What It Does |
+| ----------------------------- | --------------------------------------------------------- |
+| 🌐 **Deploy Anywhere** | Localhost, VPS, Docker, Cloud environments |
+| 🚇 **Cloudflare Tunnel** 🆕 | One-click Quick Tunnel integration from the dashboard |
+| 💾 **Cloud Sync** | Configuration sync via cloud worker |
+| 🔄 **Backup/Restore** | Export/import and disaster recovery flows |
+| 🧙 **Onboarding Wizard** | First-run guided setup |
+| 🔧 **CLI Tools Dashboard** | One-click setup for popular coding tools |
+| 🎮 **Model Playground** | Test any provider/model/endpoint from the dashboard |
+| 🔏 **CLI Fingerprint Toggle** | Per-provider fingerprint matching in Settings > Security |
+| 🌐 **i18n (30 languages)** | Full dashboard + docs language support with RTL coverage |
+| 🧹 **Clear All Models** | One-click model list clearing in provider details |
+| 👁️ **Sidebar Controls** 🆕 | Hide components and integrations from Appearance Settings |
+| 📋 **Issue Templates** | Standardized GitHub templates for bugs and features |
+| 📂 **Custom Data Directory** | `DATA_DIR` override for storage location |
+
+### Feature Deep Dive
+
+#### Smart fallback with practical cost control
+
+```txt
+Combo: "my-coding-stack"
+ 1. cc/claude-opus-4-6
+ 2. nvidia/llama-3.3-70b
+ 3. glm/glm-4.7
+ 4. if/kimi-k2-thinking
+```
+
+When quota, rate, or health fails, OmniRoute automatically moves to the next candidate without manual switching.
+
+#### Protocol management that is visible and operable
+
+- MCP + A2A are discoverable in UI and docs (not hidden)
+- Protocol status APIs expose live operational data (`/api/mcp/*`, `/api/a2a/*`)
+- Dashboards include actions for day-2 ops (combo toggles, breaker resets, task cancellation)
+
+#### Translator + validation workflow
+
+The Translator area includes:
+
+- **Playground**: request transformation checks
+- **Chat Tester**: full request/response round-trip
+- **Test Bench**: multiple cases in one run
+- **Live Monitor**: real-time traffic view
+
+Plus protocol validation with real clients via `npm run test:protocols:e2e`.
+
+> 📖 **[MCP Server README](open-sse/mcp-server/README.md)** — Tool reference, IDE configs, and client examples
+>
+> 📖 **[A2A Server README](src/lib/a2a/README.md)** — Skills, JSON-RPC methods, streaming, and task lifecycle
+
+## 🧪 Evaluations (Evals)
+
+OmniRoute includes a built-in evaluation framework to test LLM response quality against a golden set. Access it via **Analytics → Evals** in the dashboard.
+
+### Built-in Golden Set
+
+The pre-loaded "OmniRoute Golden Set" contains test cases for:
+
+- Greetings, math, geography, code generation
+- JSON format compliance, translation, markdown generation
+- Safety refusal (harmful content), counting, boolean logic
+
+### Evaluation Strategies
+
+| Strategy | Description | Example |
+| ---------- | ------------------------------------------------ | -------------------------------- |
+| `exact` | Output must match exactly | `"4"` |
+| `contains` | Output must contain substring (case-insensitive) | `"Paris"` |
+| `regex` | Output must match regex pattern | `"1.*2.*3"` |
+| `custom` | Custom JS function returns true/false | `(output) => output.length > 10` |
+
+---
+
+## 📖 Setup Guide
+
+### Protocol Setup (MCP + A2A)
-📖 功能详情
+🧩 MCP Setup (Model Context Protocol)
-### 🎯 智能 4 层故障转移
+Start MCP transport in stdio mode:
-创建带自动故障转移的组合:
-
-```
-Combo: "my-coding-stack"
- 1. cc/claude-opus-4-6 (您的订阅)
- 2. nvidia/llama-3.3-70b (免费 NVIDIA API)
- 3. glm/glm-4.7 (便宜备用,$0.6/1M)
- 4. if/kimi-k2-thinking (免费后备)
-
-→ 配额用完或出错时自动切换
+```bash
+omniroute --mcp
```
-### 📊 实时配额追踪
+Recommended validation flow:
-- 每个提供商的 Token 消耗
-- 重置倒计时(5 小时、每日、每周)
-- 付费层级的成本估算
-- 月度支出报告
+1. Connect your MCP client over stdio.
+2. Run `omniroute_get_health`.
+3. Run `omniroute_list_combos`.
+4. Open `/dashboard/mcp` to confirm heartbeat, activity, and audit.
-### 🔄 格式转换
+Useful APIs for automation:
-格式间的无缝转换:
-
-- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
-- 您的 CLI 发送 OpenAI 格式 → OmniRoute 转换 → 提供商接收原生格式
-- 适用于任何支持自定义 OpenAI 端点的工具
-
-### 👥 多账号支持
-
-- 每个提供商添加多个账号
-- 自动轮询或基于优先级的路由
-- 当一个账号达到配额时自动切换到下一个
-
-### 🔄 自动令牌刷新
-
-- OAuth 令牌在过期前自动刷新
-- 无需手动重新认证
-- 所有提供商的无缝体验
-
-### 🎨 自定义组合
-
-- 创建无限模型组合
-- 6 种策略:fill-first、round-robin、power-of-two-choices、random、least-used、cost-optimized
-- 通过 Cloud Sync 在设备间共享组合
-
-### 🏥 健康仪表板
-
-- 系统状态(运行时间、版本、内存使用)
-- 每个提供商的断路器状态(Closed/Open/Half-Open)
-- 速率限制状态和活动锁定
-- 签名缓存统计
-- 延迟遥测(p50/p95/p99)+ 提示缓存
-- 一键重置健康状态
-
-### 🔧 翻译器 Playground
-
-- 调试、测试和可视化 API 格式转换
-- 发送请求并查看 OmniRoute 如何在提供商格式间转换
-- 对排查集成问题非常有价值
-
-### 💾 Cloud Sync
-
-- 在设备间同步提供商、组合和设置
-- 自动后台同步
-- 安全加密存储
+- `GET /api/mcp/status`
+- `GET /api/mcp/tools`
+- `GET /api/mcp/audit`
+- `GET /api/mcp/audit/stats`
-## 🧪 评估 (Evals)
+
+🤝 A2A Setup (Agent2Agent)
-OmniRoute 包含内置评估框架,用于针对黄金集测试 LLM 响应质量。通过仪表板中的 **Analytics → Evals** 访问。
+Discover the agent:
-### 内置黄金集
+```bash
+curl http://localhost:20128/.well-known/agent.json
+```
-预加载的「OmniRoute Golden Set」包含 10 个测试用例:
+Send a task:
-- 问候、数学、地理、代码生成
-- JSON 格式合规性、翻译、markdown
-- 安全拒绝(有害内容)、计数、布尔逻辑
+```bash
+curl -X POST http://localhost:20128/a2a \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
+```
-### 评估策略
+Manage lifecycle:
-| 策略 | 描述 | 示例 |
-| ---------- | -------------------------------- | -------------------------------- |
-| `exact` | 输出必须完全匹配 | `"4"` |
-| `contains` | 输出必须包含子串(不区分大小写) | `"Paris"` |
-| `regex` | 输出必须匹配正则表达式模式 | `"1.*2.*3"` |
-| `custom` | 自定义 JS 函数返回 true/false | `(output) => output.length > 10` |
+- `GET /api/a2a/status`
+- `GET /api/a2a/tasks`
+- `GET /api/a2a/tasks/:id`
+- `POST /api/a2a/tasks/:id/cancel`
----
+Operational UI:
-## 📖 设置指南
+- `/dashboard/a2a` for task/state/stream observability and smoke actions
+
+
-💳 订阅提供商
+🧪 End-to-end protocol validation
+
+Validate both protocols with real clients:
+
+```bash
+npm run test:protocols:e2e
+```
+
+This verifies:
+
+- MCP SDK client connect/list/call
+- A2A discovery/send/stream/get/cancel
+- Cross-check data in MCP audit and A2A task management APIs
+
+
+
+
+💳 Subscription Providers
### Claude Code (Pro/Max)
```bash
-仪表板 → 提供商 → 连接 Claude Code
-→ OAuth 登录 → 自动令牌刷新
-→ 5 小时 + 每周配额追踪
+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
```
-**专业建议:** 复杂任务用 Opus,追求速度用 Sonnet。OmniRoute 按模型追踪配额!
+**Pro Tip:** Use Opus for complex tasks, Sonnet for speed. OmniRoute tracks quota per model!
### OpenAI Codex (Plus/Pro)
```bash
-仪表板 → 提供商 → 连接 Codex
-→ OAuth 登录(端口 1455)
-→ 5 小时 + 每周重置
+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(免费 180K/月!)
+#### Codex Account Limit Management (5h + Weekly)
+
+Each Codex account now has policy toggles in `Dashboard -> Providers`:
+
+- `5h` (ON/OFF): enforce the 5-hour window threshold policy.
+- `Weekly` (ON/OFF): enforce the weekly window threshold policy.
+- Threshold behavior: when an enabled window reaches >=90% usage, that account is skipped.
+- Rotation behavior: OmniRoute routes to the next eligible Codex account automatically.
+- Reset behavior: when the provider `resetAt` time passes, the account becomes eligible again automatically.
+
+Scenarios:
+
+- `5h ON` + `Weekly ON`: account is skipped when either window reaches threshold.
+- `5h OFF` + `Weekly ON`: only weekly usage can block the account.
+- `5h ON` + `Weekly OFF`: only 5-hour usage can block the account.
+- `resetAt` passed: account re-enters rotation automatically (no manual re-enable).
+
+### Gemini CLI (FREE 180K/month!)
```bash
-仪表板 → 提供商 → 连接 Gemini CLI
+Dashboard → Providers → Connect Gemini CLI
→ Google OAuth
-→ 每月 180K completions + 每天 1K
+→ 180K completions/month + 1K/day
-模型:
+Models:
gc/gemini-3-flash-preview
gc/gemini-2.5-pro
```
-**最佳价值:** 巨大的免费额度!在付费层级之前使用。
+**Best Value:** Huge free tier! Use this before paid tiers.
### GitHub Copilot
```bash
-仪表板 → 提供商 → 连接 GitHub
-→ 通过 GitHub OAuth
-→ 每月重置(每月 1 日)
+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
@@ -1087,95 +1499,95 @@ OmniRoute 包含内置评估框架,用于针对黄金集测试 LLM 响应质
-🔑 API Key 提供商
+🔑 API Key Providers
-### NVIDIA NIM(免费 1000 积分!)
+### NVIDIA NIM (FREE developer access — 70+ models)
-1. 注册:[build.nvidia.com](https://build.nvidia.com)
-2. 获取免费 API key(包含 1000 推理积分)
-3. 仪表板 → 添加提供商 → NVIDIA NIM:
- - API Key:`nvapi-your-key`
+1. Sign up: [build.nvidia.com](https://build.nvidia.com)
+2. Get free API key (1000 inference credits included)
+3. Dashboard → Add Provider → NVIDIA NIM:
+ - API Key: `nvapi-your-key`
-**模型:** `nvidia/llama-3.3-70b-instruct`、`nvidia/mistral-7b-instruct` 及 50+ 更多
+**Models:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, and 50+ more
-**专业建议:** OpenAI 兼容的 API — 与 OmniRoute 的格式转换完美配合!
+**Pro Tip:** OpenAI-compatible API — works seamlessly with OmniRoute's format translation!
### DeepSeek
-1. 注册:[platform.deepseek.com](https://platform.deepseek.com)
-2. 获取 API key
-3. 仪表板 → 添加提供商 → DeepSeek
+1. Sign up: [platform.deepseek.com](https://platform.deepseek.com)
+2. Get API key
+3. Dashboard → Add Provider → DeepSeek
-**模型:** `deepseek/deepseek-chat`、`deepseek/deepseek-coder`
+**Models:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
-### Groq(免费层可用!)
+### Groq (Free Tier Available!)
-1. 注册:[console.groq.com](https://console.groq.com)
-2. 获取 API key(包含免费层)
-3. 仪表板 → 添加提供商 → Groq
+1. Sign up: [console.groq.com](https://console.groq.com)
+2. Get API key (free tier included)
+3. Dashboard → Add Provider → Groq
-**模型:** `groq/llama-3.3-70b`、`groq/mixtral-8x7b`
+**Models:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
-**专业建议:** 超快推理 — 最适合实时编程!
+**Pro Tip:** Ultra-fast inference — best for real-time coding!
-### OpenRouter(100+ 模型)
+### OpenRouter (100+ Models)
-1. 注册:[openrouter.ai](https://openrouter.ai)
-2. 获取 API key
-3. 仪表板 → 添加提供商 → OpenRouter
+1. Sign up: [openrouter.ai](https://openrouter.ai)
+2. Get API key
+3. Dashboard → Add Provider → OpenRouter
-**模型:** 通过一个 API key 访问所有主要提供商的 100+ 模型。
+**Models:** Access 100+ models from all major providers through a single API key.
-💰 低价提供商(备用)
+💰 Cheap Providers (Backup)
-### GLM-4.7(每日重置,$0.6/1M)
+### GLM-4.7 (Daily reset, $0.6/1M)
-1. 注册:[Zhipu AI](https://open.bigmodel.cn/)
-2. 从 Coding Plan 获取 API key
-3. 仪表板 → 添加 API Key:
- - 提供商:`glm`
- - API Key:`your-key`
+1. Sign up: [Zhipu AI](https://open.bigmodel.cn/)
+2. Get API key from Coding Plan
+3. Dashboard → Add API Key:
+ - Provider: `glm`
+ - API Key: `your-key`
-**使用:** `glm/glm-4.7`
+**Use:** `glm/glm-4.7`
-**专业建议:** Coding Plan 以 1/7 的价格提供 3 倍配额!每日 10:00 AM 重置。
+**Pro Tip:** Coding Plan offers 3× quota at 1/7 cost! Reset daily 10:00 AM.
-### MiniMax M2.1(5 小时重置,$0.20/1M)
+### MiniMax M2.1 (5h reset, $0.20/1M)
-1. 注册:[MiniMax](https://www.minimax.io/)
-2. 获取 API key
-3. 仪表板 → 添加 API Key
+1. Sign up: [MiniMax](https://www.minimax.io/)
+2. Get API key
+3. Dashboard → Add API Key
-**使用:** `minimax/MiniMax-M2.1`
+**Use:** `minimax/MiniMax-M2.1`
-**专业建议:** 长上下文(1M Token)最便宜的选项!
+**Pro Tip:** Cheapest option for long context (1M tokens)!
-### Kimi K2($9/月固定)
+### Kimi K2 ($9/month flat)
-1. 订阅:[Moonshot AI](https://platform.moonshot.ai/)
-2. 获取 API key
-3. 仪表板 → 添加 API Key
+1. Subscribe: [Moonshot AI](https://platform.moonshot.ai/)
+2. Get API key
+3. Dashboard → Add API Key
-**使用:** `kimi/kimi-latest`
+**Use:** `kimi/kimi-latest`
-**专业建议:** 固定 $9/月 10M Token = $0.90/1M 有效成本!
+**Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
-🆓 免费提供商(应急备用)
+🆓 FREE Providers (Emergency Backup)
-### iFlow(8 个免费模型)
+### iFlow (5 FREE models via OAuth)
```bash
-仪表板 → 连接 iFlow
-→ iFlow OAuth 登录
-→ 无限使用
+Dashboard → Connect iFlow
+→ iFlow OAuth login
+→ Unlimited usage
-模型:
+Models:
if/kimi-k2-thinking
if/qwen3-coder-plus
if/glm-4.7
@@ -1183,26 +1595,26 @@ OmniRoute 包含内置评估框架,用于针对黄金集测试 LLM 响应质
if/deepseek-r1
```
-### Qwen(3 个免费模型)
+### Qwen (4 FREE models via Device Code)
```bash
-仪表板 → 连接 Qwen
-→ 设备码授权
-→ 无限使用
+Dashboard → Connect Qwen
+→ Device code authorization
+→ Unlimited usage
-模型:
+Models:
qw/qwen3-coder-plus
qw/qwen3-coder-flash
```
-### Kiro(免费 Claude)
+### Kiro (Claude FREE)
```bash
-仪表板 → 连接 Kiro
-→ AWS Builder ID 或 Google/GitHub
-→ 无限使用
+Dashboard → Connect Kiro
+→ AWS Builder ID or Google/GitHub
+→ Unlimited usage
-模型:
+Models:
kr/claude-sonnet-4.5
kr/claude-haiku-4.5
```
@@ -1210,51 +1622,51 @@ OmniRoute 包含内置评估框架,用于针对黄金集测试 LLM 响应质
-🎨 创建组合
+🎨 Create Combos
-### 示例 1:最大化订阅 → 便宜备用
+### Example 1: Maximize Subscription → Cheap Backup
```
-仪表板 → 组合 → 创建新的
+Dashboard → Combos → Create New
-名称:premium-coding
-模型:
- 1. cc/claude-opus-4-6(订阅主力)
- 2. glm/glm-4.7(便宜备用,$0.6/1M)
- 3. minimax/MiniMax-M2.1(最便宜的后备,$0.20/1M)
+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)
-在 CLI 中使用:premium-coding
+Use in CLI: premium-coding
```
-### 示例 2:仅免费(零成本)
+### Example 2: Free-Only (Zero Cost)
```
-名称:free-combo
-模型:
- 1. gc/gemini-3-flash-preview(每月 180K 免费)
- 2. if/kimi-k2-thinking(无限制)
- 3. qw/qwen3-coder-plus(无限制)
+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)
-成本:永远 $0!
+Cost: $0 forever!
```
-🔧 CLI 集成
+🔧 CLI Integration
### Cursor IDE
```
-设置 → 模型 → 高级:
+Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
- OpenAI API Key: [从 OmniRoute 仪表板获取]
+ OpenAI API Key: [from OmniRoute dashboard]
Model: cc/claude-opus-4-6
```
### Claude Code
-使用仪表板中的 **CLI Tools** 页面一键配置,或手动编辑 `~/.claude/settings.json`。
+Use the **CLI Tools** page in the dashboard for one-click configuration, or edit `~/.claude/settings.json` manually.
### Codex CLI
@@ -1267,13 +1679,13 @@ codex "your prompt"
### OpenClaw
-**选项 1 — 仪表板(推荐):**
+**Option 1 — Dashboard (recommended):**
```
-仪表板 → CLI Tools → OpenClaw → 选择模型 → 应用
+Dashboard → CLI Tools → OpenClaw → Select Model → Apply
```
-**选项 2 — 手动:** 编辑 `~/.openclaw/openclaw.json`:
+**Option 2 — Manual:** Edit `~/.openclaw/openclaw.json`:
```json
{
@@ -1289,156 +1701,420 @@ codex "your prompt"
}
```
-> **注意:** OpenClaw 仅支持本地 OmniRoute。使用 `127.0.0.1` 而非 `localhost` 以避免 IPv6 解析问题。
+> **Note:** OpenClaw only works with local OmniRoute. Use `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues.
### Cline / Continue / RooCode
```
-设置 → API 配置:
- 提供商:OpenAI Compatible
+Settings → API Configuration:
+ Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
- API Key: [从 OmniRoute 仪表板获取]
+ API Key: [from OmniRoute dashboard]
Model: if/kimi-k2-thinking
```
+### OpenCode
+
+**Step 1:** Add OmniRoute as a custom provider:
+
+```bash
+opencode
+/connect
+# Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
+```
+
+**Step 2:** Create/edit `opencode.json` in your project root:
+
+```json
+{
+ "$schema": "https://opencode.ai/config.json",
+ "provider": {
+ "omniroute": {
+ "npm": "@ai-sdk/openai-compatible",
+ "name": "OmniRoute",
+ "options": {
+ "baseURL": "http://localhost:20128/v1"
+ },
+ "models": {
+ "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
+ "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
+ "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
+ }
+ }
+ }
+}
+```
+
+**Step 3:** Select the model in OpenCode:
+
+```bash
+/models
+# Select any OmniRoute model from the list
+```
+
+> **Tip:** Add any model available in your OmniRoute `/v1/models` endpoint to the `models` section. Use the format `provider/model-id` from your OmniRoute dashboard.
+
---
-## 🐛 故障排除
+## 故障排除
-点击展开故障排除指南
+Click to expand troubleshooting guide
**"Language model did not provide messages"**
-- 提供商配额已耗尽 → 检查仪表板配额追踪器
-- 解决方案:使用组合故障转移或切换到更便宜的层级
+- Provider quota exhausted → Check dashboard quota tracker
+- Solution: Use combo fallback or switch to cheaper tier
-**速率限制**
+**Rate limiting**
-- 订阅配额耗尽 → 回退到 GLM/MiniMax
-- 添加组合:`cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
+- Subscription quota out → Fallback to GLM/MiniMax
+- Add combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
-**OAuth 令牌过期**
+**OAuth token expired**
-- OmniRoute 自动刷新
-- 如果问题持续:仪表板 → 提供商 → 重新连接
+- Auto-refreshed by OmniRoute
+- If issues persist: Dashboard → Provider → Reconnect
-**高成本**
+**High costs**
-- 在仪表板 → 成本中检查使用统计
-- 将主要模型切换为 GLM/MiniMax
-- 对非关键任务使用免费层(Gemini CLI、iFlow)
+- Check usage stats in Dashboard → Costs
+- Switch primary model to GLM/MiniMax
+- Use free tier (Gemini CLI, iFlow) for non-critical tasks
-**仪表板在错误端口打开**
+**Dashboard/API ports are wrong**
-- 设置 `PORT=20128` 和 `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
+- `PORT` is the canonical base port (and API port by default)
+- `API_PORT` overrides only OpenAI-compatible API listener
+- `DASHBOARD_PORT` overrides only dashboard/Next.js listener
+- Set `NEXT_PUBLIC_BASE_URL` to your dashboard/public URL (for OAuth callbacks)
-**Cloud sync 错误**
+**Cloud sync errors**
-- 验证 `BASE_URL` 指向您正在运行的实例
-- 验证 `CLOUD_URL` 指向预期的云端点
-- 保持 `NEXT_PUBLIC_*` 值与服务器端值一致
+- Verify `BASE_URL` points to your running instance
+- Verify `CLOUD_URL` points to your expected cloud endpoint
+- Keep `NEXT_PUBLIC_*` values aligned with server-side values
-**首次登录不工作**
+**First login not working**
-- 检查 `.env` 中的 `INITIAL_PASSWORD`
-- 如未设置,默认密码为 `123456`
+- Check `INITIAL_PASSWORD` in `.env`
+- If unset, fallback password is `123456`
-**没有请求日志**
+**No request logs**
-- 在 `.env` 中设置 `ENABLE_REQUEST_LOGS=true`
+- Set `ENABLE_REQUEST_LOGS=true` in `.env`
-**兼容 OpenAI 的提供商连接测试显示 "Invalid"**
+**Connection test shows "Invalid" for OpenAI-compatible providers**
-- 许多提供商不暴露 `/models` 端点
-- OmniRoute v1.0.6+ 包含通过 chat completions 的回退验证
-- 确保 base URL 包含 `/v1` 后缀
+- Many providers don't expose a `/models` endpoint
+- OmniRoute v1.0.6+ includes fallback validation via chat completions
+- Ensure base URL includes `/v1` suffix
+
+### 🔐 OAuth on a Remote Server
+
+
+
+
+> **⚠️ Important for users running OmniRoute on a VPS, Docker, or any remote server**
+
+#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
+
+The **Antigravity** and **Gemini CLI** providers use **Google OAuth 2.0**. Google requires the `redirect_uri` in the OAuth flow to exactly match one of the pre-registered URIs in the app's Google Cloud Console.
+
+The OAuth credentials bundled in OmniRoute are registered **for `localhost` only**. When you access OmniRoute on a remote server (e.g. `https://omniroute.myserver.com`), Google rejects the authentication with:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solution: Configure your own OAuth credentials
+
+You need to create an **OAuth 2.0 Client ID** in Google Cloud Console with your server's URI.
+
+#### Step-by-step
+
+**1. Open Google Cloud Console**
+
+Go to: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Create a new OAuth 2.0 Client ID**
+
+- Click **"+ Create Credentials"** → **"OAuth client ID"**
+- Application type: **"Web application"**
+- Name: anything you like (e.g. `OmniRoute Remote`)
+
+**3. Add Authorized Redirect URIs**
+
+In the **"Authorized redirect URIs"** field, add:
+
+```
+https://your-server.com/callback
+```
+
+> Replace `your-server.com` with your server's domain or IP (include the port if needed, e.g. `http://45.33.32.156:20128/callback`).
+
+**4. Save and copy the credentials**
+
+After creating, Google will show the **Client ID** and **Client Secret**.
+
+**5. Set environment variables**
+
+In your `.env` (or Docker environment variables):
+
+```bash
+# For Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+
+# For Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
+```
+
+**6. Restart OmniRoute**
+
+```bash
+# npm:
+npm run dev
+
+# Docker:
+docker restart omniroute
+```
+
+**7. Try connecting again**
+
+Dashboard → Providers → Antigravity (or Gemini CLI) → OAuth
+
+Google will now redirect correctly to `https://your-server.com/callback`.
+
+---
+
+#### Temporary workaround (without custom credentials)
+
+If you don't want to set up your own credentials right now, you can still use the **manual URL flow**:
+
+1. OmniRoute opens the Google authorization URL
+2. After authorizing, Google tries to redirect to `localhost` (which fails on the remote server)
+3. **Copy the full URL** from your browser's address bar (even if the page doesn't load)
+4. Paste that URL into the field shown in the OmniRoute connection modal
+5. Click **"Connect"**
+
+> This works because the authorization code in the URL is valid regardless of whether the redirect page loaded.
+
+---
+
+
+🇧🇷 Versão em Português
+
+#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
+
+Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para 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.
+
+As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
+
+```
+Error 400: redirect_uri_mismatch
+```
+
+#### Solução: Configure suas próprias credenciais OAuth
+
+Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
+
+#### Passo a passo
+
+**1. Acesse o Google Cloud Console**
+
+Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
+
+**2. Crie um novo OAuth 2.0 Client ID**
+
+- Clique em **"+ Create Credentials"** → **"OAuth client ID"**
+- Tipo de aplicativo: **"Web application"**
+- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
+
+**3. Adicione as Authorized Redirect URIs**
+
+No campo **"Authorized redirect URIs"**, adicione:
+
+```
+https://seu-servidor.com/callback
+```
+
+> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
+
+**4. Salve e copie as credenciais**
+
+Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
+
+**5. Configure as variáveis de ambiente**
+
+No seu `.env` (ou nas variáveis de ambiente do Docker):
+
+```bash
+# Para Antigravity:
+ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
+ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+
+# Para Gemini CLI:
+GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
+GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
+```
+
+**6. Reinicie o OmniRoute**
+
+```bash
+# Se usando npm:
+npm run dev
+
+# Se usando Docker:
+docker restart omniroute
+```
+
+**7. Tente conectar novamente**
+
+Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
+
+Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
+
+---
+
+#### Workaround temporário (sem configurar credenciais próprias)
+
+Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
+
+1. O OmniRoute abrirá a URL de autorização do Google
+2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
+3. **Copie a URL completa** da barra de endereço do seu browser (mesmo que a página não carregue)
+4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
+5. Clique em **"Connect"**
+
+> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
---
-## 🛠️
+
-- **运行时**: Node.js 20+
-- **语言**: TypeScript 5.9 — `src/` 和 `open-sse/` 中 **100% TypeScript**(v1.0.6)
-- **框架**: Next.js 16 + React 19 + Tailwind CSS 4
-- **数据库**: LowDB (JSON) + SQLite(领域状态 + 代理日志)
-- **流式传输**: Server-Sent Events (SSE)
-- **认证**: OAuth 2.0 (PKCE) + JWT + API Keys
-- **测试**: Node.js test runner(368+ 单元测试)
-- **CI/CD**: GitHub Actions(发布时自动 npm 发布 + Docker Hub)
-- **网站**: [omniroute.online](https://omniroute.online)
-- **包**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
+## 🛠️ Tech Stack
+
+
+Click to expand tech stack details
+
+- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ is **not supported** — `better-sqlite3` native binaries are incompatible)
+- **Language**: TypeScript 5.9 — **100% TypeScript** across `src/` and `open-sse/` (zero `any` in core modules since v2.0)
+- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
+- **Database**: LowDB (JSON) + SQLite (domain state + proxy logs + MCP audit + routing decisions)
+- **Schemas**: Zod (MCP tool I/O validation, API contracts)
+- **Protocols**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
+- **Streaming**: Server-Sent Events (SSE)
+- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
+- **Testing**: Node.js test runner + Vitest (900+ tests including unit, integration, E2E)
+- **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
+- **Website**: [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)
-- **弹性**: 断路器、指数退避、反惊群、TLS 伪装
+- **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing
+
+
---
-## 📖 文档
+## 文档
-| 文档 | 描述 |
-| ----------------------------------- | ------------------------------------------------------ |
-| 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
-| [用户指南](docs/USER_GUIDE.md) | 提供商、组合、CLI 集成、部署 |
-| [API 参考](docs/API_REFERENCE.md) | 所有端点及示例 |
-| [故障排除](docs/TROUBLESHOOTING.md) | 常见问题和解决方案 |
-| [架构](docs/ARCHITECTURE.md) | 系统架构和内部机制 |
-| [贡献指南](CONTRIBUTING.md) | 开发设置和指南 |
-| [OpenAPI 规范](docs/openapi.yaml) | OpenAPI 3.0 规范 |
-| [安全策略](SECURITY.md) | 漏洞报告和安全实践 |
+| Document | Description |
+| ---------------------------------------------- | --------------------------------------------------- |
+| [User Guide](docs/USER_GUIDE.md) | Providers, combos, CLI integration, deployment |
+| [API Reference](docs/API_REFERENCE.md) | All endpoints with examples |
+| [MCP Server](open-sse/mcp-server/README.md) | 16 MCP tools, IDE configs, Python/TS/Go clients |
+| [A2A Server](src/lib/a2a/README.md) | JSON-RPC 2.0 protocol, skills, streaming, task mgmt |
+| [Auto-Combo Engine](docs/auto-combo.md) | 6-factor scoring, mode packs, self-healing |
+| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common problems and solutions |
+| [Architecture](docs/ARCHITECTURE.md) | System architecture and internals |
+| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
+| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 specification |
+| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
+| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Complete guide: VM + nginx + Cloudflare setup |
+| [Features Gallery](docs/FEATURES.md) | Visual dashboard tour with screenshots |
+| [Release Checklist](docs/RELEASE_CHECKLIST.md) | Pre-release validation steps |
---
-## 🗺️
+## 🗺️ Roadmap
-## 👥 贡献者
+OmniRoute has **210+ features planned** across multiple development phases. Here are the key areas:
+
+| Category | Planned Features | Highlights |
+| ----------------------------- | ---------------- | -------------------------------------------------------------------------------------- |
+| 🧠 **Routing & Intelligence** | 25+ | Lowest-latency routing, tag-based routing, quota preflight, P2C account selection |
+| 🔒 **Security & Compliance** | 20+ | SSRF hardening, credential cloaking, rate-limit per endpoint, management key scoping |
+| 📊 **Observability** | 15+ | OpenTelemetry integration, real-time quota monitoring, cost tracking per model |
+| 🔄 **Provider Integrations** | 20+ | Dynamic model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
+| ⚡ **Performance** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
+| 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
+
+### 🔜 Coming Soon
+
+- 🔗 **OpenCode Integration** — Native provider support for the OpenCode AI coding IDE
+- 🔗 **TRAE Integration** — Full support for the TRAE AI development framework
+- 📦 **Batch API** — Asynchronous batch processing for bulk requests
+- 🎯 **Tag-Based Routing** — Route requests based on custom tags and metadata
+- 💰 **Lowest-Cost Strategy** — Automatically select the cheapest available provider
+
+> 📝 Full feature specifications available in [`docs/new-features/`](docs/new-features/) (217 detailed specs)
+
+---
+
+## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
-### 如何贡献
+### How to Contribute
-1. Fork 仓库
-2. 创建功能分支(`git checkout -b feature/amazing-feature`)
-3. 提交更改(`git commit -m 'Add amazing feature'`)
-4. 推送到分支(`git push origin feature/amazing-feature`)
-5. 打开 Pull Request
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
-详细指南请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
+See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
-### 发布新版本
+### Releasing a New Version
```bash
-# 创建发布 — npm 发布自动完成
-gh release create v1.0.6 --title "v1.0.6" --generate-notes
+# Create a release — npm publish happens automatically
+gh release create v2.0.0 --title "v2.0.0" --generate-notes
```
---
-## 📊 Star 历史
+## 📊 Star History
## Stargazers over time
## [](https://starchart.cc/diegosouzapw/OmniRoute)
-## 🙏 致谢
+## 🙏 Acknowledgments
-特别感谢 **[decolua](https://github.com/decolua)** 的 **[9router](https://github.com/decolua/9router)** — 启发了本 fork 的原始项目。OmniRoute 在这个令人难以置信的基础上添加了额外功能、多模态 API 和完整的 TypeScript 重写。
+Special thanks to **[9router](https://github.com/decolua/9router)** by **[decolua](https://github.com/decolua)** — the original project that inspired this fork. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
-特别感谢 **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — 启发了本 JavaScript 移植的原始 Go 实现。
+Special thanks to **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — the original Go implementation that inspired this JavaScript port.
---
-## 📄 许可证
+## 许可证
-MIT 许可证 — 详见 [LICENSE](LICENSE)。
+MIT License - see [LICENSE](LICENSE) for details.
---
-
用 ❤️ 为 24/7 编程的开发者打造
+
Built with ❤️ for developers who code 24/7
omniroute.online
+
diff --git a/docs/i18n/zh-CN/docs/FEATURES.md b/docs/i18n/zh-CN/docs/FEATURES.md
new file mode 100644
index 0000000000..ce4fb41a05
--- /dev/null
+++ b/docs/i18n/zh-CN/docs/FEATURES.md
@@ -0,0 +1,145 @@
+# OmniRoute — Dashboard Features Gallery (中文(简体))
+
+🌐 **Languages:** 🇺🇸 [English](../../../../docs/FEATURES.md) · 🇪🇸 [es](../../es/docs/FEATURES.md) · 🇫🇷 [fr](../../fr/docs/FEATURES.md) · 🇩🇪 [de](../../de/docs/FEATURES.md) · 🇮🇹 [it](../../it/docs/FEATURES.md) · 🇷🇺 [ru](../../ru/docs/FEATURES.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/FEATURES.md) · 🇯🇵 [ja](../../ja/docs/FEATURES.md) · 🇰🇷 [ko](../../ko/docs/FEATURES.md) · 🇸🇦 [ar](../../ar/docs/FEATURES.md) · 🇮🇳 [in](../../in/docs/FEATURES.md) · 🇹🇭 [th](../../th/docs/FEATURES.md) · 🇻🇳 [vi](../../vi/docs/FEATURES.md) · 🇮🇩 [id](../../id/docs/FEATURES.md) · 🇲🇾 [ms](../../ms/docs/FEATURES.md) · 🇳🇱 [nl](../../nl/docs/FEATURES.md) · 🇵🇱 [pl](../../pl/docs/FEATURES.md) · 🇸🇪 [sv](../../sv/docs/FEATURES.md) · 🇳🇴 [no](../../no/docs/FEATURES.md) · 🇩🇰 [da](../../da/docs/FEATURES.md) · 🇫🇮 [fi](../../fi/docs/FEATURES.md) · 🇵🇹 [pt](../../pt/docs/FEATURES.md) · 🇷🇴 [ro](../../ro/docs/FEATURES.md) · 🇭🇺 [hu](../../hu/docs/FEATURES.md) · 🇧🇬 [bg](../../bg/docs/FEATURES.md) · 🇸🇰 [sk](../../sk/docs/FEATURES.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/FEATURES.md) · 🇮🇱 [he](../../he/docs/FEATURES.md) · 🇵🇭 [phi](../../phi/docs/FEATURES.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/FEATURES.md)
+
+---
+
+Visual guide to every section of the OmniRoute dashboard.
+
+---
+
+## 🔌 Providers
+
+Manage AI provider connections: OAuth providers (Claude Code, Codex, Gemini CLI), API key providers (Groq, DeepSeek, OpenRouter), and free providers (iFlow, Qwen, Kiro). Kiro accounts include credit balance tracking — remaining credits, total allowance, and renewal date visible in Dashboard → Usage.
+
+
+
+---
+
+## 🎨 Combos
+
+Create model routing combos with 6 strategies: priority, weighted, round-robin, random, least-used, and cost-optimized. Each combo chains multiple models with automatic fallback and includes quick templates and readiness checks.
+
+
+
+---
+
+## 📊 Analytics
+
+Comprehensive usage analytics with token consumption, cost estimates, activity heatmaps, weekly distribution charts, and per-provider breakdowns.
+
+
+
+---
+
+## 🏥 System Health
+
+Real-time monitoring: uptime, memory, version, latency percentiles (p50/p95/p99), cache statistics, and provider circuit breaker states.
+
+
+
+---
+
+## 🔧 Translator Playground
+
+Four modes for debugging API translations: **Playground** (format converter), **Chat Tester** (live requests), **Test Bench** (batch tests), and **Live Monitor** (real-time stream).
+
+
+
+---
+
+## 🎮 Model Playground _(v2.0.9+)_
+
+Test any model directly from the dashboard. Select provider, model, and endpoint, write prompts with Monaco Editor, stream responses in real-time, abort mid-stream, and view timing metrics.
+
+---
+
+## 🎨 Themes _(v2.0.5+)_
+
+Customizable color themes for the entire dashboard. Choose from 7 preset colors (Coral, Blue, Red, Green, Violet, Orange, Cyan) or create a custom theme by picking any hex color. Supports light, dark, and system mode.
+
+---
+
+## ⚙️ Settings
+
+Comprehensive settings panel with tabs:
+
+- **General** — System storage, backup management (export/import database)
+- **Appearance** — Theme selector (dark/light/system), color theme presets and custom colors, health log visibility, sidebar item visibility controls
+- **Security** — API endpoint protection, custom provider blocking, IP filtering, session info
+- **Routing** — Model aliases, background task degradation
+- **Resilience** — Rate limit persistence, circuit breaker tuning
+- **Advanced** — Configuration overrides
+
+
+
+---
+
+## 🔧 CLI Tools
+
+One-click configuration for AI coding tools: Claude Code, Codex CLI, Gemini CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor, and Factory Droid. Features automated config apply/reset, connection profiles, and model mapping.
+
+
+
+---
+
+## 🤖 CLI Agents _(v2.0.11+)_
+
+Dashboard for discovering and managing CLI agents. Shows a grid of 14 built-in agents (Codex, Claude, Goose, Gemini CLI, OpenClaw, Aider, OpenCode, Cline, Qwen Code, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp) with:
+
+- **Installation status** — Installed / Not Found with version detection
+- **Protocol badges** — stdio, HTTP, etc.
+- **Custom agents** — Register any CLI tool via form (name, binary, version command, spawn args)
+- **CLI Fingerprint Matching** — Per-provider toggle to match native CLI request signatures, reducing ban risk while preserving proxy IP
+
+---
+
+## 🖼️ Media _(v2.0.3+)_
+
+Generate images, videos, and music from the dashboard. Supports OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open, and MusicGen.
+
+---
+
+## 📝 Request Logs
+
+Real-time request logging with filtering by provider, model, account, and API key. Shows status codes, token usage, latency, and response details.
+
+
+
+---
+
+## 🌐 API Endpoint
+
+Your unified API endpoint with capability breakdown: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations, and registered API keys. Cloudflare Quick Tunnel integration and cloud proxy support for remote access.
+
+
+
+---
+
+## 🔑 API Key Management
+
+Create, scope, and revoke API keys. Each key can be restricted to specific models/providers with full access or read-only permissions. Visual key management with usage tracking.
+
+---
+
+## 📋 Audit Log
+
+Administrative action tracking with filtering by action type, actor, target, IP address, and timestamp. Full security event history.
+
+---
+
+## 🖥️ Desktop Application
+
+Native Electron desktop app for Windows, macOS, and Linux. Run OmniRoute as a standalone application with system tray integration, offline support, auto-update, and one-click install.
+
+Key features:
+
+- Server readiness polling (no blank screen on cold start)
+- System tray with port management
+- Content Security Policy
+- Single-instance lock
+- Auto-update on restart
+- Platform-conditional UI (macOS traffic lights, Windows/Linux default titlebar)
+- Hardened Electron build packaging — symlinked `node_modules` in the standalone bundle is detected and rejected before packaging, preventing runtime dependency on the build machine (v2.5.5+)
+
+📖 See [`electron/README.md`](../electron/README.md) for full documentation.
diff --git a/docs/openapi.yaml b/docs/openapi.yaml
index eebf8d849c..6c27c706c0 100644
--- a/docs/openapi.yaml
+++ b/docs/openapi.yaml
@@ -1,7 +1,7 @@
openapi: 3.1.0
info:
title: OmniRoute API
- version: 3.3.1
+ version: 3.3.2
description: |
OmniRoute is a local-first AI API proxy router. It provides an OpenAI-compatible
endpoint that routes requests to multiple AI providers with load balancing,
diff --git a/package-lock.json b/package-lock.json
index 6004a1ad94..fd63879e90 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "omniroute",
- "version": "3.3.1",
+ "version": "3.3.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "omniroute",
- "version": "3.3.1",
+ "version": "3.3.2",
"hasInstallScript": true,
"license": "MIT",
"workspaces": [
diff --git a/package.json b/package.json
index 710a594aa6..0e999354dc 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "omniroute",
- "version": "3.3.1",
+ "version": "3.3.2",
"description": "Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",
"type": "module",
"bin": {