Two engineers working at monitors late at night. Photo by blue sky on Unsplash. Source: https://unsplash.com/photos/QN1Sz74hVjg (Unsplash License).

Executive Summary

llm-d reached version 1.0 on 20 October. The release stabilises the router configuration API, adds priority and fairness aware flow control, and rolls prefill and decode replicas as a single unit. More than 500 contributors across 25 organizations built it, it ships under Apache 2.0, and it’s still a CNCF Sandbox project.

The verdict is that the project has stopped selling tokens per second and started selling admission. Admission is the scarce resource once agent traffic shares long prefixes and arrives in bursts. Snap reports prefix cache hit rates of 75 to 80 percent with the router in production, and that is the kind of number that decides cost per token. The work lands on the upgrade path instead, where the router config graduates to v1 and the project deprecates the inference images it used to publish.

The v1.0.0 notes open with traffic control. A probabilistic admitter, program aware fairness, turn priority scoring, and controlled load shedding under overload. Release notes get written in the order of pain, and this one starts with the queue rather than the kernel.

llm-d runs in front of vLLM or SGLang on Kubernetes and turns a set of replicas into one serving pool. Each request goes to the replica that already holds its prefix, context spills into a cache tier below GPU memory, and prefill can run on different machines from decode. The llm-d 1.0 announcement describes the same request path running across a mixed fleet of TPUs and GPUs behind a single endpoint.

Diagram of the llm-d 1.0 request path, showing a cache-aware router, a tiered KV cache and vLLM or SGLang engines, with chips for contributors, the v1 router API and DisaggregatedSet.
One endpoint, three stages, and the queue that decides who waits.

A round-robin balancer breaks the moment agents arrive

A year ago most inference traffic was chat. One prompt in, one response out, and a balancer that spread requests evenly was close to correct. Agent workloads behave differently. They share long prefixes, fan out across tools, and arrive in bursts that drag a whole replica set into the same expensive prefill.

The fix is admission, not more replicas. Flow control in 1.0 scores each request, protects the latency sensitive ones, and sheds what the fleet can’t serve rather than letting every caller wait. The operator consequence is that admission policy becomes an object you own. A rate limit on the API gateway no longer describes what your cluster will accept.

The upgrade path is where 1.0 sends the bill

Two changes cost time. The router configuration API graduates to v1 on the release, so configs written against the 0.x schema need rewriting rather than a version bump. The project is also deprecating its own inference images, keeping those streams only long enough for hardware partners to move onto upstream builds from vLLM and SGLang. The ROCm image went in this release, replaced by a pinned vLLM build.

What you get for the work is operations. DisaggregatedSet treats prefill and decode replicas as one logical unit, with coordinated rollouts and readiness gated on a pod snapshot. Router high availability with a hot standby rounds it out. The notes also say plainly that not everything in the tracked goal was finished, which is a useful thing for a 1.0 to admit.

Hit rate is the number worth arguing about

The economics sit in cache reuse. Snap reports prefix cache hit rates of up to 75 to 80 percent after putting the router behind an Envoy based service mesh, and it says so in the announcement. The project benchmark page claims 3x higher output throughput and 2x faster first token.

Treat those as the vendor numbers, because they are. Then look at yours. A pool that recomputes half its prefixes pays for tokens that never appear on a latency chart. Routing decisions, not GPU choice, set that number.

Three questions for your next architecture review. What is your prefix cache hit rate today, measured at the router rather than guessed from memory? Which of your tenants shares a fleet with a batch job that arrives in bursts? And if the router restarted mid rollout, how much context would your agents rebuild?

Related reading. Our earlier pieces on routing as the scheduler problem and on the latency tax inside disaggregated inference cover the parts this release assumes you already run. The llm-d repository and the CNCF project page carry the current state.

By Ivan Tarin

Ivan Tarin is a Principal Product Marketing Manager at SUSE, where he owns go-to-market strategy and positioning for a seven-product cloud-native portfolio spanning Kubernetes, virtualization, storage, security, and observability. A former full-stack developer who shipped production code for enterprise and public-sector clients including U.S. national laboratories, Ivan translates complex infrastructure and AI technology into messaging that lands with developers, platform teams, and enterprise buyers. He has presented at KubeCon, SUSECON, and AWS Developer Week, and is currently pursuing an MS in Artificial Intelligence at the University of Colorado Boulder.

One thought on “llm-d Hit 1.0 and the First Feature Is a Fair Queue”

Comments are closed.

Get the next one before it is old news

Independent analysis of cloud-native infrastructure, Kubernetes and data center economics. No vendor spin.