Open-source AI gateway · 14 providers · 3 API formats
One endpoint.
Every model.
Point Claude Code, Codex, Cursor or any SDK at one URL. Omnigate routes every request, falls back when a provider fails, and tracks every token.
Watch every request find its way.
Each call goes to the best available target. When one fails, the next one answers, and you see exactly what happened.
Every provider speaks a different API, enforces different limits and has its own bad days. Omnigate turns all of them into one endpoint your tools can trust, and shows you everything it does.
One base URL. Every request routed, translated and metered.
Your tools talk to Omnigate instead of each provider. Omnigate picks the target, falls back when one fails, and records every token.
Five things happen in the milliseconds after you hit enter.
Know who's calling.
Every request carries an og- key. Omnigate checks it, applies that key's daily and monthly limits, and loads the right account's providers.
- hashed keys
- per-key quotas
- multi-user
Turn a name into a plan.
The model name becomes an ordered list of targets: a combo, a provider/model pair, a bare model name, or your global fallback.
- combos
- bare names
- global fallback
Speak every dialect.
Anthropic Messages, Chat Completions or the Responses API come in. Whatever the provider speaks goes out. Streaming, tools and images survive the trip.
- SSE both ways
- tool calls
- reasoning
Never drop a request.
A 429 or a 5xx? The next target answers in the same request, and the failing one cools down so the next call skips it.
- retry-after aware
- cooldown
- same request
Count everything.
Tokens, latency, status and the target that served it land in the request log and count toward quotas, instantly.
- request log
- usage charts
- error details
Three API formats in. Any provider out.
Omnigate speaks Anthropic Messages, OpenAI Chat Completions and the OpenAI Responses API, and converts between them on the fly.
- Claude Code on any modelRun it on GPT, Gemini, Mistral, Llama or a local Ollama model.
- Codex CLI on any modelShell, apply_patch and every other Codex tool become regular function calls.
- Nothing lost in translationTool calls, image inputs and reasoning summaries survive every hop.
Rate limited? Your agent never notices.
Group models into combos. When a target errors or returns 429, Omnigate retries the next one in the same request, then cools the failing target down.
- CombosVirtual model names made of ordered targets across any providers.
- Smart cooldownRespects
retry-afterand moves hot targets to the back of the line. - Global fallbackUnknown model names, like the ones agents send, land on a combo you choose.
Ten things other routers leave out.
Works with the tools you already use.
Set a base URL and a key. That's the whole integration.
Claude Code
Messages API with streaming, tool use and thinking blocks, on any model you route to.
export ANTHROPIC_BASE_URL="http://127.0.0.1:20130" export ANTHROPIC_AUTH_TOKEN="og-your-key" export ANTHROPIC_MODEL="coding" claude › fix the failing test in src/api.ts served by anthropic/claude-sonnet · 1.2 s
Codex CLI
Full Responses API: reasoning summaries, custom tools like apply_patch, and shell calls.
[model_providers.omnigate] base_url = "http://127.0.0.1:20130/v1" wire_api = "responses"
Cursor
Override the OpenAI base URL and add your combo as a model.
OpenAI-compatibleCline & Continue
Pick "OpenAI Compatible", paste the URL. Done.
VS Code & JetBrainsAny SDK, any language
OpenAI and Anthropic SDKs in Python, JavaScript, Go and more. Change one line.
from openai import OpenAI client = OpenAI(base_url="http://127.0.0.1:20130/v1")
See every request, token and fallback.
A built-in dashboard shows traffic, latency, errors and which target actually served each call. Give every teammate or app its own key with limits.
- Inbox-style request logStatus, latency, tokens and the full error for anything that failed.
- Per-key quotasCap spend per person, per project or per CI job.
- Keyboard-firstj / k to move, / to search. Feels like your mail client.
Terminal, desktop or cloud. Same engine.
Start on your laptop, then move to a shared server when your team joins.
$ npm start Omnigate v0.3.0 · local mode ✓ dashboard http://127.0.0.1:20130 ✓ openai /v1/chat/completions ✓ responses /v1/responses ✓ anthropic /v1/messages $
For developers
One command, one port, zero config files.
For everyone
Windows, macOS and Linux app that lives in your tray and starts with your computer.
For teams
Multi-user accounts, admin controls and isolated data per user. One docker compose up.
Your keys stay sealed. Your network stays closed.
Provider keys are encrypted with AES-256-GCM before they touch the disk. In cloud mode, Omnigate refuses to call private or internal addresses.
- Hardened sign-inscrypt password hashing, signed sessions and lockout after repeated failures.
- Hashed client keysAPI keys are stored as SHA-256 hashes and shown only once.
- Isolated tenantsEvery account has its own providers, combos, keys and logs.
Everything a router should have. Nothing to bolt on.
| Capability | Omnigate | Typical AI router |
|---|---|---|
| Anthropic + OpenAI formats, both directions | ✓ | ✓ |
| OpenAI Responses API for Codex CLI | ✓ | — |
| Combos with automatic fallback and cooldown | ✓ | ✓ |
| Native desktop app with tray & auto-start | ✓ | — |
| Multi-user cloud mode with admin controls | ✓ | — |
| Provider keys encrypted at rest | ✓ | — |
| SSRF protection for hosted deployments | ✓ | — |
| Per-key daily request & monthly token limits | ✓ | Partial |
| Single file storage, no external database | ✓ | Varies |
Point your tool at Omnigate in under a minute.
Three steps to your first routed request.
Install
Grab the desktop app, or run the server from source.
npm install && npm run build npm start
Add providers
Pick from 14 presets, paste a key, sync models in one click.
New → Provider → OpenAI ✓ 87 models synced
Connect a tool
Copy the ready-made snippet for your tool from the dashboard.
base_url = "http://127.0.0.1:20130/v1" model = "coding"
Stop babysitting rate limits.
Download Omnigate, add your providers, and let every agent you run share one reliable endpoint.