OmniRoute
github.com/diegosouzapw/omniroute- Category
- Developer Tools
- Rank
- No. 685Tools index
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Models: Train & Run
- Interfaces
- API · Web
- Builder
- diegosouzapw
- GitHub
- 80.5k stars
- Latest release
- v3.8.52
- Date
About
A self-hosted AI gateway with provider routing, account quotas, fallback strategies, and a web dashboard. It exposes compatible model APIs and includes MCP and agent-to-agent integrations. Free-tier availability and model costs remain subject to each provider’s account and usage rules.
What it does
OmniRoute runs on your own machine or server as one OpenAI-style endpoint that coding tools such as Claude Code, Codex, Cursor and Cline point at. Behind that single address it rewrites each request into the format the chosen upstream service expects, decides which service and which signed-in login should answer, and moves on to the next option when one times out or hits a rate limit. The same endpoint also handles embeddings, image generation, speech, search and reranking, and the project ships a browser control panel, a command-line tool and a desktop build.
Why it's ranked here
MIT licensed, installable from npm, Docker Hub or a desktop build, and unusually explicit about how it fails. The failover policy sorts errors before retrying: timeouts, network errors, rate limits and upstream server errors may move to another service, while authentication, permission and invalid-request errors are not retried blindly, with a default cap of three attempts. A route preview scores every candidate and names the winner without sending a single upstream request. The security policy documents encrypted credential storage, scoped access for its MCP (Model Context Protocol) tools, and a 48-hour acknowledgment target for vulnerability reports.
What's good
Routing decisions are explainable: each pick returns the ranked list of candidates with their factors and reasons, and services with an exhausted quota or an open circuit breaker are simply ineligible. The free-tier token headline counts each shared pool once and keeps quotas behind regional identity checks out of the total. Stored API keys and tokens can be encrypted with AES-256-GCM. The server refuses to start without its signing secrets and rejects known-weak values like changeme. Every MCP tool call is written to an audit log, and a call missing the required scope is refused and logged.
Tradeoffs
Credential encryption is off by default: without a storage encryption key, secrets are kept in plain text. The prompt-injection guard is described by the project itself as best-effort, only high-severity matches are blocked, and the guardrail framework fails open, so an error never stops traffic. The network layer spoofs browser-like TLS fingerprints and mimics native client headers to reduce bot detection, which sits uneasily with some providers' terms; the README marks 13 providers as avoid in its terms-risk catalogue. Free-tier totals are re-audited every two weeks and move in both directions. The surface is very large, from MITM proxying to memory and skills.
How to use it well
Fits a developer who runs several coding agents across a mix of paid subscriptions and free tiers and wants one address with automatic fallback. Set the two required signing secrets and a storage encryption key before first start, and run the container read-only with a data volume as the security policy shows. Use the route preview to confirm which service a request would hit before spending quota. If agents reach it over MCP, turn on scope enforcement. It does not provide provider uptime guarantees, and the hosted cloud sync service is outside the open-source scope.
Technical notes+
open-sse/index.ts imports a proxy-aware fetch patch before anything else, then re-exports the translator, token refresh for Claude, Google, Codex, Copilot and others, and per-modality handlers. open-sse/services/routing/index.ts fans each routing event out to a 500-entry in-memory ring buffer, a quality tracker feeding auto-combo scoring, and an optional OTLP exporter batching 64 events every 10 seconds. open-sse/translator/index.ts replays reasoning content for DeepSeek and Xiaomi MiMo, which reject turns missing it. open-sse/mcp-server/server.ts wraps each tool in withScopeEnforcement, logging denials to the audit store. src/lib/guardrails/index.ts exports PII, prompt-injection and credential maskers.
Observed
- License
- MIT
- Language
- TypeScript on Node.js, built on Next.js
- Runtime requirement
- Node.js 22.22.2 or newer within 22, or Node.js 24 through 26
- Packaging
- npm package with an omniroute command-line binary, Docker image, Electron desktop build
- Interfaces
- OpenAI-compatible HTTP API, MCP server over stdio, SSE and Streamable HTTP, A2A server over JSON-RPC 2.0
- Local storage
- SQLite, with optional AES-256-GCM encryption of stored credentials
- Required configuration
- JWT and API key signing secrets; server fails fast without them
- Vulnerability reporting
- GitHub Security Advisories, not public issues
Read from README.md, package.json, LICENSE, docs/architecture/ARCHITECTURE.md, docs/OMNIROUTE_PROVIDER_FAILOVER.md, docs/OMNIROUTE_ROUTING_POLICY.md, open-sse/index.ts, open-sse/services/routing/index.ts, open-sse/services/autoCombo/index.ts, open-sse/translator/index.ts, open-sse/mcp-server/server.ts, SECURITY.md, src/lib/guardrails/index.ts.
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.