We use cookies for analytics and advertising. Ads are disabled until you accept advertising cookies. Read our Cookie Policy and Privacy Policy.
Why Every LLM Inference Framework Converged on OpenAI's API Format | TVerge Tech
Why Every LLM Inference Framework Converged on OpenAI's API Format
vLLM, TGI, and Ollama all expose /v1/chat/completions. Here's the structural reason inference engines converged on OpenAI's schema instead of designing their own.
Why Every LLM Inference Framework Converged on OpenAI's API Format
Run vllm serve, spin up Ollama, or deploy Hugging Face's Text Generation Inference, and the same thing happens: each one exposes a /v1/chat/completions endpoint that accepts a messages array and streams back delta objects shaped exactly like OpenAI's. None of these projects work for OpenAI. Several of them compete directly with it. And yet none of them designed their own request schema, response envelope, or streaming format. That's not convergent evolution — a dozen engineering teams didn't independently arrive at the same design by coincidence. It's a single company's internal API shape becoming the load-bearing interface for an entire industry, and the reasons why reveal something about how infrastructure standards actually form in the absence of a governing body.
There Is No Standards Body, So the Market Picked One Anyway
HTTP has the IETF. SQL has ISO. The LLM inference layer has neither — as of late 2025 there was still no formally specified standard for LLM APIs comparable to those bodies, yet an "OpenAI-Compatible" format had already become the de facto standard supported by most providers. That distinction matters more than it sounds like it should. A formal standard gets negotiated by committee, versioned deliberately, and implemented against a published spec that no single vendor controls. A de facto standard is just whichever schema had enough client libraries pointed at it before anyone else's had a chance to compete — and once that threshold is crossed, the incentive to diverge collapses for everyone downstream, not because the schema is technically superior, but because the [replacement cost of an established SDK ecosystem] is punishing.
vLLM's paged attention design is a good example of the opposite dynamic — a place where engines do compete on genuine technical merit, because the internals aren't exposed through a shared interface that locks the whole ecosystem in step. The API layer is different. It's the seam every downstream tool touches, so it's the one place where being different is a liability rather than a differentiator.
The Schema Itself Is the Product, Not the Model Serving It
What "OpenAI-compatible" actually means at the wire level is narrower than it sounds: a request body with a messages array of {role, content} objects, a response wrapped in a choices array with a message field, and — critically — a server-sent-events stream where each chunk carries a delta object instead of a full message. Get the non-streaming shape right but the streaming delta format wrong, and every chat UI built against the OpenAI SDK breaks mid-response instead of failing cleanly at the request.
A client pointed at a self-hosted vLLM server with this exact payload works identically to one pointed at OpenAI itself — same client library, same method calls, same streaming behavior. That's the entire value proposition in one code block: zero application-code changes to swap backends. The moment an inference engine's schema diverges — different field names, a missing stream parameter, a non-standard error envelope — it stops being a drop-in replacement and becomes a project requiring its own SDK, its own LangChain integration, its own set of framework-specific adapters. Every engine that skipped building its own schema also skipped having to convince the rest of the ecosystem to support it.
Who Actually Adopted It, and When
The convergence wasn't simultaneous. Hugging Face's Text Generation Inference began offering an OpenAI Chat Completion API-compatible interface starting with version 1.4.0, released in February 2024 — a Messages API layered on top of TGI's own existing endpoints rather than replacing them. vLLM took the same approach from a different starting point, implementing the /v1/chat/completions endpoint as the interface that would become standard for conversational serving, distinct from the older /v1/completions endpoint that just extends a raw prompt string rather than handling structured, role-based messages. Ollama, aimed squarely at local and hobbyist deployment, went further and exposed the compatible endpoint at the exact port and path shape developers were already using — an OpenAI client pointed at http://localhost:11434/v1/ with a placeholder API key works against a locally running Ollama model without modification.
Engine
Compatible Endpoint
Native Origin
Notable Escape Hatch
vLLM
/v1/chat/completions, /v1/completions
Built OpenAI-shaped from its serving layer up
extra_body for engine-only params like top_k
TGI
/v1/chat/completions (Messages API)
Added on top of TGI's own native API
Native /generate endpoint remains for non-chat use
Ollama
/v1/chat/completions via /v1/ prefix
Added alongside Ollama's native REST API
Model swapping per call without reconfiguring a client
None of the three removed their original, engine-specific interface. The OpenAI-shaped endpoint was added in addition to each engine's native API, which is itself informative: teams weren't rebuilding their serving stack around someone else's schema, they were building a thin compatibility layer in front of it. The convergence happened at the interface, not the implementation.
The Translation Layer That Made the Convergence Load-Bearing
A shared schema between inference engines only matters if something is actually routing traffic across them, and that's where a second layer comes in. LiteLLM mirrors OpenAI's chat completion format directly and translates it internally for the many different provider APIs it sits in front of, letting one client call reach different models through a single unified request and response shape. This is the part that turns "OpenAI's format happens to be popular" into "OpenAI's format is now structurally load-bearing for the whole ecosystem": once a router like LiteLLM exists that speaks nothing but the OpenAI shape internally, every new inference engine has a strong incentive to speak it too, because refusing to means being excluded from every application already built against that router. The bulk of open-source LLM tooling — LangChain, LlamaIndex, Continue, PrivateGPT, and a long tail of smaller projects — was already built to target the OpenAI API specifically, so implementing the same interface let engines like Ollama become drop-in backends for that entire ecosystem without requiring any of those tools to add engine-specific support.
LiteLLM's request routing and fallback logic shows the mechanics of that translation layer in more depth. The short version: LiteLLM isn't a model, and it isn't tied to any single engine — it's a proxy that presents one schema outward and does the dialect conversion internally, which only works because there's now a dominant dialect worth converging on. LangChain's own model-loading interface reflects the same assumption: pointing init_chat_model at a self-hosted engine like vLLM is handled by specifying model_provider="openai" along with a custom base_url, treating "OpenAI-shaped" as a protocol rather than a brand.
What the Convergence Doesn't Cover
Schema compatibility at the request/response level doesn't mean feature parity underneath it. vLLM supports several parameters that fall outside the official OpenAI spec — top_k being one example — and handles them by accepting an extra_body field on the client request rather than by forking the schema itself. That's the pattern across the ecosystem: engine-specific capabilities get bolted on as optional extensions to the shared shape, not as competing formats. It keeps the core contract stable while still letting vLLM, TGI, and Ollama differentiate on serving performance, quantization support, and hardware targeting — the parts of the stack where competition is actually happening.
vLLM's V1 engine architecture and TGI's speculative decoding pipeline are both good illustrations of where the real engineering competition lives now. It isn't in the request schema — that fight is over. It's in what happens after the request lands: how fast the engine schedules a batch, how it manages KV cache under memory pressure, how much throughput it can hold at high concurrency. The API format stopped being a competitive surface the moment enough of the ecosystem depended on it staying still.
The Structural Lesson
The interesting part isn't that OpenAI "won" an API design contest. It's that the format won by being first to accumulate enough dependent tooling that switching costs, not technical merit, decided the outcome. what a stable LLM API contract means for production reliability is the practical consequence for anyone building on top of this layer: the schema you're integrating against is now closer to an unofficial protocol than a single vendor's product decision, which is exactly why so many competitors chose to implement it rather than replace it.
3Demystifying the Rust Borrow Checker: Fix Lifetime Errors Fast