Find a file
diegosouzapw 8066e823ff fix(opencode-plugin): honor geminiSanitization & fetchInterceptor feature flags
Review follow-up: createOmniRouteAuthHook ignored opts.features and always
composed createGeminiSanitizingFetch(createOmniRouteFetchInterceptor(...)).
The flags were documented and schema-validated but silently no-ops. Now each
fetch layer is gated by its flag (both default ON, matching the plugin's
features.X !== false convention); disabling both falls back to the SDK default
fetch. Adds gating tests. Also drops the vestigial release/v3.8.1 from the CI
branch filter (this package only exists from release/v3.8.2).
2026-05-21 23:20:57 -03:00
.agents feat(executors): forward OpenCode client headers to upstream providers (#2538) 2026-05-21 23:18:06 -03:00
.claude/commands feat(executors): forward OpenCode client headers to upstream providers (#2538) 2026-05-21 23:18:06 -03:00
.github fix(opencode-plugin): honor geminiSanitization & fetchInterceptor feature flags 2026-05-21 23:20:57 -03:00
.husky feat(cli): fase 8.3 — i18n completude e linter check-cli-i18n 2026-05-15 03:52:13 -03:00
.semgrep/rules fix(playground): guard ChatPlayground filteredModels for non-string ids 2026-05-20 00:43:15 -03:00
.vscode Release v3.8.1 (#2441) 2026-05-21 01:29:12 -03:00
@omniroute fix(opencode-plugin): honor geminiSanitization & fetchInterceptor feature flags 2026-05-21 23:20:57 -03:00
bin Merge remote-tracking branch 'origin/release/v3.8.2' into worktree-fix-batch-v3.8.2-r3 2026-05-21 22:57:56 -03:00
config feat(i18n): add Azerbaijani (az 🇦🇿) language support 2026-05-15 01:14:43 -03:00
docs Merge remote-tracking branch 'origin/release/v3.8.2' into worktree-fix-batch-v3.8.2-r3 2026-05-21 22:57:56 -03:00
electron fix(release): repair v3.8.2 release-prep — providers.ts syntax + CHANGELOG/i18n/version sync 2026-05-21 19:37:54 -03:00
examples/omniroute-cmd-hello feat(cli): fase 9.4 — plugin system (omniroute-cmd-*) 2026-05-15 05:11:18 -03:00
images docs/ux(release): tier marketing, onboarding tour, comparison, and v3.8.0 changelog 2026-05-15 01:04:15 -03:00
open-sse feat(executors): forward OpenCode client headers to upstream providers (#2538) 2026-05-21 23:18:06 -03:00
package Release v3.8.1 (#2441) 2026-05-21 01:29:12 -03:00
public feat(providers): add 14 free-tier providers — Chinese regional + dev tools (Wave 1b) (#2488) 2026-05-21 18:13:15 -03:00
scripts Release v3.8.1 (#2441) 2026-05-21 01:29:12 -03:00
skills feat(skills): add 5 CLI skills + AgentSkills / OmniSkills dashboard pages (#2284) 2026-05-15 12:48:54 -03:00
src feat(executors): forward OpenCode client headers to upstream providers (#2538) 2026-05-21 23:18:06 -03:00
tests feat(executors): forward OpenCode client headers to upstream providers (#2538) 2026-05-21 23:18:06 -03:00
.dockerignore fix(docker): ship Dashboard Docs markdown in the container image (#2348) 2026-05-18 09:09:45 -03:00
.env.example Merge remote-tracking branch 'origin/release/v3.8.2' into fix/memory-system-role-semantic-passthrough 2026-05-21 22:43:52 -03:00
.gitignore chore(repo): untrack _ideia/ — private draft dir, local-only repo 2026-05-21 23:09:31 -03:00
.i18n-state.json fix: persist STORAGE_ENCRYPTION_KEY across upgrades (closes #1622) (#2428) 2026-05-20 08:34:13 -03:00
.node-version feat: add Node.js 24 LTS (Krypton) support (#1340) 2026-04-16 14:29:29 -03:00
.npmignore refactor(@omniroute/opencode-provider): rewrite for schema correctness + publishability 2026-05-14 16:58:33 -03:00
.npmrc fix(mitm): harden packaged runtime and privileged command execution 2026-04-25 00:31:43 -03:00
.nvmrc feat: add Node.js 24 LTS (Krypton) support (#1340) 2026-04-16 14:29:29 -03:00
AGENTS.md feat(executors): forward OpenCode client headers to upstream providers (#2538) 2026-05-21 23:18:06 -03:00
CHANGELOG.md docs(changelog): add round-4 PR entries (9 PRs merged) 2026-05-21 23:20:37 -03:00
CLAUDE.md chore(claude): add Hard Rule #16 — no Co-Authored-By in commits 2026-05-15 02:55:44 -03:00
CODE_OF_CONDUCT.md docs(release): v3.8.0 documentation overhaul (FIX 1-9) 2026-05-13 08:23:02 -03:00
CONTRIBUTING.md Release v3.8.1 (#2441) 2026-05-21 01:29:12 -03:00
docker-compose.prod.yml fix(playground): guard ChatPlayground filteredModels for non-string ids 2026-05-20 00:43:15 -03:00
docker-compose.yml fix(docker): restore cliproxyapi sidecar profile 2026-05-20 09:47:53 -03:00
Dockerfile Release v3.8.1 (#2441) 2026-05-21 01:29:12 -03:00
docs-overview.png Feat/docs site overhaul (#1976) 2026-05-05 12:34:04 -03:00
eslint.config.mjs fix(playground): guard ChatPlayground filteredModels for non-string ids 2026-05-20 00:43:15 -03:00
fly.toml chore(deploy): keep fork fly.toml 2026-04-02 20:37:54 +08:00
GEMINI.md Merge FASE 3: docs restructure into 8 subfolders 2026-05-13 16:10:49 -03:00
LICENSE feat: OmniRoute v1.0.0 — Intelligent AI Gateway & Universal LLM Proxy 2026-02-18 00:02:15 -03:00
llm.txt Release v3.8.1 (#2441) 2026-05-21 01:29:12 -03:00
news.json Set active status to false in news.json 2026-04-28 20:48:08 -03:00
next.config.mjs fix(deepseek-web): fix SSE parser, prompt format, and error handling (#2502) 2026-05-21 18:25:52 -03:00
package-lock.json fix(release): repair v3.8.2 release-prep — providers.ts syntax + CHANGELOG/i18n/version sync 2026-05-21 19:37:54 -03:00
package.json fix(release): repair v3.8.2 release-prep — providers.ts syntax + CHANGELOG/i18n/version sync 2026-05-21 19:37:54 -03:00
playwright.config.ts refactor(scripts): organize into build/dev/check/docs/i18n/ad-hoc subfolders 2026-05-13 10:14:25 -03:00
postcss.config.mjs feat: OmniRoute v1.0.0 — Intelligent AI Gateway & Universal LLM Proxy 2026-02-18 00:02:15 -03:00
prettier.config.mjs feat: OmniRoute v1.0.0 — Intelligent AI Gateway & Universal LLM Proxy 2026-02-18 00:02:15 -03:00
README.md docs: redesign README — marketing-first layout, accurate counts & combos flagship (#2490) 2026-05-21 23:18:43 -03:00
README_REDESIGN_MANUAL.md fix(deepseek-web): fix SSE parser, prompt format, and error handling (#2502) 2026-05-21 18:25:52 -03:00
recent_issues.jsonl fix(auth): implement session affinity sticky routing logic 2026-05-04 21:02:41 -03:00
SECURITY.md feat(authz): manage-scope API keys may reach /api/mcp/* from non-loopback (#2473) 2026-05-21 18:23:39 -03:00
sonar-project.properties fix(providers): refresh web client user agents (#1699) 2026-04-28 02:41:19 -03:00
test-debug.ts fix(providers): add missing isLocalProvider import and update changelog 2026-05-19 10:12:56 -03:00
tsconfig.json Release v3.7.5 (#1753) 2026-04-30 01:27:03 -03:00
tsconfig.typecheck-core.json refactor: harden open-sse services, eliminate any casts, add dashboard pages 2026-03-04 19:38:34 -03:00
tsconfig.typecheck-noimplicit-core.json feat: v2.0.0 - MCP server, A2A agent, proxy improvements and docs update 2026-03-05 01:16:56 -03:00
Tuto_Qdrant.md refactor: update root .md / .agents / .claude doc-path references 2026-05-13 13:12:30 -03:00
vitest.config.ts fix(auto): address PR #2131 review issues 2026-05-11 01:49:10 +07:00
vitest.mcp.config.ts feat(auto): complete zero-config auto-routing feature 2026-05-11 01:49:10 +07:00

OmniRoute Dashboard

🚀 OmniRoute — The Free AI Gateway

Never stop coding. Connect every AI tool to 177 providers50+ free — through one endpoint.

Plug Claude Code, Codex, Cursor, Cline, Copilot & Antigravity into FREE Claude / GPT / Gemini. Auto-fallback.

RTK + Caveman compression saves 1595% tokens. Never hit limits.


177 AI Providers 50+ Free Token Savings 14 Strategies $0 to start

diegosouzapw%2FOmniRoute | Trendshift

npm License: MIT Node Stars

npm version NPM Monthly Docker Hub Docker Pulls Electron Downloads Website


🚀 Quick Start🎯 Combos🌐 Providers🔌 CLI & MCP🗜️ Compression🌍 Website💬 WhatsApp 🌍💬 WhatsApp 🇧🇷

💥 The Promise🤔 Why🏆 What Sets Apart🤖 Compatible CLIs🖥️ Where It Runs🔒 Private🎬 In Action📚 Explore More📧 Support


💥 The Promise

One endpoint. 177 providers. Never stop building — and let OmniRoute pick the cheapest one that works.

🚫 Never hit limits
Auto-fallback across 177 providers in milliseconds. Quota out? Next provider takes over — zero downtime.
💸 Save up to 95% tokens
RTK + Caveman stacked compression cuts 1595% of eligible tokens (~89% avg on tool-heavy sessions).
🆓 $0 to start
50+ providers with a free tier, 11 free forever (Kiro, Qoder, Pollinations, LongCat…). No card needed.
🔌 Every tool works
16+ coding agents — Claude Code, Codex, Cursor, Cline, Copilot, Antigravity — through one config.
🧩 One endpoint
OpenAI ↔ Claude ↔ Gemini ↔ Responses API translation. Point any tool at /v1 and it just works.
🛡️ Production-grade
Circuit breakers, TLS stealth, MCP (37 tools), A2A, memory, guardrails, evals. 4,690+ tests.


🤔 Why OmniRoute?

Stop juggling 10 dashboards, dead API keys, and surprise bills.

The daily pain How OmniRoute fixes it
📉 Subscription quota expires unused every month Maximize subscriptions — track quota, use every token before reset
🛑 Rate limits stop you mid-coding 4-tier auto-fallback — Subscription → API → Cheap → Free, in milliseconds
🔥 Tool outputs (git diff, grep, logs) burn tokens RTK + Caveman compression — save 1595% eligible tokens per request
💸 Expensive APIs ($2050/mo per provider) Cost-optimized routing — auto-route to the cheapest viable model
🧰 Each AI tool wants its own setup One endpoint, every tool, one dashboard
🌍 AI blocked in your country 3-level proxy + TLS fingerprint stealth — use AI from anywhere
┌──────────────────────────────────────────────────────────┐
│        Your IDE / CLI  (Claude Code, Cursor, Cline…)       │
└─────────────────────────┬──────────────────────────────────┘
                          │ http://localhost:20128/v1
                          ▼
┌──────────────────────────────────────────────────────────┐
│                  OmniRoute — Smart Router                  │
│  RTK + Caveman compression · 14 routing strategies         │
│  Circuit breakers · TLS stealth · MCP · A2A · Guardrails   │
└─────────────────────────┬──────────────────────────────────┘
        ┌─────────────┬────┴────────┬─────────────┐
        ▼ Tier 1      ▼ Tier 2      ▼ Tier 3       ▼ Tier 4
   SUBSCRIPTION     API KEY        CHEAP          FREE
   Claude Code,     DeepSeek,      GLM $0.5,      Kiro, Qoder,
   Codex, Copilot   Groq, xAI      MiniMax $0.2   Pollinations
   quota out? ───▶  budget hit? ─▶ budget hit? ─▶ always on

🎯 Combos — The Flagship

A combo is a chain of models OmniRoute routes across automatically. Quota runs out, a provider fails, or costs spike — the combo silently slides to the next model. This is what makes OmniRoute unbreakable. 🛡️

Zero-config — just use auto

No combo to create. Set your model to auto (or a variant) and OmniRoute builds a virtual combo from your connected providers, scored live:

Model ID What it optimizes for
auto 🎯 Balanced default (LKGP — sticks to your last good provider)
auto/coding 🧑‍💻 Quality-first weights for code generation
auto/fast Lowest latency first
auto/cheap 💰 Cheapest per token first
auto/offline 🔋 Most quota / rate-limit headroom first
auto/smart 🔭 Quality-first + 10% exploration to discover better models

🔀 Or build your own — 14 routing strategies

Goal Strategy / combo
🥇 Drain my subscription before paying priority / fill-first
⚖️ Spread load across accounts round-robin · weighted · p2c · least-used
💸 Always cheapest viable model cost-optimized · auto/cheap
🧠 Hand off long context between models context-relay · context-optimized
🎲 Randomized / privacy routing random · strict-random
🤖 Just make it smart auto (9-factor scoring) · lkgp · reset-aware

The Auto-Combo engine scores every candidate on 9 factors (health, quota, cost, latency, success rate, freshness…) — see docs/routing/AUTO-COMBO.md.

🧱 Resilience is built in (3 independent layers)

Layer Scope What it does
🔌 Circuit breaker whole provider Stops hammering a provider that's failing upstream; auto-probes to recover
💤 Connection cooldown one account / key Skips a rate-limited key while other keys keep serving
🎯 Model lockout provider + model Quarantines just one quota-limited model, not the whole connection
Combo: "always-on"                         Strategy: priority
  1. cc/claude-opus-4-7   ← subscription (use it fully)
  2. cx/gpt-5.5           ← second subscription
  3. glm/glm-5.1          ← cheap backup ($0.5/1M)
  4. kr/claude-sonnet-4.5 ← FREE, unlimited (never fails)
Result: 4 layers of fallback = zero downtime

📖 Auto-Combo Engine · Resilience Guide


🏆 What Sets OmniRoute Apart

Feature OmniRoute Other routers
🌐 Providers 177 20100
🆓 Free providers 50+ (11 free forever) 15
🔀 Routing strategies 14 (priority, weighted, cost-optimized, context-relay…) 13
🗜️ Token compression RTK + Caveman stacked (1595%) None / 2040%
🧰 Built-in MCP server 37 tools, 3 transports, 13 scopes Rare
🤝 A2A agent protocol 5 skills, JSON-RPC 2.0 None
🧠 Memory (FTS5 + vector) Yes Rare
🛡️ Guardrails (PII, injection, vision) Yes Rare
☁️ Cloud agents Codex, Devin, Jules None
🥷 TLS fingerprint stealth JA3/JA4 via wreq-js None
🖥️ Multi-platform Web · Desktop · Termux · PWA Web only
🌍 i18n 40+ locales 04

📊 Detailed comparison vs LiteLLM, OpenRouter & Portkey → docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md


🤖 Compatible CLIs & Coding Agents

One config — http://localhost:20128/v1 — and every AI IDE or CLI runs on free & low-cost models.

Claude Code
Claude Code
Codex CLI
Codex CLI
Gemini CLI
Gemini CLI
Cursor
Cursor
Copilot
Copilot
Continue
Continue
OpenCode
OpenCode
Kilo Code
Kilo Code
Droid
Droid
OpenClaw
OpenClaw
Kiro
Kiro
Command Code
Command
also works with · Cline · Antigravity · Windsurf · AMP · Hermes · Qwen CLI · Roo · Continue · any OpenAI-compatible tool

📖 Per-tool setup for all 16+ tools → docs/CLI-TOOLS.md · 🧩 OpenCode plugin → @omniroute/opencode-provider


🌐 177 AI Providers — 50+ Free

The most complete catalog of any open-source router: 177 providers, 50+ with a free tier, 11 free forever.

🆓 Free Forever — $0, no card

AgentRouter
GPT-5, Claude, Gemini
$100 free credits
Qoder AI
Kimi-K2, DeepSeek-R1
Unlimited FREE
Pollinations
GPT-5, Claude, Llama 4
No key needed
LongCat
Flash-Lite
50M tokens/day 🔥
Cloudflare AI
50+ models
10K neurons/day
Gemini CLI
gemini-3-flash
180K/mo free
NVIDIA NIM
129 models
~40 RPM free
Cerebras
Qwen3 235B
1M tokens/day

📖 Full machine-readable catalog → docs/reference/PROVIDER_REFERENCE.md


🖥️ Where OmniRoute Runs — Anywhere

Same app, your machine, your rules. From a global npm install to your phone via Termux.

Platform Install Highlights
📦 npm (global) npm install -g omniroute One command, any OS
🐳 Docker docker run … diegosouzapw/omniroute Multi-arch AMD64 + ARM64
🖥️ Desktop (Electron) npm run electron:build Native window + system tray — Windows / macOS / Linux
💪 ARM native arm64 Raspberry Pi, ARM servers, Apple Silicon
📱 Android (Termux) pkg install nodejs-lts && npx -y omniroute Runs on your phone, 24/7, no root
📲 PWA "Add to Home Screen" Fullscreen, offline, installable from browser
🧩 OpenCode plugin @omniroute/opencode-provider Native OpenCode integration
🛠️ From source npm install && npm run dev Hack on it, contribute

📖 Docker Guide · Desktop · Termux · PWA · OpenCode


🔒 Private & Local-First

Your keys, your machine, your data. OmniRoute is a local proxy — it never phones home.

  • 🏠 Runs 100% on your hardware — npm, Docker, desktop, or your phone. No OmniRoute cloud sits in the request path.
  • 🔐 Credentials encrypted at rest — API keys & OAuth tokens sealed with AES-256-GCM.
  • 🚫 Zero telemetry by default — your prompts go only to the providers you choose, nowhere else.
  • 🛡️ Hardened gateway — API-key scoping, IP filtering, rate limits, prompt-injection guard, loopback-only process routes.
  • 📜 MIT licensed & fully open-source — audit every line, self-host forever.

📖 Authorization · Guardrails · Compliance


🔌 Full CLI + A2A & MCP

OmniRoute isn't just a server — it's a full command-line cockpit with 60+ commands, plus open agent protocols so an AI agent can drive OmniRoute by itself.

⌨️ A real CLI (not just start)

omniroute               # serve gateway + dashboard (port 20128)
omniroute chat          # interactive TUI chat client (slash: /model /combo /skill /memory)
omniroute setup         # guided first-run wizard
omniroute doctor        # diagnose providers, ports, native deps

providers · oauth · keys · combo · nodes · models · cache · compression · cost · usage · quota · health · resilience · telemetry · logs · audit · mcp · a2a · cloud · memory · skills · eval · tunnel · backup · sync · webhooks · policy · pricing · translator · simulate

🤝 Connect an agent — and it controls OmniRoute itself

Expose OmniRoute over MCP or A2A and any capable agent gets the keys to the whole gateway — routing, providers, combos, cache, compression, memory — autonomously.

Protocol Endpoint Use it for
🧰 MCP (stdio) omniroute --mcp Plug into Claude Desktop, Cursor, any MCP client
🌊 MCP (HTTP) http://localhost:20128/api/mcp/stream Remote MCP — 37 tools, 13 scopes, full audit trail
📡 MCP (SSE) http://localhost:20128/api/mcp/sse Streaming MCP transport
🤝 A2A http://localhost:20128/.well-known/agent.json Agent-to-agent, JSON-RPC 2.0 + SSE, 5 skills
# Give Claude Code the full OmniRoute toolset over MCP:
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream

📖 MCP Server · A2A Server · Agent Protocols


🗜️ Save 1595% Tokens — Automatically

Why use many token when few token do trick? Every request passes through OmniRoute's compression pipeline transparently — no client changes. It stacks ideas from RTK and Caveman ( 51K+).

Mode Savings Best for
🪶 Lite ~15% Always-on safe default
🪨 Standard (Caveman) ~30% Daily coding
Aggressive ~50% Long tool-heavy sessions
🔥 Ultra ~75% Maximum savings
🧰 RTK 6090% Shell/test/build/git output
🔗 Stacked (RTK → Caveman) 7895% Mixed prompts + tool logs

Real example — Standard mode:

Before (69 tokens): "The reason your React component is re-rendering is likely because you're creating a new object reference on each render cycle. When you pass an inline object as a prop, React's shallow comparison sees it as a different object every time, which triggers a re-render. I would recommend using useMemo to memoize the object."

After (19 tokens): "New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo."

Same answer. 72% fewer tokens. Zero accuracy loss.


📖 How it works — pipeline, architecture & savings math

Client (10,000 tok) ──▶ OmniRoute Compression (7 options) ──▶ Provider (~1,080 tok, up to 95% saved)

Default stacked combo runs RTK → Caveman. When both act on the same tool/context payload, savings compound:

combined = 1  (1  RTK) × (1  Caveman_input)
average  = 1  (1  0.80) × (1  0.46) = 89.2%
range    = 78.4  94.6%

Code blocks, URLs, JSON and structured data are always protected by the preservation engine. Auto-trigger compression by token threshold, or assign a compression pipeline per routing combo.

📖 COMPRESSION_GUIDE.md · RTK_COMPRESSION.md · COMPRESSION_ENGINES.md


Quick Start

1) Install & run

npm install -g omniroute
omniroute

Dashboard at http://localhost:20128 · API at http://localhost:20128/v1.

2) Connect a FREE provider (no signup)

Dashboard → Providers → connect Kiro AI (free Claude unlimited) or OpenCode Free (no auth) → done.

3) Point your coding tool

Base URL: http://localhost:20128/v1
API Key:  [copy from Dashboard → Endpoints]
Model:    auto            (zero-config smart routing — or any provider/model)

4) Verify it's working

curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"

You should see your connected models listed. 🎉 That's it — start coding, and OmniRoute auto-routes & falls back for you.


📦 More install methods — Docker, source, pnpm, Arch

🐳 Docker

docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
  -p 20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest

🛠️ From source

cp .env.example .env && npm install
PORT=20128 npm run dev

📦 pnpm

pnpm install -g omniroute && pnpm approve-builds -g && omniroute

🐧 Arch Linux (AUR)

yay -S omniroute-bin && systemctl --user enable --now omniroute.service

📖 Docker Guide — Compose profiles, Caddy HTTPS, Cloudflare tunnels.


🎬 OmniRoute in Action

Guia em Português
🇧🇷 Português
Guia completo
English Guide
🇺🇸 English
Complete walkthrough
Руководство
🇷🇺 Русский
Полное руководство

🎬 Made a video about OmniRoute? Open an issue or discussion with the link — we'll feature it here.


📚 Explore More

💰 Pricing at a glance & the $0 Free Stack (11 providers)
Tier Example Cost
💳 Subscription Claude Code Pro / Codex / Copilot $10200/mo
🔑 API Key (free tiers) NVIDIA NIM, Cerebras, Groq FREE
💰 Cheap GLM-5 $0.5/1M · MiniMax M2.5 $0.3/1M pennies
🆓 Free Forever Kiro, Qoder, Qwen, Pollinations, LongCat $0

The $0 Free Stack — combine into one unbreakable combo:

Provider Prefix Free models Quota
Kiro kr/ Claude Sonnet 4.5, Haiku 4.5, Opus 4.6 50 credits/mo
Qoder if/ kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 ♾️ Unlimited
Qwen qw/ qwen3-coder-plus/flash/next ♾️ Unlimited
Pollinations pol/ GPT-5, Claude, Gemini, DeepSeek, Llama 4 No key needed
LongCat lc/ LongCat-Flash-Lite 50M tokens/day 🔥
Cloudflare AI cf/ 50+ models 10K neurons/day
NVIDIA NIM nvidia/ 129 models ~40 RPM
Cerebras cerebras/ Qwen3 235B, GPT-OSS 120B 1M tok/day

💡 The dashboard "cost" is a savings tracker, not a bill — OmniRoute never charges you. A "$290 total cost" using free models means $290 saved.

📖 Complete free directory → docs/FREE_TIERS.md — 25+ providers, quotas, base URLs.

🎯 Use Cases — ready-made combo playbooks

$0 forever:

1. kr/claude-sonnet-4.5   (Kiro — unlimited)
2. if/kimi-k2-thinking    (Qoder — unlimited)
3. pol/gpt-5              (Pollinations — no key)
4. lc/longcat-flash-lite  (50M tok/day backup)
Compression: aggressive (~50%) → double your free quota · Cost: $0/mo

24/7 no interruptions: chain 2 subscriptions → cheap → free for 5 layers of fallback. Blocked region: free providers + global/per-provider proxy → access AI from any country. Max savings: subscription + cheap backup + ultra compression (~75%) → ~$150300/mo saved for heavy users.

🌍 Bypass geo-blocks — 3-level proxy + stealth

🇷🇺 🇨🇳 🇮🇷 🇨🇺 🇹🇷 In a blocked region? OmniRoute's 3-level proxy (Global / Per-Provider / Per-Connection) proxies API requests, OAuth flows, connection tests, token refresh & model sync.

  • Protocols: HTTP/HTTPS, SOCKS5, authenticated proxies
  • 🆓 1proxy marketplace — hundreds of free validated proxies, quality scores, auto-rotation
  • Anti-detection — TLS fingerprint spoofing (wreq-js), CLI fingerprint matching, proxy IP preservation

📖 docs/PROXY_GUIDE.md

Full feature list — 30+ capabilities (memory, evals, observability)

Routing: 14 strategies · task-aware smart routing · thinking budget controls · wildcard routing · system prompt injection. Compatibility: OpenAI ↔ Claude ↔ Gemini ↔ Responses API · auto OAuth refresh (PKCE, 8 providers) · multi-account round-robin · Batch + Files API · live OpenAPI 3.0. Protocols: MCP (37 tools, 3 transports, 13 scopes) · A2A (JSON-RPC 2.0, SSE, skills) · ACP · cloud agents (Codex, Devin, Jules). Quality & Ops: built-in Evals (golden-set: exact/contains/regex/custom) · guardrails (PII, injection, vision) · health dashboard · p50/p95/p99 telemetry · webhooks · compliance audit. AI Agent Skills: drop-in markdown manifests — point any agent at skills/omniroute/SKILL.md. 10 skills available.

📖 MCP Server · A2A Server · Resilience Guide · Features Gallery

📖 Setup, env vars & FAQ
Env var Default Purpose
PORT 20128 API + dashboard port
REQUIRE_API_KEY false Require API key for all requests
DATA_DIR ~/.omniroute Database & config storage

Will I be charged by OmniRoute? No — it's free, open-source software on your machine. You only pay paid providers directly. OmniRoute has no billing system. Are FREE providers really unlimited? Yes — Kiro, Qoder, Pollinations, LongCat, Cloudflare. No catch. Will compression hurt quality? No — it only compresses the input; code, URLs, JSON are always protected. Does it work where AI is blocked? Yes — 3-level proxy + 1proxy marketplace reach all 177 providers.

📖 User Guide · API Reference · Environment Config

🐛 Troubleshooting
Problem Quick fix
"Language model did not provide messages" Provider quota exhausted → use a combo fallback
Rate limiting (429) Add fallback: cc/claude → glm/glm-4.7 → if/kimi-k2-thinking
OAuth token expired Auto-refreshed; if stuck, delete + re-auth in Providers
unsupported_country_region_territory Configure proxy in Settings → Proxy
Docker SQLite locks Use --stop-timeout 40 for clean WAL checkpoint
Node runtime errors Use Node >=20.20.2 <21, >=22.22.2 <23, or >=24 <25

🐛 Reporting a bug? Run npm run system-info and attach system-info.txt. 📖 docs/TROUBLESHOOTING.md

📸 Dashboard screenshots
Page Screenshot Page Screenshot
Providers Providers Combos Combos
Analytics Analytics Health Health
Translator Translator Settings Settings
CLI Tools CLI Tools Usage Logs Usage

📧 Support & Community

💬 Join our WhatsApp groups — get help, share tips, stay updated: · 🌍 International · 🇧🇷 Português



🛠️ Tech Stack

  • Runtime: Node.js 20.20.2+, 22.22.2+, or 24.x LTS (24 LTS recommended)
  • 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: better-sqlite3 (SQLite) + LowDB (JSON legacy) — domain state, proxy logs, MCP audit, routing decisions, memory, skills
  • 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) + WebSocket bridge (/v1/ws)
  • Auth: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
  • Testing: Node.js test runner + Vitest (4,690+ test cases across 517 files — unit, integration, E2E, security, ecosystem)
  • Platforms: Desktop (Electron), Android (Termux), PWA (any browser)
  • CI/CD: GitHub Actions (auto npm publish + Docker Hub on release)
  • Website: omniroute.online
  • Package: npmjs.com/package/omniroute
  • Docker: hub.docker.com/r/diegosouzapw/omniroute
  • Resilience: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing, auto-combo self-healing

📖 Documentation

📘 Getting Started

Document Description
User Guide Providers, combos, CLI integration, deployment
Setup Guide Full install methods, CLI tool configs, protocol setup, timeout tuning
CLI Tools Guide Per-tool setup for Claude Code, Codex, Cursor, Cline, OpenClaw, Kilo, Copilot
Quick Start 3-step install → connect → configure

🔧 Operations & Deployment

Document Description
Docker Guide Docker run, Compose profiles, Caddy HTTPS, tunnels, image tags
VM Deployment Complete guide: VM + nginx + Cloudflare setup
Fly.io Deployment Deploy to Fly.io with persistent storage
Termux Guide Run OmniRoute on Android via Termux
PWA Guide Progressive Web App install, caching, architecture
Uninstall Guide Clean removal for all install methods
Environment Config Complete .env variables and references

🧠 Features & Architecture

Document Description
Architecture System architecture, data flow, and internals
Compression Guide 7-option pipeline: off / lite / standard / aggressive / ultra / RTK / stacked
RTK Compression Command-output compression, filters, trust, verify, raw-output recovery
Compression Engines Caveman, RTK, stacked pipelines, dashboard/API/MCP surfaces
Compression Rules Format JSON rule-pack schemas for Caveman and RTK filters
Compression Language Packs Language detection and Caveman rule-pack authoring
Resilience Guide Circuit breakers, cooldowns, queue, anti-thundering herd, TLS spoofing
Auto-Combo Engine 6-factor scoring, mode packs, self-healing
Proxy Guide 3-level proxy system, 1proxy marketplace, registry CRUD
Free Tiers 25+ free API providers consolidated directory
Features Gallery Visual dashboard tour with screenshots
Codebase Documentation Beginner-friendly codebase walkthrough

🤖 Protocols & APIs

Document Description
API Reference All endpoints with examples
OpenAPI Spec OpenAPI 3.0 specification
MCP Server 29 MCP tools, IDE configs, Python/TS/Go clients
MCP Server Guide MCP installation, transports, and tool reference
A2A Server JSON-RPC 2.0 protocol, skills, streaming, task mgmt
A2A Server Guide A2A agent card, tasks, skills, and streaming

📋 Project & Quality

Document Description
Contributing Development setup and guidelines
Security Policy Vulnerability reporting and security practices
i18n Guide 40+ language support, translation workflow, RTL
Release Checklist Pre-release validation steps
Coverage Plan Test coverage strategy and 4,690+ test suite

Top Contributors

OmniRoute is shaped by a passionate open-source community. These individuals have made exceptional contributions that directly impact the quality, stability, and reach of the project. Thank you.

oyi77
oyi77

🥇 190 commits • +72K lines
Analytics engine, SQL aggregations,
proxy marketplace, test coverage
Chris Staley
Chris Staley

🥈 72 commits • +5.7K lines
SSE stream hardening, Responses API,
Gemini pagination, test regression fixes
zenobit
zenobit

🥉 62 commits • +24K lines
CI/CD pipeline, i18n for 33 languages,
Void Linux package, platform fixes
R.D. & Randi
R.D. & Randi

🏅 107 commits • +28K lines
Endpoints page, tunnel integrations,
Docker workflows, A2A status, compression UI
benzntech
benzntech

🏅 20 commits • +7.5K lines
Electron desktop app, auto-updater,
release build workflows, cross-platform CI

🙏 These contributors' features, bug fixes, and infrastructure improvements are a core part of what makes OmniRoute reliable and feature-rich. Every pull request, every test case, and every i18n translation file matters. Open source is built by people like them.



👥 Contributors

Contributors

How to Contribute

  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

See CONTRIBUTING.md for detailed guidelines.

Releasing a New Version

# Create a release — npm publish happens automatically
gh release create v3.8.2 --title "v3.8.2" --generate-notes

📊 Stars

Star History Chart

🌍 StarMapper

StarMapper

🙏 Acknowledgments

Special thanks to 9router by 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.

Special thanks to CLIProxyAPI by router-for-me — the original Go implementation that inspired this JavaScript port.

Special thanks to Caveman by JuliusBrussee ( 51K+) — the viral "why use many token when few token do trick" project whose caveman-speak compression philosophy inspired OmniRoute's standard compression mode and 30+ filler/condensation regex rules.

Special thanks to RTK - Rust Token Killer by RTK AI — the high-performance command-output compression project whose terminal, build, test, git, and tool-output filtering model inspired OmniRoute's RTK engine, JSON filter DSL, raw-output recovery, and stacked RTK → Caveman compression pipeline.


📄 License

MIT License - see LICENSE for details.


⬆ Back to top · Built with ❤️ for the open-source AI community.

OmniRoute v3.8.1 · Node ≥22.22.2 · MIT License · omniroute.online