🚀 OmniRoute — The Free AI Gateway
💰 ~1.62B Free Tokens / Month
Section titled “💰 ~1.62B Free Tokens / Month”Stacking free tiers by hand is painful — dozens of SDKs, dozens of rate limits, and no idea how much you actually have. OmniRoute catalogs 489 free-tier entries across 35 recurring pool keys and computes the token headline from the 17 pools with a published positive monthly budget plus five per-model Groq caps, deduplicated by shared pool. Quotas that only open after a regional identity check (today: ModelScope) are shown apart, +~6M behind regional identity verification, and never summed into the headline. The result stays visible on the dashboard (
/dashboard/free-tiers).
Animated summary of the live
/dashboard/free-tierspage. Full methodology (pool dedupe, credit tiers, provider terms): docs/reference/FREE_TIERS.md.These figures are re-audited every two weeks against the live catalog and move both ways — a provider ends a free tier and the number drops; a new one lands and it climbs. We publish what the catalog actually computes, never a rounded-up best case.
⭐ Star the repo if OMNIROUTE helped you save money and make your work easier.
💬 Join the community
Section titled “💬 Join the community”👋 Follow the maintainer — get new providers, releases & tips first:
Questions, provider tips, roadmap & support → Discord · Telegram · WhatsApp 🌍 Global / 🇧🇷 Brasil / Portal
📈 The Gateway Keeps Growing
Section titled “📈 The Gateway Keeps Growing”| v3.8.49 | v3.8.50 | v3.8.51+ |
|
|---|---|---|---|
| 🌐 Providers | 290 | 357 | more queued |
| 🧠 Unique chat model IDs | 1185 | 1312 | — |
| 🖼️ Modality Bridge | — | 🆕 vision + audio + video | — |
| 📡 Radar free catalog | — | 🆕 opt-in | — |
| ⚖️ Quota-aware scheduling | — | 🆕 Quota-Share | — |
| 📊 Quota telemetry | — | 🆕 live | — |
→ Roadmap — riding the rail to v3.9.0 LTS
🧩 Available
Section titled “🧩 Available”| 🚀 Start | 🚀 Quick Start | 📦 Install | 🆓 Zero-config |
| 💡 Learn | 💥 The Promise | 🤔 Why OmniRoute | 🏆 What Sets Apart |
| ⚙️ Features | 🎯 Combos | 🌐 Providers | 🔌 CLI & MCP |
| 🗜️ Compression | 🖥️ Where It Runs | 🔒 Private | |
| 👀 See it | 🎬 In Action | ✨ What's New | 🤖 Compatible CLIs |
| 💚 Support | 💚 Support / Donate | 💬 Community | 💖 Sponsors |
| 📦 Project | 🛠️ Tech Stack | 📖 Docs | 👥 Contributors |
🆓 Works the second you install it — no keys, no config
Section titled “🆓 Works the second you install it — no keys, no config”# Fresh install, zero credentials — `auto` already works:curl http://localhost:20128/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'Prefer a specific free backend? Call oc/… (OpenCode Free) directly. Then graduate to auto and let OmniRoute pick.
📦 Copy-paste quickstart scripts for Python, Node.js, PHP, and cURL → examples/quickstart/
💥 The Promise
Section titled “💥 The Promise”🤔 Why OmniRoute?
Section titled “🤔 Why OmniRoute?”🤝 Supported by our Open Source Friends
Section titled “🤝 Supported by our Open Source Friends”Want to join as an Open Source Friend? These are the companies that back open source and help keep OmniRoute moving — and we say publicly where every token they give us goes. Reach out: diegosouza.pw@outlook.com
|
Kimi Moonshot AI |
Thanks to Kimi (Moonshot AI), our founding Open Source Friend, for backing this project! Kimi is the AI lab behind the open-weight K2 and K3 model families — Kimi K3 delivers a 1M-token context window, native vision and frontier-level coding at a fraction of closed-model prices, and works out of the box with Claude Code, Codex and every coding tool OmniRoute serves.
What Kimi's support powers: Kimi's API credits power OmniRoute's AI-validated release pipeline — the merge validation powered by Kimi K3 stage that reviews every pull request before it ships — plus day-to-day feature development. First-class Kimi support ships on both rails: the direct Kimi API ( kimi-k3) and the Kimi Code coding plan (OAuth and API key). OmniRoute is also the first Brazilian open-source project in Kimi's support program. Get a Kimi API key with 15% extra credits →
|
|
Cheaper Inference cheaperinference.com |
Thanks to Cheaper Inference, an OmniRoute Open Source Friend, for backing this project! Cheaper Inference is a cost-ranked gateway that resells 42 frontier models — Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok and MiniMax — behind one OpenAI-compatible endpoint, routing each request to the cheapest eligible provider without ever charging above the model maker's list price.
First-class support in OmniRoute: Chat Completions, the native /v1/responses endpoint, vision, tool calling and 3 image models (grok-imagine, nano-banana-pro, nano-banana-2, reachable as cheaperinference/<model>). Get an API key →
|
Links tagged aff=omniroute are partner links. They fund the project at no extra cost to you.
<details open>
This section is for referral/coupon codes only. Sponsored partnerships live in 🤝 Supported by our Open Source Friends above. OmniRoute has no sponsorship or partnership with the providers listed here — these are public coupons anyone can use.
|
AgentRouter agentrouter.org |
AgentRouter — affiliate signup · $100 free credits on signup (free server, expect higher latency — best for testing, not production). First-class support in OmniRoute since v3.8.50: Chat Completions, the Anthropic-compatible wire format and the OpenAI-compatible path. Available models include claude-opus-4-8, claude-opus-5, gpt-5.6-sol and more. Grab your $100 →
⚠️ Affiliate link — OmniRoute has no sponsorship or partnership with this provider. |
Know another provider with a generous free signup coupon that benefits OmniRoute users? Open an issue and we’ll add it here.
🎯 Combos — The Flagship
Section titled “🎯 Combos — The Flagship”A combo is a chain of models OmniRoute routes across automatically. If quota runs out, a provider fails, or costs spike, the combo can move to the next eligible healthy model. 🛡️
⚡ Zero-config — just use auto
Section titled “⚡ 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 |
auto/lkgp | 📌 Explicit last-known-good-provider stickiness |
auto/chaos | 🧪 Fault-injection weights for resilience testing (chaos engineering) |
🔀 Or build your own — 19 routing strategies
Section titled “🔀 Or build your own — 19 routing strategies”All 19 strategies — mix & match per combo step:
| # | Strategy | What it does |
|---|---|---|
| 1 | <td nowrap>First-target ordered list — drain each before the next 🥇 | |
| 2 | <td nowrap>Fill each target's quota fully before moving on | |
| 3 | <td nowrap>Weighted random by per-target weight | |
| 4 | <td nowrap>Cycle through targets in order | |
| 5 | <td nowrap>Power-of-two-choices random load balancing | |
| 6 | <td nowrap>Pick the target with the lowest current load | |
| 7 | <td nowrap>Uniform random pick (deduplicated) | |
| 8 | <td nowrap>Random without de-duplicating repeats 🎲 | |
| 9 | <td nowrap>Minimize $ per request from live catalog pricing 💸 | |
| 10 | <td nowrap>Pick the target with the most remaining quota | |
| 11 | <td nowrap>Prefer the target whose quota window resets soonest | |
| 12 | <td nowrap>Rank by quota reset time — short windows first 📊 | |
| 13 | <td nowrap>Hand off context across targets for long conversations 🧠 | |
| 14 | <td nowrap>Pick the best fit for the current context size | |
| 15 | <td nowrap>Pin each reusable prompt prefix to the same account — maximize prompt-cache hits 🎯 | |
| 16 | <td nowrap>Last-Known-Good Path — pins to the last successful provider, then falls back to rules | |
| 17 | <td nowrap>16-factor live scoring across every connection 🤖 | |
| 18 | <td nowrap>Fan out to a panel of models + a judge synthesizes one answer 🧬 | |
| 19 | <td nowrap>Chain steps — each target's output feeds the next one 🔗 |
The Auto-Combo engine scores every candidate on 16 factors (health, quota, cost, latency, task fit, quality, session availability…) — see docs/routing/AUTO-COMBO.md.
🧱 Resilience is built in (3 independent layers)
Section titled “🧱 Resilience is built in (3 independent layers)”📖 Auto-Combo Engine · Resilience Guide
🏆 What Sets OmniRoute Apart
Section titled “🏆 What Sets OmniRoute Apart”📊 Full methodology & per-feature detail vs 9router, OpenRouter, CLIProxyAPI & LiteLLM → docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md
💚 Support OmniRoute
Section titled “💚 Support OmniRoute”OmniRoute is MIT-licensed and maintained in the open. If it saves you time or money, here’s how to keep it independent — pick whatever fits you. Sponsorship never affects routing priority; it buys visibility, not ranking.
| Free — genuinely helps visibility | Star OmniRoute |
| One-off or monthly · zero platform fee | github.com/sponsors/diegosouzapw |
| Quick one-off tip, no signup for the donor | ko-fi.com/diegosouzapw |
| Small, informal gesture | buymeacoffee.com/diegosouzapw |
| Recurring · non-profit · open source | liberapay.com/diegosouzapw |
| Instant, no fees | key & QR below |
| BTC · ETH · USDT-TRC20 · USDC-Solana | addresses below |
🇧🇷 PIX — instant, no fees (Brazil)
Key (random): 5d865059-bc44-483a-962d-43ceb80126eb
Pix copia-e-cola:
00020101021126580014br.gov.bcb.pix01365d865059-bc44-483a-962d-43ceb80126eb5204000053039865802BR5922OMNIROUTE CONTRIBUICAO6006BRASIL62070503***630475DD₿ Crypto — BTC · ETH · USDT-TRC20 · USDC-Solana (click to expand)
bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd |
0x64Cf6B68A6Ff34288e89172950a2d00102337a84 |
TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2 |
2emNNZzVVWQc3FQ2wk9M6qXUQmW8AKdjjL174fXR28Tu |
⚠️ Send each coin only on the network shown — sending on the wrong network can lose the funds.
🐛 Found a bug or have feedback? Open a Discussion.
Developer notes: The project may generate a local .env file during npm install/postinstall for developer convenience. This file is intentionally ignored via .gitignore (see .gitignore) and must never be committed — if accidentally committed, rotate any exposed secrets and remove the file from history. See docs/DEVELOPER-ENVIRONMENT.md for guidance on managing local environment files and secrets.
📡 OmniRoute Radar
Section titled “📡 OmniRoute Radar”The main free-tier headline remains ~1.62B tokens/month from the documented, pool-deduplicated catalog above. Temporary provider signup credits can separately lift the first month to ~2.22B. Radar is an optional, signed catalog overlay for people who want fresher free-model availability between OmniRoute releases; the community catalog and every existing free feature remain free.
Supporters can receive the live catalog and additional provider opportunities. Its separate, mutable ceiling is approximately 3B tokens/month at most, depending on provider availability. That ceiling is not a guarantee: providers can change quotas, eligibility, models, or regions at any time.
Radar is opt-in and GET-only. The OmniRoute client does not upload prompts, traffic, provider configuration, usage telemetry, or local announcement-dismiss state. Learn about eligibility and the current catalog at radar.omniroute.online/planos.
✨ What’s New
Section titled “✨ What’s New”Recent highlights from v3.8.20 → v3.8.50. Full history in
CHANGELOG.md.
- 🎛️ OmniConductor — inbound A2A delegation to your agent fleet, Conductor skills on the Agent Card, and a dashboard panel with Faro push-to-talk voice chat. → A2A Server
- 🛂 Adaptive admission & overload protection — heavyweight chat requests queue instead of 503ing, with atomic RPM rolling leases per connection. → Resilience Guide
- 🗂️ Canonical
/v1/modelsordering — one contiguous provider-grouped block per provider (combos pinned first), stable across every catalog source. → API Reference - 🗜️ Compression hardening — default-on inflation guard, Caveman packs for DE / FR / JA + Chinese (wényán), RTK filters for Gradle & .NET. → Compression
- 💸 Honest flat-rate cost — subscription / coding-plan providers read $0 in cost analytics; budget, quota & routing keep estimating. → API Reference
- ⚖️ Quota-Share routing — split a shared account’s quota fairly across pooled keys, work-conserving so idle slices are lent out. → Resilience Guide
- 🤖 One-command CLI/agent setup — 13 registered
setup-*commands;omniroute runlaunches 7 CLIs (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI);omniroute configuresupports 10 targets with an interactive provider+model picker and per-context favorites. → CLI Integrations - 🛰️ Remote mode — drive a remote OmniRoute with scoped tokens (
connect/contexts/tokens) + anantigravityOAuth helper for VPS installs. → Remote Mode - 🧭 Smarter auto-routing —
auto/<category>:<tier>combos, Fusion (model panel + judge), task-aware routing, per-request model / mode / USD-budget overrides. → Auto-Combo - 🗜️ Pluggable compression — 12 composable engines + Compression Studios: LLMLingua-2, two-tier Ultra, omniglyph, per-step fidelity gate, GCF v3.2, drag-reorder editor. → Compression
- 🕵️ Transparent MITM decrypt (TPROXY) — capture CLIs that ignore proxy env vars, with a per-SNI CA + trust-store installer. → MITM/TPROXY
- 💸 Cost telemetry everywhere —
X-OmniRoute-*cost/usage headers on every endpoint, cache-HIT savings header, per-key USD spend quotas. → API Reference - 🧠 Memory you control — off by default, opt-in int8 vector quantization + typed decay, per-request
x-omniroute-no-memory. → Memory - 🛡️ Security — prompt-injection guard on every LLM route (red-team suite), opt-in credential-masking guardrail (redacts leaked API keys/secrets in both directions), free DuckDuckGo last-resort web search, and an optional OIDC login gate for the dashboard (password login always stays available). → Guardrails
- 🖼️ New endpoints —
/v1/ocr(Mistral OCR) and/v1/audio/translations(Whisper-style) round out the media surface. → API Reference - 🎨 Image / video / audio generation — one API for media: xAI Grok Imagine & Novita AI video, ComfyUI, Magnific, Adobe Firefly, Segmind, and speech providers such as ElevenLabs. → API Reference
- 🌍 Deployment & ops — reverse-proxy
basePath, browser-language auto-detect, per-key device tracking, root-less MITM trust, zh-TW localization. → Environment - 🤝 More providers & agents — cloud agents (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) with browser + OAuth login, Ollama first-class card, Claude Opus 5 & Sonnet 5, Kimi official partnership (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… and a refreshed 352-provider catalog. → Providers
- 📡 Routing transparency — every response carries an
X-OmniRoute-Decisionheader naming the strategy/provider/latency that served it, a newcache-optimizedcombo strategy + Auto-CombocacheAffinityfactor route repeat requests back to the connection holding the cached prefix, and a read-only/v1/auto-combo/{channel}/candidatesendpoint exposes anauto/*channel’s live candidate pool. → Auto-Combo - ⚡ Local performance & infra — one-click local Redis, Cloudflare Workers / Deno Deploy relay deployers, Bifrost & Mux as supervised embedded services. → Embedded Services
- 🧩 Also in the box — plugin framework + marketplace, Omni/Agent/GitHub skills frameworks, Obsidian vault integration (22 MCP tools), OpenAI-compatible Batch & Files APIs, semantic response cache, gamification with leaderboards, ACP agent discovery (15 built-in agents), scheduled log export to BigQuery,
auto/chaosfault injection, a Telegram bot bridge, an in-app version manager and LMArena-ELO free-provider rankings. → Docs
🤖 Compatible CLIs & Coding Agents
Section titled “🤖 Compatible CLIs & Coding Agents”One config —
http://localhost:20128/v1— and every AI IDE or CLI runs on free & low-cost models.
Claude Code |
Codex CLI |
Cline |
Kilo Code |
Zoo Code |
Continue |
Aider |
ForgeCode |
jcode |
DeepSeek TUI |
CodeWhale |
OpenCode |
Factory Droid |
Copilot CLI |
Cursor CLI |
Smelt |
Pi |
Grok Build |
Hermes Agent |
OpenClaw |
Goose |
Open Interpreter |
Warp AI |
deyin.ai |
📖 Per-tool setup for all 36 tools (26 CLI Code’s + 10 CLI Agents) → docs/reference/CLI-TOOLS.md · 🧩 OpenCode plugin → @omniroute/opencode-provider
Launch any supported CLI through OmniRoute in one command — no config files written, credentials injected per process, Qwen/Gemini get a throwaway isolated home:
omniroute run claude --model openai/gpt-5.4 # Claude Codeomniroute run codex --model glm/glm-5.2 # OpenAI Codex CLIomniroute run aider --model glm/glm-5.2 -- --message "reply OK"omniroute run goose --model glm/glm-5.2omniroute run opencode --model glm/glm-5.2 -- run "reply OK"omniroute run qwen --model glm/glm-5.2 -- -p "reply OK"omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "reply OK"
# Or pick provider+model interactively and write the tool's own config:omniroute configure codex # also: claude opencode qwen aider goose gemini cline continue kiloEvery command honors the active remote context (omniroute connect <host>), --dry-run
previews the exact env/args without executing, and --api-key-env NAME keeps secrets out
of your shell history. → CLI Integrations
🌐 357 AI Providers — 152 Catalog-Marked Free
Section titled “🌐 357 AI Providers — 152 Catalog-Marked Free”357 registered providers across the canonical chat, media, search, local, cloud-agent and system collections, including 152 carrying
hasFree: truediscovery metadata. The chat model registry covers 229 providers / 2,554 distinct provider-model pairs / 1,283 raw model IDs; the separate free-budget catalog has 491 per-model rows, 35 recurring pools and 54 recurring/keyless free-forever providers. These are different denominators by design; definitions and pool-deduped calculations live in the Provider Reference and Free Tiers.
🏢 Every major lab — through one endpoint
Section titled “🏢 Every major lab — through one endpoint”OpenAI |
Anthropic |
Gemini |
xAI Grok |
DeepSeek |
Mistral |
Qwen |
Meta Llama |
Groq |
NVIDIA |
MiniMax |
Cohere |
Perplexity |
HuggingFace |
Together |
Fireworks |
Cloudflare |
Baidu |
…and 330+ more — every icon resolves live from the dashboard’s provider catalog. 📖 Provider Reference
🆓 Free Forever — $0, no card
Section titled “🆓 Free Forever — $0, no card”OpenCode Zen DeepSeek V4, Nemotron 3 No token cap |
Kilo Code Auto-router, Tencent Hy3 Free forever |
Requesty GPT-OSS 120B, Nemotron Free forever |
SiliconFlow DeepSeek V3.2 / R1 Free tier |
Z.AI GLM GLM-4.7 / 4.5-Flash Free forever |
Baidu ERNIE ERNIE 4.0 Free forever |
Qoder AI Qwen3-Max, Kimi-K2 Unlimited FREE |
Pollinations GPT, Llama, Claude No key needed |
Cloudflare AI 50+ models 10K neurons/day |
NVIDIA NIM GLM, MiniMax ~40 RPM free |
Cerebras GLM 4.7, GPT-OSS 1M tokens/day |
OpenRouter :free models +$10 → higher RPM |
📖 Full machine-readable catalog → docs/reference/PROVIDER_REFERENCE.md
🖥️ Where OmniRoute Runs — Anywhere
Section titled “🖥️ 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 |
| 🎩 Menu-bar (OmniRouteTray) | brew install --cask zoispag/tap/omniroute-tray | Supervises & auto-updates the server — macOS |
| 💪 ARM | native arm64 | Raspberry Pi, ARM servers, Apple Silicon |
| 📱 Android (Termux) | pkg install nodejs && 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 |
| 🤖 VS Code Copilot Chat | install OmniCopilot extension | Every OmniRoute model in the native Copilot Chat picker — stable & Insiders |
| 🛠️ From source | npm install && npm run dev | Hack on it, contribute |
📖 Docker Guide · Desktop · Menu-bar tray · Termux · PWA · OpenCode
🧩 New: OmniRoute inside VS Code’s native Copilot Chat
Section titled “🧩 New: OmniRoute inside VS Code’s native Copilot Chat”No new sidebar, no new chat UI — every model OmniRoute serves shows up right in the Copilot Chat model picker you already use. Since VS Code 1.122, provider models work without a GitHub sign-in or a Copilot subscription — agent mode, tool calling and vision, for free.
Install the OmniCopilot extension, point it
at your OmniRoute server (defaults to localhost:20128), then open Copilot Chat → model picker
→ Manage Models… → OmniRoute.
| Store | Link | Works with |
|---|---|---|
| 🧩 VS Code Marketplace | Install → | VS Code — stable & Insiders |
| 🔓 Open VSX Registry | Install → | Cursor, Windsurf, VSCodium, Theia, code-server, Gitpod, Antigravity, Kiro… |
From inside the editor: open the Extensions view, search “OmniRoute”, click Install — works the same way on both stores. Source, issues and the publishing runbook live at diegosouzapw/OmniCopilot.
📖 VS Code Copilot Chat guide — setup, what the picker shows, dashboard-in-a-tab, troubleshooting
🎩 New: OmniRouteTray — your gateway, living in the menu bar
Section titled “🎩 New: OmniRouteTray — your gateway, living in the menu bar”
omniroute serveis happiest when it’s always on. OmniRouteTray turns that into a set-and-forget menu-bar app for macOS: it starts the server, keeps it alive across reboots, updates it in place, and puts your live token budget one click away — no terminal window left open, nonpm install -g omnirouteto babysit.
Built with Tauri v2 (a Rust core the size of a rounding error), it ships
its own signed Node 24 runtime and manages an app-owned OmniRoute install, so it never fights your
global node/bun. It shares your existing ~/.omniroute/ config and database — so it’s the
same OmniRoute you already run, just with a hat on. 🎩
| What it does | How |
|---|---|
| 🟢 Supervises the server | Spawns omniroute serve, adopts an already-running instance instead of duplicating it |
| 📊 Live usage at a glance | Provider quota bars, Claude session/weekly limits with reset countdowns, 30-day cost breakdown |
| 🔄 Auto-updates in place | Staged install, atomic swap, rollback on failure — always on the newest release |
| 🚀 Start on login | Optional launch at login; tray-only, no dock icon |
| 🩺 Doctor & logs | One-click diagnostics and server log access |
brew install --cask zoispag/tap/omniroute-trayPrefer a download? Grab the latest .dmg from
Releases. Source, issues and build
docs live at zoispag/omniroute-tray.
💛 A community project by @zoispag — not an official OmniRoute release.
🔒 Private & Local-First
Section titled “🔒 Private & Local-First”📖 Authorization · Guardrails · Compliance
🔌 Full CLI + A2A & MCP
Section titled “🔌 Full CLI + A2A & MCP”Beyond the server, OmniRoute is a full command-line cockpit with 80+ commands, plus open agent protocols so an AI agent can drive it on its own.
⌨️ A real CLI (not just start)
Section titled “⌨️ 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 wizardomniroute doctor # diagnose providers, ports, native deps🛰️ Remote mode — run the CLI here, OmniRoute on a VPS
Section titled “🛰️ Remote mode — run the CLI here, OmniRoute on a VPS”OmniRoute on a server? Drive it from your laptop with the same CLI. Log in once with a scoped access token; every command then targets the remote.
omniroute connect 192.168.0.15 # password → scoped token, saved as a contextomniroute models # ← runs against the REMOTE serveromniroute configure codex # ← picks a remote model, writes a local Codex profileomniroute tokens create --name ci --scope read # mint narrower tokens for other machinesomniroute contexts use default # ← switch back to the local serverTokens are scoped read / write / admin; process-spawning routes stay loopback-only.
📖 Remote Mode
🤝 Connect an agent — and it controls OmniRoute itself
Section titled “🤝 Connect an agent — and it controls OmniRoute itself”Expose OmniRoute over MCP, A2A, a REST API, webhooks or a remote CLI — any capable agent (or your own code) gets the keys to the whole gateway: routing, providers, combos, cache, compression, memory — autonomously. HTTP endpoints below are served under http://localhost:20128.
| Interface | Endpoint / command | Use it for |
|---|---|---|
| 🧰 MCP (stdio) | omniroute --mcp | Plug into Claude Desktop, Cursor, any MCP client |
| 🌊 MCP (HTTP) | /api/mcp/stream | Remote MCP — 110 tools, 33 scopes (enforcement opt-in), full audit trail |
| 📡 MCP (SSE) | /api/mcp/sse | Streaming MCP transport |
| 🤝 A2A | /.well-known/agent.json | Agent-to-agent, JSON-RPC 2.0 + SSE, 6 skills |
| 🌐 REST API | /v1/* | OpenAI-compatible — chat, embeddings, images, audio, OCR |
| 🔔 Webhooks | /api/webhooks | Push request / quota events to Slack, Discord, Telegram or any URL |
| 🛰️ Remote CLI | omniroute connect <host> | Drive a remote instance with scoped access tokens |
# 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 15–95% Tokens — Automatically
Section titled “🗜️ Save 15–95% Tokens — Automatically”📖 How it works — pipeline, architecture & savings math
Section titled “📖 How it works — pipeline, architecture & savings math”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.
Why use many tokens when few tokens do the trick? Every request passes through OmniRoute’s compression pipeline transparently — no client changes. It’s now a stack of 12 composable engines that run in order and mix & match per routing combo — building on ideas from RTK, Caveman (⭐ 90K+), LLMLingua-2, and Troglodita (PT-BR).
🧱 The 12-engine stack
Section titled “🧱 The 12-engine stack”Engines run in pipeline order; each is independently toggleable and configurable per combo:
| # | Engine | What it does |
|---|---|---|
| 1 | Session-Dedup | Drops content repeated across turns (content-addressed, cross-turn) |
| 2 | CCR | Archives large blocks behind retrieve markers, fetched on demand |
| 3 | Lite | Whitespace + image-URL trimming (latency-light baseline) |
| 4 | RTK | Smart tool-result filtering, dedup & truncation (command-aware) |
| 5 | Responses Tool Output | Lossless-first JSON + bounded diagnostic compression for shell/patch/search/build outputs (Responses API) |
| 6 | Headroom | Lossless tabular compaction of JSON arrays (~30%) via a vendored GCF codec |
| 7 | Relevance | Extractive sentence scoring against the last user query |
| 8 | Caveman | Rule-based prose compression (~65–75% on output) |
| 9 | Aggressive | Summarization + progressive aging of old turns |
| 10 | LLMLingua-2 | ML semantic pruning via MobileBERT ONNX — code-safe, async |
| 11 | Ultra | Heuristic token pruning with an optional small-model (SLM) tier |
| 12 | OmniGlyph | Experimental context-as-image encoding for measured Claude Fable 5 on the direct Anthropic wire; GPT 5.6 transformers remain fail-closed pending provider receipts. Four compression profiles (aggressive default, balanced, coding-safe, passthrough) (most aggressive; opt-in) |
Code blocks, URLs and structured data are always preserved byte-perfect. One-click presets combine the engines:
| 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 | 60–90% | Shell/test/build/git output |
| 🔗 Stacked (RTK → Caveman) | 78–95% | 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. ✅
PT-BR example — Troglodita mode:
Antes (42 tokens): “O problema é que o componente está re-renderizando porque uma nova referência de objeto está sendo criada em cada ciclo de renderização. Eu recomendaria usar useMemo.”
Depois (12 tokens): “Re-render: ref nova cada ciclo (objeto inline recriado). Usar
useMemo.”Mesma resposta. ~70% menos tokens. Precisão técnica intacta. ✅
🎚️ Beyond the engines — output styles, the adaptive dial & per-request control
Section titled “🎚️ Beyond the engines — output styles, the adaptive dial & per-request control”The 12 engines above shrink what goes in. Three more layers shape how, when, and what comes out:
- 🪄 Output Styles (output-axis steering) — inject deterministic, cache-safe response-shaping instructions; combinable, each at
lite/full/ultraintensity. Adding a style is a one-line registry entry:- Terse prose — drop filler / articles / hedging; keep technical substance exact.
- Less code — “lazy senior dev” YAGNI: smallest working change, no unrequested scaffolding.
- Ponytail (lazy senior dev) — climb the YAGNI ladder, fix the root cause, smallest working diff.
- I have ADHD (action-first) — next action leads, steps numbered, one concrete next step, no preamble.
- Terse CJK (文言) — classical-Chinese ultra-terse style (locale-gated to
zh).
- 🎯 Adaptive context-budget (the dial) — instead of one on/off token threshold, escalate the cheapest, most-lossless engines only as far as needed to fit the model’s context window. Policy:
reserve-output(default, model-aware) ·percentage·absolute. Mode:floor(guarantee fit) ·replace-autotrigger(your explicit choice wins) ·off(legacy threshold). - 🎛️ Where compression is decided (precedence, high → low) — per-request
x-omniroute-compressionheader › routing-combo override › active named profile › adaptive / auto-trigger › panel default › off. The applied plan echoes back in theX-OmniRoute-Compression: <mode>; source=<source>response header.
Auto-trigger by token threshold, flip on the adaptive dial, pin a named profile, set a one-off per request, or assign a pipeline per routing combo — whichever fits the workload. An opt-in offline eval harness (npm run eval:compression) scores fidelity vs. savings on a pinned corpus before you promote a change.
📖 COMPRESSION_GUIDE.md · RTK_COMPRESSION.md · COMPRESSION_ENGINES.md
⚡ Quick Start
Section titled “⚡ Quick Start”1) Install & run
npm install -g omnirouteomniroute💡 See
npm warn ERESOLVEor peer-dep warnings? They’re harmless. Using Gemini Web or another web-cookie provider? The npm package includes Playwright but not its Chromium binary. See the Playwright Chromium setup note before making the first web-provider request.
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, ~50 credits/month per account) or OpenCode Free (no auth) → done.
3) Point your coding tool
Base URL: http://localhost:20128/v1API 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.
If your client cannot send custom headers, OmniRoute also exposes tokenized compatibility aliases:
OpenAI catalog: http://localhost:20128/vscode/YOUR_KEY/OpenAI models: http://localhost:20128/vscode/YOUR_KEY/modelsOpenAI chat: http://localhost:20128/vscode/YOUR_KEY/chat/completionsOpenAI responses: http://localhost:20128/vscode/YOUR_KEY/responsesOllama chat: http://localhost:20128/vscode/YOUR_KEY/api/chatOllama tags: http://localhost:20128/vscode/YOUR_KEY/api/tagsUse these only for clients that cannot attach Authorization: Bearer .... Header auth remains the preferred mode.
📦 More install methods — Docker, source, pnpm, Arch
Section titled “📦 More install methods — Docker, source, pnpm, Arch”🐳 Docker
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \ -p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest:latest follows the highest published stable SemVer. It does not track git main. Pin :X.Y.Z for GitOps. See Docker Release Channels.The image pins OMNIROUTE_MEMORY_MB=1024. That is enough for the dashboard and a light chat. Coding agents (POST /v1/responses from Claude Code, Codex, Grok, …) need a much larger V8 heap or the process FATAL ERRORs at ~12 GiB under two overlapping long contexts. Size the container above the heap (native buffers sit outside V8):
| Workload | Heap (-e OMNIROUTE_MEMORY_MB) |
Container (--memory) |
|---|---|---|
| Dashboard / light chat | 1024 (image default) |
≥2 g |
| One coding agent | 8192 |
≥10 g |
Two concurrent long /v1/responses |
10240–12288 |
≥12–16 g |
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \ -e OMNIROUTE_MEMORY_MB=8192 --memory=10g \ -p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latestFull table: Docker Guide — runtime RAM.
Pre-release Docker channel:
diegosouzapw/omniroute:nextanddiegosouzapw/omniroute:next-webfollow the current defaultrelease/v*branch. These mutable tags are intended only for testing unreleased fixes and are not supported for production. See Docker Release Channels.
🥟 Bun
Standard bun install and global installation (bun install -g omniroute) are supported via Bun runtime detection:
- Built-in
bun:sqlite: OmniRoute uses Bun’s built-inbun:sqlitedriver when running under Bun, falling back tobetter-sqlite3on Node.js orsql.js. - Automatic Webpack bundler selection in dev: Development (
bun run dev) automatically detects Bun and disables Turbopack in favor of Webpack to prevent native V8 binding incompatibilities. Production builds (bun run build) followOMNIROUTE_USE_TURBOPACKexactly as on Node: Turbopack by default,OMNIROUTE_USE_TURBOPACK=0to build with Webpack (Dockerfile.bunexposes it as a--build-arg). - Dedicated Bun Dockerfile: Multi-stage
Dockerfile.bunfor native Bun production deployments (docker build -f Dockerfile.bun -t omniroute:bun .).
# Install and run with Bunbun installbun run dev🛠️ From source
cp .env.example .env && npm installPORT=20128 npm run dev📦 pnpm
pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core && omniroute🐧 Arch Linux (AUR)
yay -S omniroute-bin && systemctl --user enable --now omniroute.service🔧 Nix (Flake)
# Using Nix flakesnix developnpm run dev
# Or using devboxdevbox run npm run dev📖 Docker Guide — Compose profiles, Caddy HTTPS, Cloudflare tunnels.
🦭 Podman
# 1. Prepare the bind-mounted data directorymkdir -p data
# 2. Linux + local rootless Podman only (never a remote Podman Machine client):podman unshare chown 1000:1000 ./data
# 3. Set the runtime hint, build the local Compose image, and startecho "CONTAINER_HOST=podman" >> .envpodman compose --profile base up -d --buildOn macOS or Windows, Podman uses a remote Podman Machine: skip podman unshare and
follow the topology-specific data directory guidance.
📖 Podman Guide — Compose builds, Podman Machine, and Linux/systemd Quadlet setup.
⚡ Faster / leaner install (skip the native build)
The native SQLite engine (better-sqlite3) is an optional dependency, so a global
install never blocks on compiling from source: it uses a prebuilt binary when one matches
your platform/Node, and otherwise falls back transparently to a pure-JS engine
(node:sqlite on Node 22+, else the bundled sql.js WASM) — no build tools required.
To skip the post-install native warm-up entirely (CI, headless, or slow machines).
Note: this only skips the native SQLite warm-up step (scripts/postinstall.mjs); the
binary-copy/repair hook (scripts/build/postinstall.mjs) still runs normally:
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute # CI=1 also skips itFor the fastest installs prefer pnpm (content-addressed store + hard links — see above).
For a dashboard-free, headless runtime use the Docker base profile (above) or the
Termux guide. The CLI and the web dashboard are served by the
same process on one port, so there is no separate CLI-only package today.
🎬 OmniRoute in Action
Section titled “🎬 OmniRoute in Action”📹 Video Guides
Section titled “📹 Video Guides”Snapshot do painel em 2026-08-24 · Catálogo bruto: YT 809 | TT 137 | IG 124 · Frescor (dias): YT 1 | TT 21 | IG 22
Ranking completo (URLs canônicas deduplicadas, v > 0, maior alcance):
| #1 | #2 | #3 | #4 | #5 |
|---|---|---|---|---|
| nick_saraev — Instagram — 3,042,474 | theopenstack — Instagram — 692,419 | milesreevesai — TikTok — 620,400 | Vaibhav Sisinty — YouTube — 391,109 | buildwithai.club — Instagram — 347,652 |
| #6 | #7 | #8 | #9 | #10 |
|---|---|---|---|---|
| nivedan.ai — Instagram — 331,973 | vaibhavsisinty — Instagram — 263,744 | Nick Automates — YouTube Shorts — 218,174 | theroshankrishna — Instagram — 186,786 | midudev — TikTok — 177,800 |
Métricas canônicas em 2026-08-24: 1.029 vídeos únicos · 11.132.922 visualizações conhecidas (v > 0) · 639 canais/perfis por rede. O painel bruto contém 1.070 linhas; 41 duplicatas do Instagram foram normalizadas pela URL canônica, mantendo a maior contagem por vídeo.
🎬 Made a video about OmniRoute? Open an issue or discussion with the link — we’ll feature it here.
📧 Community & Help
Section titled “📧 Community & Help”Everything in one place — follow the maintainer, chat with the community, or open an issue.
| Channel | Where / how |
|---|---|
| 💼 LinkedIn — follow the maintainer | linkedin.com/in/diegosouzapw |
| 🐙 GitHub — follow for releases & tips | @diegosouzapw |
| 💬 Discord | discord.gg/U47eFqAXCn |
| ✈️ Telegram | t.me/omnirouteOficial |
| 🟢 WhatsApp — 🌍 Global | join the group |
| 🟢 WhatsApp — 🇧🇷 Brasil | entrar no grupo |
| 🌍 Website | omniroute.online |
| 🌍 🌍StHub OmniRoute Community (free) | portal sthub |
| 📦 Source code | github.com/diegosouzapw/OmniRoute |
| 🐛 Report a bug | open an issue — attach npm run system-info output |
| 🤝 Contribute | CONTRIBUTING.md · Branching & Release Model · pick a good first issue |
| 💚 Support the project | Ways to support ↑ · GitHub Sponsors |
🛠️ Tech Stack
Section titled “🛠️ Tech Stack”| Layer | Technology |
|---|---|
Node.js 22.x / 24.x LTS — >=22.22.2 <23 || >=24.0.0 <27 | |
TypeScript 6.0 — 100% TypeScript across src/ and open-sse/ (zero any in core since v2.0) | |
| Next.js 16 + React 19 + Tailwind CSS 4 | |
| better-sqlite3 (SQLite, WAL journaling) + LowDB (JSON legacy) — 122 domain modules, 190 migrations | |
| SQLite FTS5 full-text + int8-quantized vector embeddings, typed decay | |
| Zod 4 — MCP tool I/O validation + API contracts | |
| MCP (stdio / HTTP / SSE) + A2A v0.3 (JSON-RPC 2.0 + SSE) | |
Server-Sent Events (SSE) + WebSocket bridge (/v1/ws) | |
| 12-engine pipeline — RTK, Caveman, LLMLingua-2 (MobileBERT ONNX), GCF, OmniGlyph | |
| OAuth 2.0 (PKCE) + JWT + API Keys + MCP scoped auth · AES-256-GCM at rest · DOMPurify | |
| wreq-js — JA3 / JA4 TLS fingerprint impersonation, 3-level proxy | |
| Circuit breaker, exponential backoff, anti-thundering-herd, auto-combo self-healing | |
| pino — structured JSON logs with request context | |
| Node.js test runner + Vitest — 39,000+ static test declarations across 5,100+ tracked test files (unit, integration, E2E, security, ecosystem) | |
| Desktop (Electron) · Android (Termux) · PWA (any browser) | |
| GitHub Actions — auto npm publish + Docker Hub on release | |
| Website · npm · Docker Hub |
📖 Documentation
Section titled “📖 Documentation”📘 Getting Started
Section titled “📘 Getting Started”| Document | Description |
|---|---|
| Providers, combos, CLI integration, deployment | |
| Full install methods, CLI tool configs, protocol setup, timeout tuning | |
| Per-tool setup for Claude Code, Codex, Cursor, Cline, OpenClaw, Kilo, Copilot | |
| Drive a remote OmniRoute (VPS) from your laptop CLI via scoped access tokens | |
Point Claude Code at OmniRoute (local/remote) with launch + per-model profiles | |
| 3-step install → connect → configure |
🔧 Operations & Deployment
Section titled “🔧 Operations & Deployment”| Document | Description |
|---|---|
| Docker run, Compose profiles, Caddy HTTPS, tunnels, image tags | |
| Quadlet systemd integration, podman-compose, SELinux | |
| Complete guide: VM + nginx + Cloudflare setup | |
| Deploy to Fly.io with persistent storage | |
| Run OmniRoute on Android via Termux | |
| Progressive Web App install, caching, architecture | |
| Clean removal for all install methods | |
Complete .env variables and references |
🧠 Features & Architecture
Section titled “🧠 Features & Architecture”| Document | Description |
|---|---|
| System architecture, data flow, and internals | |
| 7-option pipeline: off / lite / standard / aggressive / ultra / RTK / stacked | |
| Command-output compression, filters, trust, verify, raw-output recovery | |
| Caveman, RTK, stacked pipelines, dashboard/API/MCP surfaces | |
| JSON rule-pack schemas for Caveman and RTK filters | |
| Language detection and Caveman rule-pack authoring | |
| Circuit breakers, cooldowns, queue, anti-thundering herd, TLS spoofing | |
| 16-factor scoring, mode packs, self-healing | |
| 3-level proxy system, 1proxy marketplace, registry CRUD | |
| Consolidated directory: 35 documented recurring pools / 489 cataloged free-tier entries | |
| Visual dashboard tour with screenshots | |
| Beginner-friendly codebase walkthrough |
🤖 Protocols & APIs
Section titled “🤖 Protocols & APIs”| Document | Description |
|---|---|
| All endpoints with examples | |
| OpenAPI 3.0 specification | |
| 110 MCP tools, IDE configs, Python/TS/Go clients | |
| MCP installation, transports, and tool reference | |
| JSON-RPC 2.0 protocol, skills, streaming, task mgmt | |
| A2A agent card, tasks, skills, and streaming |
📋 Project & Quality
Section titled “📋 Project & Quality”| Document | Description |
|---|---|
| Development setup and guidelines | |
Where PRs target (release/*), what main and tags mean | |
| Full per-version release history | |
| Vulnerability reporting and security practices | |
| 42-language support, translation workflow, RTL | |
| Pre-release validation steps | |
| Test coverage strategy for 39,000+ static test declarations across 5,100+ tracked test files |
⭐ Top Contributors
Section titled “⭐ 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.
External contributors by merged pull requests
Section titled “External contributors by merged pull requests”| Rank | Contributor | Merged PRs | ~Changed lines |
|---|---|---|---|
| 1 | backryun | 190 | 227,977 |
| 2 | oyi77 | 180 | 407,678 |
| 3 | rdself | 145 | 80,663 |
| 4 | JxnLexn | 128 | 387,049 |
| 5 | KooshaPari | 101 | 125,747 |
| 6 | herjarsa | 88 | 230,872 |
| 7 | RaviTharuma | 79 | 55,106 |
| 8 | maxmad64bis | 69 | 394,715 |
| 9 | artickc | 59 | 33,260 |
| 10 | HouMinXi | 51 | 47,334 |
| 10 | chirag127 | 51 | 5,153 |
| 12 | xz-dev | 50 | 245,976 |
| 13 | hartmark | 47 | 52,185 |
| 14 | rqzbeh | 39 | 143,181 |
| 15 | dhaern | 34 | 19,559 |
| 16 | Dingding-leo | 33 | 1,986 |
| 17 | NomenAK | 32 | 13,854 |
| 18 | MumuTW | 30 | 16,953 |
| 19 | benzntech | 29 | 11,641 |
| 20 | pacocartones | 24 | 9,331 |
| 20 | Prudhvivuda | 24 | 6,312 |
Frozen at live release/v3.8.50 tip dafb4ae808, with merges through 2026-08-24 05:26:03 UTC. The paginated GitHub GraphQL census contains 5,911 merged PRs: 2,707 by the repository owner, 179 by Dependabot, and 3,025 external PRs from 535 distinct contributors. “Changed lines” is GitHub additions + deletions and includes generated files, lockfiles, catalogs, translations and documentation; it is churn, not authored LOC. Ties at the cutoff are retained.
GitHub-attributed commits
Section titled “GitHub-attributed commits”|
backryun 🥇 220 GitHub-attributed commits |
Paijo 🥈 219 GitHub-attributed commits |
Randi 🥉 108 GitHub-attributed commits |
Ravi Tharuma 🏅 81 GitHub-attributed commits |
Chris 🏅 70 GitHub-attributed commits |
Markus Hartung 🏅 69 GitHub-attributed commits · tied #6 |
|
Dizzle 🏅 69 GitHub-attributed commits · tied #6 |
Jan Leon 🏅 64 GitHub-attributed commits |
zenobit 🏅 62 GitHub-attributed commits |
Bob.Hou 🏅 51 GitHub-attributed commits · tied #10 |
Xiangzhe 🏅 51 GitHub-attributed commits · tied #10 |
Rechecked at 2026-08-24 06:14:31 UTC: GitHub-attributed commits reported by the repository Contributors API for the release/v3.8.50 default branch. The API returned 525 identities (415 users, 2 bots, 108 anonymous); this table excludes the maintainer, bots and anonymous identities and retains competition ties. It is distinct from both the merged-PR ranking above and the 639-person Git-metadata census below.
🙏 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.
💖 Sponsors
Section titled “💖 Sponsors”A heartfelt thank-you to the people who fund OmniRoute out of their own pocket — every contribution keeps the project free, independent and moving.
![]() Andrew 💛 Active monthly sponsor |
![]() Vlad I 💛 Active monthly sponsor |
![]() Paco Cartones 💛 Active one-time sponsor |
![]() Prof. Igor Morais 💛 Past one-time supporter |
![]() longtao 💛 Past one-time supporter |
… and others who prefer to stay private 💛
Public GitHub Sponsors revalidated on 2026-08-24. GitHub’s activeOnly status determines the active labels above; previously disclosed public one-time supporters remain thanked, and private sponsors remain anonymous.
💖 Become a sponsor → — every dollar keeps OmniRoute free and independent.
👥 600+ Contributors
Section titled “👥 600+ Contributors”Audited on 2026-08-24 at frozen base ac02c5b42f and rechecked at live release/v3.8.50 tip dafb4ae808: 639 normalized human Git identities — 407 appear as commit authors (including the maintainer) and 232 only in explicit Co-authored-by trailers. The census normalizes GitHub noreply handles, excludes 26 bot/agent/service/placeholder identities, and does not merge ordinary email addresses merely because their display names match.
How to Contribute
Section titled “How to Contribute”- Fork the repository
- Branch from the active
release/vX.Y.Ztip (notmain) — see Branching & Release Model - Create your feature branch (
git checkout -b feat/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feat/amazing-feature) - Open a Pull Request with base = that
release/vX.Y.Zbranch
See CONTRIBUTING.md for detailed guidelines.
Releasing a New Version
Section titled “Releasing a New Version”# Create a release — npm publish happens automaticallyVERSION=x.y.zgh release create "v${VERSION}" --title "v${VERSION}" --generate-notes📊 Stars
Section titled “📊 Stars”🌍 StarMapper
Section titled “🌍 StarMapper”🙏 Acknowledgments
Section titled “🙏 Acknowledgments”OmniRoute stands on the shoulders of giants. It started as a fork of 9router and a TypeScript port of the Go project CLIProxyAPI — and from there, every subsystem below was inspired by an open-source project that got there first. Each one shaped a concrete piece of OmniRoute. This is our thank-you to all of them. 🙏
⭐ star counts verified from GitHub’s REST API on August 24, 2026 — go give these projects a star. Counts are an exact dated snapshot and will naturally change.
🧬 Lineage & gateway
Section titled “🧬 Lineage & gateway”| Project | ⭐ | How it inspired OmniRoute |
|---|---|---|
| 26,161 | The original project this fork is built on — extended here with multi-modal APIs and a full TypeScript rewrite. | |
| 48,497 | The Go implementation that inspired this JavaScript / TypeScript port. | |
| 57,100 | The AI gateway whose public pricing dataset feeds our cost-tracking sync and whose provider-normalization model informed our routing. | |
| 1,410 | MIT source adapted into the vendored ChatGPT Web → Codex Responses bridge, including browser-session, response-framing, usage and web-search adapters. | |
| 48,112 | Patterns ported into stream recovery, no-thinking aliases, fallback web search, sliding-window limits, log redaction and hardened launcher flows. | |
| 322 | Cursor Composer tool-choice, output-constraint and tool-commit patterns adapted into the native Cursor executor. | |
| 457 | Fresh-login and refresh-token rotation patterns ported into Codex OAuth reauthentication. | |
| 510 | Claude Code-compatible transform defaults and billing-header behavior generalized into OmniRoute's config-driven bridge. | |
| 2 | Its Grok model mappings, fake-TypeError Statsig generator, request and device defaults, and NDJSON response processor were materially adapted into OmniRoute's Grok Web executor. | |
| 705 | The principal transitive code source behind grok2api-merged; its model, header, payload, Statsig and processor implementations are preserved in the Grok Web lineage. | |
| 7,520 | The underlying MIT source for Grok payload and device defaults, the Statsig generator, and the result.response processor carried through TQZHR and grok2api-merged. | |
| 27 | A transitive source credited by grok2api-merged for its proxy-pool layer; OmniRoute preserves that lineage notice but does not claim a proxy-pool port in its bounded Grok Web executor. | |
| 50 | Its cookie-authenticated Grok proxy and result.response.token streaming pattern informed OmniRoute's Grok Web transport. | |
| 5 | The original Grok Web implementation consulted its HTTP/browser upstream design; its direct HTTP path derives from GrokProxy, so no independent code port is claimed. | |
| 14 | Its Rust ChatOptions and response-envelope schemas informed OmniRoute's TypeScript Grok request and streaming-response types. |
🗜️ Context & token compression — engines
Section titled “🗜️ Context & token compression — engines”| Project | ⭐ | How it inspired OmniRoute |
|---|---|---|
| 100,538 | The viral "why use many token when few token do trick" project — its caveman-speak philosophy powers our standard compression mode and 30+ filler/condensation rules. | |
| 77,185 | High-performance command-output compression — inspired our RTK engine, JSON filter DSL, raw-output recovery and the stacked RTK → Caveman pipeline. | |
| 67,310 | Reversible context-compression (SmartCrusher) — inspired our headroom engine and the ccr retrieve-marker pattern. | |
| 6,598 | Prompt-compression research (LLMLingua / LLMLingua-2) — inspired our async, code-safe, fail-open llmlingua engine. | |
| 31 | The JS/ONNX port (MobileBERT / XLM-RoBERTa) used as the worker-thread backend for our LLMLingua engine. | |
| 40 | PT-BR token compression — powers our pt-BR language pack: pleonasm reduction and filler removal tuned for Brazilian-Portuguese grammar. | |
| 108,957 | The viral "lazy senior dev" YAGNI-coder skill — inspired our less-code Output Style: smallest-working-change steering that cuts _generated_ code (the output-axis sibling to Caveman's terse prose). | |
| 23,526 | Its action-first, ADHD-friendly response style was adapted into OmniRoute's concise output style across five languages. |
🧩 Compact formats, token research & code-aware tooling
Section titled “🧩 Compact formats, token research & code-aware tooling”| Project | ⭐ | How it inspired OmniRoute |
|---|---|---|
| 25,233 | Token-Oriented Object Notation — its columnar, header-plus-rows model shaped our tabular compaction stage. | |
| 41 | Its compact graph format and generic-profile design informed OmniRoute's tabular compaction and Headroom codec format. | |
| 4 | The MIT TypeScript implementation directly vendored and extended as the Headroom generic-profile codec. | |
| 494 | Brotli/SQLite cache + per-session context-delta — inspired our session-dedup engine. | |
| 1,122 | Bash-output compaction + MCP profiles — inspired our compression bail-out discipline and MCP tool-manifest reduction. | |
| 138 | Content-aware, per-file-type output compression with failure-aware bail-out — validated our per-type dispatch and minimum-gain skip. | |
| 1,951 | "Find the ghost tokens" — its offload + recoverable-handle pattern informed our CCR offload thinking. | |
| 28 | A session-graph + cross-turn line-dedup blueprint that informed our session-dedup design. | |
| 3 | Rust columnar-JSON + content-addressed retrieve + cross-message dedup — validated our headroom/ccr/session-dedup engine design and the cache-stable "compressed form is position-independent" invariant. | |
| 113 | MCP tool-schema/description compression — informed our MCP tool-manifest cardinality reduction. | |
| 197 | Aider-style repo-map ranking — informed our repo-map / retrieval-ranking exploration. | |
| 4 | Declarative shell-output reduction over MCP — validated our declarative bash-output compaction. | |
| 6,162 | TypeScript Compiler API toolkit — inspired our parser-based comment removal that preserves string, template and regex literals. |
🧠 Memory & RAG
Section titled “🧠 Memory & RAG”| Project | ⭐ | How it inspired OmniRoute |
|---|---|---|
| 63,902 | Universal memory layer — its proxy-as-write/read-boundary model shaped our memory architecture. | |
| 24,382 | Stateful agents with tiered memory — inspired our Context Control & Recovery (CCR) tiered model. | |
| 1,781 | The ProblemMap taxonomy of 16 recurring RAG/LLM failure modes — the shared vocabulary in our troubleshooting guide. |
🛰️ Traffic inspection, MITM & transparent proxy
Section titled “🛰️ Traffic inspection, MITM & transparent proxy”| Project | ⭐ | How it inspired OmniRoute |
|---|---|---|
| 66 | MITM interception/analysis of coding-assistant ↔ LLM traffic informed early Traffic Inspector requirements. Four previously derived modules — SSE merging, conversation normalization, secret masking and header sanitization — have been replaced by independent clean-room implementations based on public protocol standards. The two host-passthrough surfaces (passthrough.ts and _internal/bypass.cjs) remain OmniRoute-internal implementations classified independently; they were not rewritten as part of that replacement. | |
| 5,995 | Transparent per-process proxy routing — inspired our crash-safe MITM teardown, socket idle-timeouts, /proc process attribution and TPROXY capture. |
📚 Model data, observability & UI
Section titled “📚 Model data, observability & UI”| Project | ⭐ | How it inspired OmniRoute |
|---|---|---|
| 6,555 | Open database of AI model specs, pricing and capabilities — synced natively into our model catalog. | |
| 38,108 | The node-based graph library powering our real-time Compression Studio and Combo/Routing Studio. | |
| 40,314 | LangGraph Studio's live workflow-graph visualization inspired our Studios' real-time cascade view. | |
| 33,592 | Its trace → span → generation observability model shaped our Compression Studio waterfall. | |
| 3,631 | Istio service-mesh observability — inspired our circuit-breaker badges and error-edge visuals in the Routing/Combo Studio. | |
| 2,428 | AI/LLM brand logos that render the provider icons across our dashboard. | |
| 12,354 | Provides the MIT-licensed SVG flags used by the README language selector. |
🛡️ Security
Section titled “🛡️ Security”| Project | ⭐ | How it inspired OmniRoute |
|---|---|---|
| 721 | A curated list of secure-by-default libraries that guides our security choices (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink). |
🧭 Complementary tools
Section titled “🧭 Complementary tools”| Project | ⭐ | How it inspired OmniRoute |
|---|---|---|
| 6,564 | Inspired request deduplication, emergency zero-cost fallback, pluggable Auto-Combo strategies and multilingual intent classification. | |
| 30,652 | Its account-aware model remapping, executable-path validation and plan-label behavior informed OmniRoute's Antigravity runtime. | |
| 4,817 | Its compact quota-reset countdown format inspired the corresponding provider-limit display in OmniRoute. | |
| 32,230 | Its ACP integrations inspired OmniRoute's automatic detection of installed CLI agents. | |
| 20,507 | Identified the Grok Build quota surface; OmniRoute then verified and corrected the live wire format independently. |
📄 License
Section titled “📄 License”MIT License - see LICENSE for details.
⬆ Back to top · Built with ❤️ for the open-source AI community.
OmniRoute v3.8.51 · Node ≥22.22.2 · MIT License · omniroute.online
HagiCode
HagiCode is an agentic coding workspace: structured workflows, multi-agent execution, and Hero Dungeon views turn ideas into shipped software.
Turn ideas into polished, usable software with a smarter, faster, and more enjoyable agentic coding workflow.

- SmartStructured workflows turn intent into an executable path from idea to shipped change.
- EfficientMulti-agent workflows keep research, implementation, and review moving in parallel.
- FunHero Dungeon interfaces make long coding sessions visual, collaborative, and rewarding.




