← Open Source
diegosouzapw

OmniRoute

Never stop coding. Free MIT AI gateway: one endpoint, 359 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by hundreds of contributors

InfrastructureObservabilityGatewayTypeScript
Open on GitHub
Momentum
+358stars in 24 hours+0.5%
73.2k
Stars
10.5k
Forks
+2,242
This week
100
Contributors
Created 2026-02-13 · Updated 2026-10-05 · #34 today
Top developers
README

OmniRoute Dashboard

🚀 OmniRoute — The Free AI Gateway

OmniRoute — Never stop coding. Every AI tool → 358 providers — 150+ free — through one endpoint. Claude Code, Codex, Cursor, Cline, Copilot & Antigravity into FREE Claude / GPT / Gemini with auto-fallback. RTK + Caveman stacked compression saves 15–95% tokens (~89% avg) — never hit limits. 358 AI providers · 150+ free tiers · ~1.62B free tokens/mo · 19 routing strategies · $0 to start.

💰 ~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).

OmniRoute free-tier budget card: ~1.62B free tokens per month steady, up to ~2.22B in the first month with signup credits, from 35 documented recurring pool keys covering 489 cataloged free-tier entries behind one endpoint. Honest pool-deduped math — each shared pool counted once, including 17 recurring pools with a published positive monthly token budget plus five per-model Groq caps; 13 providers are marked avoid in the terms-risk catalog so you decide. Budget bar includes Mistral 1B, Nara 210M, LLM7 150M, xKiro 150M, Groq 30M (five per-model caps) and smaller pools, plus first-month signup credits and permanently-free no-token-cap providers surfaced separately so they never inflate the headline. Live used/remaining on /dashboard/free-tiers.

Animated summary of the live /dashboard/free-tiers page. 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.

Stars diegosouzapw%2FOmniRoute | Trendshift Star History Rank olud.ai

💬 Join the community

👋 Follow the maintainer — get new providers, releases & tips first:

Follow Diego on LinkedIn Follow @diegosouzapw on GitHub

Discord Telegram WhatsApp Global WhatsApp Brasil Website

Questions, provider tips, roadmap & support → Discord · Telegram · WhatsApp 🌍 Global / 🇧🇷 Brasil / Portal

📈 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

npm version NPM Monthly Docker Hub License: MIT Docker Pulls Electron Downloads

🚀 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

🌐 In 67 languages

English (en) Português — Brasil (pt-BR) Português (pt) Español (es) Français (fr) Italiano (it) Deutsch (de) Nederlands (nl) Русский (ru) Українська (uk-UA) Polski (pl) Čeština (cs) Slovenčina (sk) Română (ro) Magyar (hu) Български (bg) Dansk (da) Suomi (fi) Norsk (no) Svenska (sv) 中文 — 简体 (zh-CN) 中文 — 繁體 (zh-TW) 日本語 (ja) 한국어 (ko) ไทย (th) Tiếng Việt (vi) Bahasa Indonesia (id) Bahasa Melayu (ms) Filipino (phi) हिन्दी (hi) ગુજરાતી (gu) मराठी (mr) தமிழ் (ta) తెలుగు (te) বাংলা (bn) اردو (ur) فارسی (fa) العربية (ar) עברית (he) Türkçe (tr) Azərbaycan (az) Kiswahili (sw) Ελληνικά (el) Hrvatski (hr) Српски (sr) Lietuvių (lt) Eesti (et) Latviešu (lv) Slovenščina (sl) Malti (mt) Gaeilge (ga) ಕನ್ನಡ (kn) മലയാളം (ml) ଓଡ଼ିଆ (or) ਪੰਜਾਬੀ (pa) नेपाली (ne) සිංහල (si) မြန်မာ (my) ខ្មែរ (km) Hausa (ha) Yorùbá (yo) Igbo (ig) አማርኛ (am) Oʻzbekcha (uz) ქართული (ka) Հայերեն (hy) Bosanski (bs)

🆓 Works the second you install it — no keys, no config

Works the second you install it — zero config. Three steps: 1. Install — npm i -g omniroute, server boots on localhost:20128. 2. Point your tool at http://localhost:20128/v1 — any OpenAI-compatible tool (Claude Code, Cursor, Cline). 3. It answers — call model auto for an instant reply, with no API key, no signup, no configuration. Keyless provider OpenCode Free is pre-wired into the auto combo, so a fresh install responds out of the box.

# 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

The Promise — One endpoint and 358 providers. Automatic fallback keeps routing while another healthy target is available. Six pillars: resilient fallback across 358 providers · up to 95% token savings on eligible workloads · $0 to start with 150+ free tiers and 54 recurring/keyless free-forever providers · 36 CLI/agent integrations through one config · OpenAI, Claude, Gemini and Responses API compatibility at /v1 · production controls including circuit breakers, TLS stealth, MCP 110 tools, A2A, memory, guardrails, evals and 39,000+ static test declarations across 5,100+ tracked test files.

🤔 Why OmniRoute?

Why OmniRoute — stop juggling 10 dashboards, dead API keys and surprise bills. Ten daily pains vs fixes: quota expiring unused → maximize subscriptions; rate limits mid-coding → 4-tier auto-fallback (Subscription → API → Cheap → Free); tool outputs burning tokens → RTK + Caveman compression (15–95%); expensive APIs → cost-optimized routing; every tool its own setup → one endpoint, one dashboard; AI blocked → 3-level proxy + TLS stealth; dead keys → 3-layer resilience (circuit breakers, key cooldown, model lockout); team sharing one subscription → key pools with fair-share quotas; prompts through someone's cloud → local-first with AES-256-GCM encrypted keys; no spend visibility → live analytics (usage, quota, savings, p95 latency).

OmniRoute request flow: your IDE or CLI (Claude Code, Cursor, Cline…) calls one local endpoint (http://localhost:20128/v1); the OmniRoute Smart Router (RTK + Caveman compression, 19 routing strategies, circuit breakers, TLS stealth, MCP, A2A, guardrails) can fall back across 4 provider tiers while an eligible healthy target remains — Tier 1 Subscription, Tier 2 API Key, Tier 3 Cheap and Tier 4 Free.

🤝 Supported by our Open Source Friends

Kimi K3 — Open Frontier Intelligence · 2.8T parameters · 1M-token context

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: [email protected]

  [![Kimi (Moonshot AI)](public/providers/kimi-logomark-light.svg)](https://platform.kimi.ai?track_id=track-8197581fdd7d4139a0f562e4a03c3798&aff=omniroute)

Kimi
Moonshot AI

   ![Founding Open Source Friend](https://img.shields.io/badge/Founding_Friend-1783FF?style=flat-square) 




  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](https://platform.kimi.ai?track_id=track-8197581fdd7d4139a0f562e4a03c3798&aff=omniroute) (kimi-k3) and the [Kimi Code coding plan](https://www.kimi.ai/code?aff=omniroute) (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 →](https://platform.kimi.ai?track_id=track-8197581fdd7d4139a0f562e4a03c3798&aff=omniroute)








  [![Cheaper Inference](./public/providers/cli-generic.svg)](https://cheaperinference.com/?utm_source=omniroute)

Cheaper Inference
cheaperinference.com

   ![Open Source Friend](https://img.shields.io/badge/Open_Source_Friend-31f889?style=flat-square&labelColor=04170d) 




  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 →](https://cheaperinference.com/?utm_source=omniroute)

Links tagged aff=omniroute are partner links. They fund the project at no extra cost to you.

🎟️ Affiliates Promo — free signup coupons from providers we don't sponsor (click to expand)

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](./public/providers/cli-generic.svg)](https://agentrouter.org/register?aff=70LM)

AgentRouter
agentrouter.org

  [AgentRouter](https://agentrouter.org/register?aff=70LM) — 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 →](https://agentrouter.org/register?aff=70LM)
    


  ⚠️ 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

All 19 combo routing strategies animated — one tile per strategy: priority, fill-first, weighted, round-robin, p2c, least-used, random, strict-random, cost-optimized, headroom, reset-window, reset-aware, context-relay, context-optimized, cache-optimized, lkgp, auto, fusion, pipeline. See the table above for what each one does.

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

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

🧪 Parallel fan-out to a panel of models (one per provider, 5 by default), returns one answer; one upstream call per panel model, not fault injection

🔀 Or build your own — 19 routing strategies

All 19 strategies — mix & match per combo step:

Strategy

What it does

1

priority

First-target ordered list — drain each before the next 🥇

2

fill-first

Fill each target's quota fully before moving on

3

weighted

Weighted random by per-target weight

4

round-robin

Cycle through targets in order

5

p2c

Power-of-two-choices random load balancing

6

least-used

Pick the target with the lowest current load

7

random

Uniform random pick (deduplicated)

8

strict-random

Random without de-duplicating repeats 🎲

9

cost-optimized

Minimize $ per request from live catalog pricing 💸

10

headroom

Pick the target with the most remaining quota

11

reset-window

Prefer the target whose quota window resets soonest

12

reset-aware

Rank by quota reset time — short windows first 📊

13

context-relay

Hand off context across targets for long conversations 🧠

14

context-optimized

Pick the best fit for the current context size

15

cache-optimized

Pin each reusable prompt prefix to the same account — maximize prompt-cache hits 🎯

16

lkgp

Last-Known-Good Path — pins to the last successful provider, then falls back to rules

17

auto

16-factor live scoring across every connection 🤖

18

fusion

Fan out to a panel of models + a judge synthesizes one answer 🧬

19

pipeline

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)

OmniRoute resilience — 3 independent self-healing layers, the right layer for the right failure. Layer 1 provider circuit breaker (whole provider): trips only on 408/5xx, thresholds OAuth 8× / API-key 12× / local 2×, resets 60s/30s/15s into a HALF-OPEN probe, lazy recovery; while OPEN the combo reroutes to the next provider. Layer 2 connection cooldown (one key/account): base 5s OAuth / 3s API-key, exponential ×2 backoff with anti-thundering-herd guard, 429 honors Retry-After, success clears all error state; one cooling key is skipped while sibling keys keep serving. Layer 3 model lockout (one model): per-model 429, local 404 or mode denials lock just that model — never the whole connection. Terminal states (banned, expired, credits exhausted) are for the operator, not cooldowns.

📖 Auto-Combo Engine · Resilience Guide

🏆 What Sets OmniRoute Apart

What sets OmniRoute apart — a dated feature snapshot vs 9router, OpenRouter, CLIProxyAPI and LiteLLM across 13 capabilities. OmniRoute: 358 providers, 150+ free tiers built in, 19 routing strategies, 12-engine token compression, built-in MCP server with 110 tools, A2A agent protocol, persistent memory, guardrails, cloud agents, TLS fingerprint stealth, Desktop/Termux/PWA and 42 i18n UI locales. OmniRoute is MIT-licensed and self-hostable. Competitor capabilities and counts may change; see the linked methodology.

📊 Full methodology & per-feature detail vs 9router, OpenRouter, CLIProxyAPI & LiteLLM → docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md

💚 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.

⭐ Star the repo

Free — genuinely helps visibility

Star OmniRoute

🐙 GitHub Sponsors

One-off or monthly · zero platform fee

github.com/sponsors/diegosouzapw

☕ Ko-fi

Quick one-off tip, no signup for the donor

ko-fi.com/diegosouzapw

🧋 Buy Me a Coffee

Small, informal gesture

buymeacoffee.com/diegosouzapw

🖐 Liberapay

Recurring · non-profit · open source

liberapay.com/diegosouzapw

🇧🇷 PIX (Brazil)

Instant, no fees

key & QR below

₿ Crypto

BTC · ETH · USDT-TRC20 · USDC-Solana

addresses below

🇧🇷 PIX — instant, no fees (Brazil)

OmniRoute PIX QR code

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)

₿ BTC

Bitcoin (SegWit)

bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd

Ξ ETH

Ethereum (ERC20)

0x64Cf6B68A6Ff34288e89172950a2d00102337a84

₮ USDT

Tron (TRC20)

TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2

$ USDC

Solana

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

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

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/models ordering — 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 run launches 7 CLIs (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); omniroute configure supports 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) + an antigravity OAuth helper for VPS installs. → Remote Mode
  • 🧭 Smarter auto-routing — auto/: 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-Decision header naming the strategy/provider/latency that served it, a new cache-optimized combo strategy + Auto-Combo cacheAffinity factor route repeat requests back to the connection holding the cached prefix, and a read-only /v1/auto-combo/{channel}/candidates endpoint exposes an auto/* 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/chaos parallel multi-model fan-out, a Telegram bot bridge, an in-app version manager and LMArena-ELO free-provider rankings. → Docs

🤖 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
                           

Cline
Cline
                           

Kilo Code
Kilo Code

Zoo Code
Zoo Code

Continue
Continue
                           

Aider
Aider
                           

ForgeCode
ForgeCode
                           

jcode
jcode
                           

DeepSeek TUI
DeepSeek TUI
                           

CodeWhale
CodeWhale
                           

OpenCode
OpenCode
                           

Factory Droid
Factory Droid
                           

GitHub Copilot CLI
Copilot CLI
                           

Cursor CLI
Cursor CLI
                           

Smelt
Smelt
                           

Pi (pi-coding-agent)
Pi
                           

Grok Build (xAI)
Grok Build
                           

Hermes Agent (Nous Research)
Hermes Agent
                           

OpenClaw
OpenClaw
                           

Goose
Goose
                           

Open Interpreter
Open Interpreter
                           

Warp AI
Warp AI
                           

deyin.ai
deyin.ai
                           

+ also works with · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · any OpenAI-compatible tool

📖 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 Code
omniroute run codex    --model glm/glm-5.2             # OpenAI Codex CLI
omniroute run aider    --model glm/glm-5.2 -- --message "reply OK"
omniroute run goose    --model glm/glm-5.2
omniroute 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 kilo

Every command honors the active remote context (omniroute connect ), --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

357 registered providers across the canonical chat, media, search, local, cloud-agent and system collections, including 152 carrying hasFree: true discovery 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

OpenAI
OpenAI
                           

Anthropic
Anthropic
                           

Gemini
Gemini
                           

xAI Grok
xAI Grok
                           

DeepSeek
DeepSeek
                           

Mistral
Mistral
                           

Qwen
Qwen
                           

Meta Llama
Meta Llama
                           

Groq
Groq
                           

NVIDIA
NVIDIA
                           

MiniMax
MiniMax
                           

Cohere
Cohere
                           

Perplexity
Perplexity
                           

Hugging Face
HuggingFace
                           

Together
Together
                           

Fireworks
Fireworks
                           

Cloudflare
Cloudflare
                           

Baidu
Baidu
                           

…and 330+ more — every icon resolves live from the dashboard's provider catalog. 📖 Provider Reference

🆓 Free Forever — $0, no card

OpenCode Zen
OpenCode Zen
DeepSeek V4, Nemotron 3
No token cap

Kilo Code
Kilo Code
Auto-router, Tencent Hy3
Free forever

Requesty
Requesty
GPT-OSS 120B, Nemotron
Free forever

SiliconFlow
SiliconFlow
DeepSeek V3.2 / R1
Free tier

Z.AI GLM
Z.AI GLM
GLM-4.7 / 4.5-Flash
Free forever

Baidu ERNIE
Baidu ERNIE
ERNIE 4.0
Free forever

Qoder AI
Qoder AI
Qwen3-Max, Kimi-K2
Unlimited FREE

Pollinations
Pollinations
GPT, Llama, Claude
No key needed

Cloudflare AI
Cloudflare AI
50+ models
10K neurons/day

NVIDIA NIM
NVIDIA NIM
GLM, MiniMax
~40 RPM free

Cerebras
Cerebras
GLM 4.7, GPT-OSS
1M tokens/day

OpenRouter
OpenRouter
:free models
+$10 → higher RPM

📖 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

🎩 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

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

omniroute serve is 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, no npm install -g omniroute to 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-tray

Prefer 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

Private and local-first — OmniRoute's gateway and control plane run on your machine. Prompts are sent to the upstream provider selected for each request; OmniRoute adds no hosted prompt-processing hop and telemetry is disabled by default. Credentials are encrypted at rest with AES-256-GCM; controls include API-key scoping, IP filtering, rate limits, prompt-injection guards, upstream-header scrubbing, opt-in PII redaction, sanitized errors and a local SQLite audit trail. OmniRoute is MIT-licensed and self-hostable.

📖 Authorization · Guardrails · Compliance

🔌 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)

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

🛰️ 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 context
omniroute models                         # ← runs against the REMOTE server
omniroute configure codex                 # ← picks a remote model, writes a local Codex profile
omniroute tokens create --name ci --scope read   # mint narrower tokens for other machines
omniroute contexts use default            # ← switch back to the local server

Tokens are scoped read / write / admin; process-spawning routes stay loopback-only. 📖 Remote Mode

Animated terminal demoing the OmniRoute CLI — omniroute providers list, omniroute combo list and omniroute health — cycling over the 86-command top-level surface: 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, 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

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

📖 How it works — pipeline, architecture & savings math

OmniRoute compression pipeline: an illustrative 10,000-token client request passes through 12 composable engines — Session-Dedup, CCR, Lite, RTK, Responses Tool Output, Headroom, Relevance, Caveman, Aggressive, LLMLingua-2, Ultra and OmniGlyph — and can reach the provider at about 1,080 tokens in the documented stacked example. Structured content is protected by preservation guards and per-step fidelity gates; explicit lossy or experimental modes may transform eligible content.

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

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

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 / ultra intensity. 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-compression header › routing-combo override › active named profile › adaptive / auto-trigger › panel default › off. The applied plan echoes back in the X-OmniRoute-Compression: ; 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

1) Install & run

npm install -g omniroute
omniroute

💡 See npm warn ERESOLVE or 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/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.

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/models
OpenAI chat:      http://localhost:20128/vscode/YOUR_KEY/chat/completions
OpenAI responses: http://localhost:20128/vscode/YOUR_KEY/responses
Ollama chat:      http://localhost:20128/vscode/YOUR_KEY/api/chat
Ollama tags:      http://localhost:20128/vscode/YOUR_KEY/api/tags

Use these only for clients that cannot attach Authorization: Bearer .... Header auth remains the preferred mode.

📦 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:latest

Full table: Docker Guide — runtime RAM.

Pre-release Docker channel: diegosouzapw/omniroute:next and diegosouzapw/omniroute:next-web follow the current default release/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-in bun:sqlite driver when running under Bun, falling back to better-sqlite3 on Node.js or sql.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) follow OMNIROUTE_USE_TURBOPACK exactly as on Node: Turbopack by default, OMNIROUTE_USE_TURBOPACK=0 to build with Webpack (Dockerfile.bun exposes it as a --build-arg).
  • Dedicated Bun Dockerfile: Multi-stage Dockerfile.bun for native Bun production deployments (docker build -f Dockerfile.bun -t omniroute:bun .).
# Install and run with Bun
bun install
bun run dev

🛠️ From source

cp .env.example .env && npm install
PORT=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 flakes
nix develop
npm run dev

# Or using devbox
devbox run npm run dev

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

🦭 Podman

# 1. Prepare the bind-mounted data directory
mkdir -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 start
echo "CONTAINER_HOST=podman" >> .env
podman compose --profile base up -d --build

On 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 it

For 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

📹 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

  [![Instagram Reel](https://placehold.co/320x180/111827/FFFFFF?text=Instagram+Reel+%7C+nick_saraev&font=montserrat&bold=true)](https://www.instagram.com/reel/Da8ZthUPK98/)  

  🎬 #1 — Instagram  

  nick_saraev — 3,042,474 views




  [![Instagram Reel — theopenstack](https://placehold.co/320x180/111827/FFFFFF?text=Instagram+Reel+%7C+theopenstack&font=montserrat&bold=true)](https://www.instagram.com/reel/DaSs65mMrHk/)  

  🎬 #2 — Instagram  

  theopenstack — 692,419 views




  [![TikTok — milesreevesai](https://placehold.co/320x180/111827/FFFFFF?text=TikTok+%7C+milesreevesai&font=montserrat&bold=true)](https://www.tiktok.com/@milesreevesai/video/7667980059189366019)  

  🎬 #3 — TikTok  

  milesreevesai — 620,400 views




  [![YouTube — Vaibhav Sisinty](https://img.youtube.com/vi/QucgvbO5gsM/maxresdefault.jpg)](https://www.youtube.com/watch?v=QucgvbO5gsM)  

  🎬 #4 — YouTube  

  Vaibhav Sisinty — 391,109 views




  [![Instagram Reel — buildwithai.club](https://placehold.co/320x180/111827/FFFFFF?text=Instagram+Reel+%7C+buildwithai.club&font=montserrat&bold=true)](https://www.instagram.com/reel/DbIt9AjK7-U/)  

  🎬 #5 — Instagram  

  buildwithai.club — 347,652 views

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

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

Layer

Technology

Runtime

Node.js 22.x / 24.x LTS — >=22.22.2 <23 || >=24.0.0 <27

Language

TypeScript 6.0 — 100% TypeScript across src/ and open-sse/ (zero any in core since v2.0)

Framework

Next.js 16 + React 19 + Tailwind CSS 4

Database

better-sqlite3 (SQLite, WAL journaling) + LowDB (JSON legacy) — 122 domain modules, 193 migrations

Memory

SQLite FTS5 full-text + int8-quantized vector embeddings, typed decay

Schemas

Zod 4 — MCP tool I/O validation + API contracts

Protocols

MCP (stdio / HTTP / SSE) + A2A v0.3 (JSON-RPC 2.0 + SSE)

Streaming

Server-Sent Events (SSE) + WebSocket bridge (/v1/ws)

Compression

12-engine pipeline — RTK, Caveman, LLMLingua-2 (MobileBERT ONNX), GCF, OmniGlyph

Auth & security

OAuth 2.0 (PKCE) + JWT + API Keys + MCP scoped auth · AES-256-GCM at rest · DOMPurify

Stealth

wreq-js — JA3 / JA4 TLS fingerprint impersonation, 3-level proxy

Resilience

Circuit breaker, exponential backoff, anti-thundering-herd, auto-combo self-healing

Logging

pino — structured JSON logs with request context

Testing

Node.js test runner + Vitest — 39,000+ static test declarations across 5,100+ tracked test 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

Links

Website · npm · Docker Hub

📖 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

Remote Mode

Drive a remote OmniRoute (VPS) from your laptop CLI via scoped access tokens

Claude Code Config

Point Claude Code at OmniRoute (local/remote) with launch + per-model profiles

Quick Start

3-step install → connect → configure

🔧 Operations & Deployment

Document

Description

Docker Guide

Docker run, Compose profiles, Caddy HTTPS, tunnels, image tags

Podman Guide

Quadlet systemd integration, podman-compose, SELinux

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

16-factor scoring, mode packs, self-healing

Proxy Guide

3-level proxy system, 1proxy marketplace, registry CRUD

Free Tiers

Consolidated directory: 35 documented recurring pools / 489 cataloged free-tier entries

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

110 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

Branching & Release Model

Where PRs target (release/*), what main and tags mean

Changelog

Full per-version release history

Security Policy

Vulnerability reporting and security practices

i18n Guide

42-language support, translation workflow, RTL

Release Checklist

Pre-release validation steps

Coverage Plan

Test coverage strategy for 39,000+ static test declarations across 5,100+ tracked test files

⭐ 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

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

  [![backryun](https://github.com/backryun.png)   

    backryun](https://github.com/backryun)  

  🥇 220 GitHub-attributed commits




  [![Paijo](https://github.com/oyi77.png)   

    Paijo](https://github.com/oyi77)  

  🥈 219 GitHub-attributed commits




  [![Randi](https://github.com/rdself.png)   

    Randi](https://github.com/rdself)  

  🥉 108 GitHub-attributed commits




  [![Ravi Tharuma](https://github.com/RaviTharuma.png)   

    Ravi Tharuma](https://github.com/RaviTharuma)  

  🏅 81 GitHub-attributed commits




  [![Chris](https://github.com/christopher-s.png)   

    Chris](https://github.com/christopher-s)  

  🏅 70 GitHub-attributed commits




  [![Markus Hartung](https://github.com/hartmark.png)   

    Markus Hartung](https://github.com/hartmark)  

  🏅 69 GitHub-attributed commits · tied #6








  [![Dizzle](https://github.com/maxmad64bis.png)   

    Dizzle](https://github.com/maxmad64bis)  

  🏅 69 GitHub-attributed commits · tied #6




  [![Jan Leon](https://github.com/JxnLexn.png)   

    Jan Leon](https://github.com/JxnLexn)  

  🏅 64 GitHub-attributed commits




  [![zenobit](https://github.com/zen0bit.png)   

    zenobit](https://github.com/zen0bit)  

  🏅 62 GitHub-attributed commits




  [![Bob.Hou](https://github.com/HouMinXi.png)   

    Bob.Hou](https://github.com/HouMinXi)  

  🏅 51 GitHub-attributed commits · tied #10




  [![Xiangzhe](https://github.com/xz-dev.png)   

    Xiangzhe](https://github.com/xz-dev)  

  🏅 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

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](https://github.com/drewbitt.png?size=140)   

    Andrew](https://github.com/drewbitt)  

  💛 Active monthly sponsor




  [![Vlad I](https://github.com/psylligent.png?size=140)   

    Vlad I](https://github.com/psylligent)  

  💛 Active monthly sponsor




  [![Paco Cartones](https://github.com/pacocartones.png?size=140)   

    Paco Cartones](https://github.com/pacocartones)  

  💛 Active one-time sponsor




  [![Professor Igor Morais Vasconcelos](https://github.com/igormorais123.png?size=140)   

    Prof. Igor Morais](https://github.com/igormorais123)  

  💛 Past one-time supporter




  [![longtao](https://github.com/longtao77.png?size=140)   

    longtao](https://github.com/longtao77)  

  💛 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

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

  1. Fork the repository
  2. Branch from the active release/vX.Y.Z tip (not main) — see Branching & Release Model
  3. Create your feature branch (git checkout -b feat/amazing-feature)
  4. Commit your changes (git commit -m 'feat: add amazing feature')
  5. Push to the branch (git push origin feat/amazing-feature)
  6. Open a Pull Request with base = that release/vX.Y.Z branch

See CONTRIBUTING.md for detailed guidelines.

Releasing a New Version

# Create a release — npm publish happens automatically
VERSION=x.y.z
gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes

📊 Stars

Star History Chart

🌍 StarMapper

StarMapper

🙏 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

Project

⭐

How it inspired OmniRoute

9router

26,161

The original project this fork is built on — extended here with multi-modal APIs and a full TypeScript rewrite.

CLIProxyAPI

48,497

The Go implementation that inspired this JavaScript / TypeScript port.

LiteLLM

57,100

The AI gateway whose public pricing dataset feeds our cost-tracking sync and whose provider-normalization model informed our routing.

codex-chatgpt-web

1,410

MIT source adapted into the vendored ChatGPT Web → Codex Responses bridge, including browser-session, response-framing, usage and web-search adapters.

free-claude-code

48,112

Patterns ported into stream recovery, no-thinking aliases, fallback web search, sliding-window limits, log redaction and hardened launcher flows.

composer-api

322

Cursor Composer tool-choice, output-constraint and tool-commit patterns adapted into the native Cursor executor.

codex-multi-auth

457

Fresh-login and refresh-token rotation patterns ported into Codex OAuth reauthentication.

opencode-anthropic-auth

510

Claude Code-compatible transform defaults and billing-header behavior generalized into OmniRoute's config-driven bridge.

grok2api-merged

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.

TQZHR/grok2api

705

The principal transitive code source behind grok2api-merged; its model, header, payload, Statsig and processor implementations are preserved in the Grok Web lineage.

chenyme/grok2api

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.

grok2api-pro

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.

GrokProxy

50

Its cookie-authenticated Grok proxy and result.response.token streaming pattern informed OmniRoute's Grok Web transport.

GrokBridge