Agent latency is attacked at several layers at once, and the binding constraint has moved from compute to memory.
Agent traffic is not chat. Coding agents send bursty, long-context, tool-interleaved requests with over 80% KV-cache reuse. Schedulers, batchers, and routers are being rebuilt for that shape: session-aware scheduling, learned batching policies, and routing logic pulled inside the serving layer. vLLM's AgentX tuning shows these levers compound when tuned together, though its cost comparison is vendor-reported.
The bottleneck is moving KV state, not FLOPs. The context grows every step, and streaming it back is bandwidth-bound. Four answers compete: compress the cache, offload it to shared RAM/NVMe tiers, shard it across GPUs, or reuse it through prefix caching, prefix-aware routing, and cross-model KV transfer. Reuse has a sharp edge: once reused text sits mid-prompt, as in RAG and multi-agent handoffs, an unrepaired cache can score worse than none.
Engines are specializing. Disaggregation now splits by phase (prefill/decode) and by compute type (attention/FFN). New open-weight models and accelerators get tuned serving on day 0, then steady per-release kernel gains of a few percent per token, which multiply across every step of a loop.
Doing less work per step is the other lever: small latency-first models for the bulk of calls, learned prompt compression (Shopify cut end-to-end latency from 6.8s to 4.2s), and better speculative drafting. Context trimming has a measured cliff: below half the budget, failure odds rise sharply unless trimming preserves instructions and tool state.
The open problem sits outside the engine. Tool round-trips (search APIs with a 12x latency spread and short-lived caches, fan-out data queries, remote CI) and cold starts often dominate wall-clock time, and no serving optimization touches them. Voice sets a hard floor the whole loop must meet.