Speak One Protocol. Run Any Model.
Your app keeps one SDK and one wire format. The gateway translates across the four chat-protocol families and normalizes streaming, tool calls and errors — so adding a vendor or swapping a model never touches business code.
What the community actually complains about
"We added a second vendor and now we maintain two SDK paths, two streaming parsers and two tool-call formats." "Claude Code only speaks Anthropic, so we could not put it on any other model." "Every proxy that says OpenAI-compatible breaks somewhere else."
The real cost of a model is the API call plus the code written around it. The second part never shows up on the invoice — it shows up in sprints, and it multiplies with every vendor you add.
How GateLLM does it
Four protocol families on both sides — OpenAI, Anthropic, Gemini, DashScope — translate any-to-any. An Anthropic-only client (Claude Code, claude-code-action) reaches a Qwen- or DeepSeek-native model without a client change; beyond the four families, 15 more upstream protocol shapes are covered per the interop matrix.
A capability-normalization layer handles what a protocol swap actually costs: streaming chunk shapes, tool call and tool result mapping, image and multimodal parts, and error semantics. Keys, policy and cost attribution apply the same way whichever protocol pair a request crosses.
5 levers that actually land
- One SDK, one streaming parser, one tool-call format in the client — a new vendor is a console change
- Anthropic-only agents can run any supported model; no fork, no adapter
- Model swaps stay inside the gateway, so application code and its tests stay untouched
- Native egress: each provider receives its own protocol instead of a re-translated OpenAI envelope
- The same key, budget and policy surface across every protocol pair