Documentation Is Agent Infrastructure: Governing the Knowledge Layer Behind Enterprise Automation

Most enterprise AI agent programs focus first on models, tools, and orchestration. Documentation is often treated as supporting material that can be connected later.

That order is backwards.

When an agent is expected to explain a product, interpret live system state, or choose the right action, the organization’s knowledge layer becomes part of the runtime. Documentation, examples, support guidance, and API references are no longer just content for people. They are operational dependencies that influence how the agent plans and acts.

This changes the governance question. The challenge is not simply whether an agent can search documentation. The challenge is whether the knowledge it retrieves is current, authorized, observable, and reliable enough to support enterprise automation.

A signal from 1,192 agent conversations

A recent CNCF member post from kapa.ai analyzed 1,192 conversations with an agent embedded in its own product. The agent had around 30 native tools for querying the platform and one tool for searching documentation, code examples, support FAQs, and API references.

The documentation tool became the most frequently used tool, almost matching all native tools combined. The analysis identified three roles for documentation:

  • Fallback: 32.1% of conversations relied on documentation when no native tool could directly answer the question.
  • Context: around 7% combined live product data with documentation to explain what that data meant.
  • Planning: the agent consulted documentation to understand product capabilities and select the appropriate native tool.

This is evidence from one product, not a universal benchmark. The exact percentages should not be generalized across every enterprise. The pattern, however, is strategically important: purpose-built tools tell an agent what the system can expose, while documentation often tells it how the system works and what an observation means.

The knowledge layer is part of the execution path

Consider an operations agent investigating a failed deployment. Native tools might return rollout status, recent events, policy results, and telemetry. Those facts are necessary but incomplete. To choose a useful next step, the agent may also need the organization’s deployment conventions, ownership model, approved rollback procedure, exception policy, and known platform limitations.

If that information is missing, the agent has three poor options: refuse, guess, or call the wrong tool. If the information is stale or over-broadly accessible, the outcome can be worse. The agent may produce a confident but obsolete recommendation, expose restricted operational details, or act on guidance that no longer matches the platform.

That makes documentation quality a reliability and control concern. A broken API can cause an automation failure. So can an obsolete runbook retrieved at the wrong moment.

Five controls for an enterprise agent knowledge layer

1. Assign ownership and freshness objectives

Every knowledge source available to an agent should have an accountable owner. Ownership needs to cover more than writing. It should include review frequency, retirement, escalation, and alignment with the systems the content describes.

Different content requires different freshness objectives. An architectural principle may remain valid for years. An incident runbook, API example, or security exception may become dangerous within weeks. Treating every document alike creates either excessive review effort or unacceptable drift.

A practical inventory should record the owner, classification, last review date, next review deadline, source system, and systems or tools affected by the content.

2. Preserve version and environment context

Retrieval should not flatten every document into one timeless knowledge pool. Guidance for an older Kubernetes version, a retired API, or a development environment can be accurate in isolation and still be wrong for the current task.

Attach metadata such as product version, environment, region, effective date, lifecycle state, and superseding document. Retrieval policies can then prefer knowledge that matches the live context and exclude archived or incompatible guidance.

For high-impact actions, the agent should be able to cite the exact source and version that informed its decision. This gives reviewers evidence instead of a vague statement that “the documentation says so.”

3. Enforce permissions at retrieval time

An agent must not gain broader knowledge access simply because it provides a convenient conversational interface. Retrieval should preserve the caller’s identity, tenant, role, and data-classification constraints.

This control applies to both source selection and returned content. Filtering after retrieval is too late if restricted text has already entered the model context. The authorization decision belongs at the retrieval boundary.

OWASP’s guidance on vector and embedding weaknesses also highlights risks such as unauthorized access, data leakage, and poisoning in retrieval-augmented systems. For enterprises, the knowledge index therefore needs the same security attention as other production data stores: provenance, access control, integrity checks, and monitored ingestion.

4. Evaluate answers and tool choices separately

Traditional documentation analytics measure page views and search terms. Agent-enabled knowledge requires additional evaluation.

Teams should test at least four outcomes:

  • Did retrieval return the correct and current source?
  • Did the answer remain grounded in that source?
  • Did the agent choose the correct native tool and parameters?
  • Did it refuse or escalate when knowledge was missing, ambiguous, or unauthorized?

These are different failure modes. A fluent answer can still be based on the wrong version. Correct retrieval can still lead to an unsafe tool call. A strong evaluation set should therefore include normal questions, conflicting documents, expired guidance, permission boundaries, and cases where no valid answer exists.

5. Make retrieval observable

Organizations need telemetry for the knowledge path, not only for model latency and tool execution. Useful signals include source selection, document version, retrieval score, authorization outcome, citation use, fallback frequency, tool choice, user correction, and escalation.

This telemetry answers operational questions that static content reviews cannot:

  • Which unanswered questions repeatedly force the agent to guess or refuse?
  • Which documents influence the most actions?
  • Where do retrieved instructions conflict?
  • Which content is frequently retrieved but rarely leads to a successful outcome?
  • Are users reaching knowledge they could not access through the original source?

Retrieval telemetry should respect privacy and retention policies. Its purpose is to improve reliability and governance, not to create an uncontrolled archive of user prompts and internal content.

A practical operating model

The knowledge layer sits across several existing responsibilities. Treating it as “the documentation team’s problem” leaves critical gaps.

  • Product and service owners own factual correctness and lifecycle decisions.
  • Platform teams provide ingestion, indexing, retrieval, observability, and safe rollout capabilities.
  • Security and data governance define classification, access, retention, and integrity controls.
  • Agent teams define retrieval policies, tool boundaries, evaluations, and failure behavior.
  • Operations teams validate runbooks and feed production corrections back into the source.

The platform should make the safe path easy: versioned ingestion, metadata validation, permission-aware retrieval, citation support, evaluation gates, and progressive rollout. Content owners should not need to become retrieval engineers, but they must remain accountable for what their knowledge enables.

Start with the decisions the agent must support

A useful implementation sequence begins with a bounded workflow rather than a company-wide content crawl.

  1. Select one agent use case with measurable business value and clear risk boundaries.
  2. List the decisions and tool calls the agent must make.
  3. Identify the minimum authoritative sources required for those decisions.
  4. Add ownership, classification, version, and lifecycle metadata before indexing.
  5. Build evaluation cases for correct answers, correct tool selection, refusal, and authorization.
  6. Instrument retrieval and review failure patterns before expanding scope.

This approach creates evidence about where documentation improves outcomes and where purpose-built tools or structured APIs are still required. It also avoids turning a large, inconsistent content estate into an ungoverned agent dependency overnight.

Documentation is not a substitute for tools

The lesson is not that documentation should replace typed APIs or deterministic controls. Native tools remain essential for current state, validated mutations, and enforceable authorization. Documentation contributes semantics, operating context, and capability guidance.

Reliable enterprise agents need both. Tools provide constrained interaction with the live system. Governed knowledge helps the agent interpret that system and select the right interaction. The boundary between them should be explicit: documentation may inform a decision, but consequential actions still need server-side validation, least-privilege authorization, and auditable execution.

The strategic implication

Organizations that deploy agents without governing their knowledge layer are building automation on an unmanaged dependency. The model may be capable and the tools may be secure, yet the agent can still fail because its understanding of the product, policy, or operating environment is incomplete or stale.

Documentation becomes agent infrastructure when it influences planning and action. Infrastructure requires ownership, lifecycle management, access control, testing, telemetry, and rollback. Applying those disciplines to enterprise knowledge is what turns documentation search from a convenient feature into a trustworthy platform capability.

Sources

OpenTelemetry Fleet Management: Why OpAMP Belongs in the Enterprise Observability Control Plane

OpenTelemetry can standardize how an enterprise collects and exports telemetry, but standardization alone does not make the collection layer operable.

At small scale, teams can manage Collector configuration through deployment manifests, virtual machine tooling, or a handful of automation scripts. At enterprise scale, the fleet becomes heterogeneous: Kubernetes DaemonSets, centralized gateways, virtual machines, laptops, point-of-sale devices, edge systems, and embedded environments. Different teams deploy the agents, while a central observability group remains accountable for data quality and service reliability.

That creates a control-plane problem. The organization needs to know which agents exist, what they are running, whether their configuration is current, whether a rollout succeeded, and how to recover without losing telemetry. The Open Agent Management Protocol, or OpAMP, provides a vendor-neutral protocol for that management relationship.

The strategic point is bigger than remote configuration. OpAMP belongs in the enterprise observability control plane because telemetry collection is production infrastructure. It needs identity, desired state, health feedback, controlled rollout, auditability, and rollback just like any other critical fleet.

Telemetry standardization exposes the management gap

OpenTelemetry adoption often begins with a sensible objective: remove proprietary instrumentation and normalize traces, metrics, and logs around open standards. The Collector becomes a flexible processing and export layer between workloads and one or more observability backends.

Success creates a new operating challenge. Collector configurations diverge by environment and team. Components run different versions. Credentials rotate at different times. Pipelines fail silently or begin dropping data. A change that looks safe in a development cluster can overload a regional gateway or remove a critical security log source.

GitOps helps with Kubernetes-managed Collectors, but it does not automatically cover agents on virtual machines, workstations, edge locations, or devices. It also tells the platform what was declared, not necessarily what every agent loaded or whether the resulting pipeline is healthy.

An enterprise control plane must connect declared intent with runtime evidence across the entire fleet.

What OpAMP actually provides

The OpenTelemetry specification describes OpAMP as a network protocol for remotely managing large fleets of data collection agents. It is vendor-agnostic and supports communication between an OpAMP server and clients associated with managed agents.

Core capabilities include:

  • Reporting agent identity, description, version, capabilities, and health
  • Receiving and acknowledging remote configuration
  • Reporting effective configuration and configuration status
  • Reporting package or component inventory
  • Receiving package update offers where the implementation supports them
  • Establishing bidirectional management communication over WebSocket or HTTP

OpAMP is a protocol, not a complete fleet-management product. It does not decide who may approve a production configuration, how rollout rings are selected, what policy is acceptable, or how a failed change should be escalated. Those are control-plane responsibilities that an enterprise platform must implement around the protocol.

The specification is currently marked beta. Newer Collector management work, including an alpha OpAMP Gateway Extension discussed by the CNCF, is promising but should be treated according to its maturity. Protocol adoption and production rollout should be deliberately separated from assumptions about experimental components.

The observability control plane needs a clear contract

A useful control plane maintains two views of every managed agent.

Desired state describes what the organization intends: approved Collector version, component set, configuration bundle, certificates, export destinations, and rollout assignment.

Observed state describes what the agent reports: identity, capabilities, effective configuration, health, errors, version, and last successful communication.

The difference between these views is configuration drift. Drift is not automatically a failure. An agent may be offline, a rollout may be paused, or a local emergency override may be permitted. The control plane should classify the difference, assign an owner, and decide whether to reconcile, roll back, or escalate.

This is why OpAMP complements rather than replaces GitOps. Git remains the reviewable source of approved configuration. OpAMP provides a standardized delivery and feedback channel for agents that cannot all be managed through the same deployment mechanism.

A reference enterprise architecture

A practical architecture separates policy, rollout orchestration, and protocol transport.

  1. Configuration repository. Versioned Collector templates, component allow lists, routing policy, environment overlays, and rollout metadata are reviewed through pull requests.
  2. Build and validation service. Every bundle is parsed, semantically validated, policy-checked, and tested against representative telemetry before promotion.
  3. Fleet inventory. The platform records agent identity, owner, environment, workload class, capabilities, current version, desired version, and health.
  4. Rollout controller. A change is assigned to cohorts, advanced through rings, paused on thresholds, and linked to an immutable configuration revision.
  5. OpAMP server. The server communicates desired state to clients and receives acknowledgements and status. It should not become the only system of record for policy decisions.
  6. Managed agents. Collectors or supervisors authenticate to the control plane, apply supported changes, and report effective state and health.
  7. Control-plane observability. The management system emits its own metrics, logs, and traces to an independent path so a fleet failure remains visible.

This architecture keeps configuration governance in familiar enterprise workflows while using OpAMP for standardized fleet interaction.

Identity is the first security boundary

A remote management channel can change what telemetry is collected, where it is sent, and which components execute. It is therefore a high-value security boundary.

Each client needs a stable identity tied to an owner and expected environment. Transport encryption is necessary but not sufficient. The server must authorize what that identity may receive, which cohort it belongs to, and whether it can accept sensitive configuration.

Recommended controls include:

  • Mutual authentication with short-lived, automatically rotated credentials
  • Per-agent or narrowly scoped workload identities rather than shared fleet secrets
  • Authorization by tenant, environment, geography, and workload class
  • Signed or integrity-protected configuration artifacts
  • Strict separation between configuration authors, approvers, and rollout operators
  • Audit records linking every server instruction to a reviewed revision and actor
  • Egress restrictions so agents communicate only with approved management and telemetry endpoints
  • Safe local behavior when the management server is unavailable

The server also needs protection from compromised agents. Rate limits, message-size limits, tenant isolation, replay resistance, input validation, and anomaly detection should be part of the threat model.

Configuration rollout should look like progressive delivery

Collector configuration can affect the visibility of an entire production estate. Treating a fleet-wide change as a simple push is an operational risk.

A safer workflow uses progressive rollout rings:

  1. Validation. Parse the configuration, resolve components, verify endpoints, run policy checks, and exercise representative telemetry.
  2. Development cohort. Apply the revision to disposable or low-risk agents and verify configuration acknowledgement.
  3. Canary cohort. Select a small production group that represents important environments and traffic patterns.
  4. Regional or workload rings. Expand only while health, drop rate, queue pressure, and backend load remain within thresholds.
  5. Fleet completion. Record coverage and identify offline or incompatible agents as explicit exceptions.
  6. Rollback. Restore the last known-good revision automatically when defined safety conditions fail.

A rollout is not successful because the server sent a configuration. It is successful when the intended agents report the expected effective state and the telemetry pipeline remains healthy.

Observe the observability fleet

The Collector layer is part of the monitoring system, so its management telemetry must not disappear into the same failure domain.

Track at least:

  • Active, offline, unknown, and quarantined agents
  • Desired-versus-effective configuration drift
  • Configuration acknowledgement and failure rates
  • Rollout duration and rollback frequency
  • Agent version and component-version distribution
  • Telemetry receive, drop, retry, queue, and export-failure rates
  • Credential age and failed authentication attempts
  • Management-channel latency and reconnect rate
  • Coverage by business service, environment, and data type

Business-level objectives matter as well. How quickly can the organization deploy a new security log source? How long does it take to revoke a compromised exporter credential? What percentage of critical services has a healthy, policy-compliant collection path?

An operating model for shared ownership

Fleet management spans organizational boundaries. Clear ownership prevents the control plane from becoming either an unresponsive central bottleneck or an uncontrolled self-service system.

  • The observability platform team owns the protocol service, supported agent profiles, configuration schemas, rollout automation, and service-level objectives.
  • Security owns control objectives, management-plane threat modeling, credential requirements, and sensitive destination policy.
  • Service and infrastructure teams own agent coverage, local dependencies, and declared business criticality.
  • Backend owners publish capacity constraints and compatibility requirements.
  • A change advisory model is encoded through risk tiers, automated evidence, and approval rules rather than a universal manual meeting.

Teams should be able to request supported pipelines and processors through a controlled interface. They should not need permission for every low-risk change, but they also should not be able to redirect enterprise telemetry to an arbitrary endpoint.

A staged adoption plan

Phase 1: establish inventory and evidence

  • Enumerate Collector deployments and other managed agents.
  • Assign ownership, environment, and criticality.
  • Define a small set of supported configurations and component versions.
  • Measure current drift, rollout time, and blind spots before adding remote control.

Phase 2: introduce OpAMP in read-oriented mode

  • Connect a non-critical cohort.
  • Collect agent descriptions, versions, effective configuration, and health.
  • Validate identity and tenant boundaries.
  • Compare observed state with the Git-approved desired state.

Phase 3: controlled configuration delivery

  • Enable remote configuration for one standardized agent profile.
  • Use signed revisions, canary rings, automated thresholds, and rollback.
  • Exercise server outage, invalid configuration, expired credentials, and incompatible-agent scenarios.

Phase 4: expand deliberately

  • Add heterogeneous environments and additional agent capabilities.
  • Integrate package updates only after configuration delivery is reliable.
  • Publish service objectives and an exception process.
  • Keep experimental extensions behind explicit maturity and risk gates.

Standard telemetry needs standard operations

OpenTelemetry solves an important portability problem, but enterprises also need a portable way to operate the collection fleet. OpAMP creates the protocol foundation for that control plane.

The durable design is not a central server that can push arbitrary files. It is a governed system that connects reviewed intent to agent identity, progressive rollout, effective state, health evidence, and safe recovery. Organizations that build those capabilities can scale OpenTelemetry without replacing proprietary telemetry agents with a new collection layer that is open but operationally opaque.

Sources

llm-d: Kubernetes-Native Distributed LLM Inference and CNCF’s Answer to the AI Inference Gap

For the last few years, Kubernetes has been the default control plane for almost everything except one increasingly important workload: large language model inference. Teams that adopted Kubernetes for microservices, batch jobs, and stateful systems often ran their GenAI inference on bespoke setups, vendor platforms, or hand-tuned vLLM deployments glued together with custom scripts. That gap is now closing.

At KubeCon EU 2026, the CNCF accepted llm-d into its Sandbox. Backed by Red Hat, Google, IBM, CoreWeave, and NVIDIA, llm-d is a purpose-built, Kubernetes-native framework for distributed LLM inference. It is not another model server competing with vLLM. It is the orchestration and serving layer that turns a fleet of accelerators into a coherent, scalable inference platform on Kubernetes.

This matters because the economics and operational reality of LLM inference are fundamentally different from traditional web services. A single large model can exceed the memory of one GPU. Request patterns are bursty. The compute profile of generating the first token is completely different from generating the rest. Treating inference like a stateless HTTP service leaves enormous performance and cost on the table. llm-d is the CNCF community’s answer to that problem.

The Inference Gap: Why Kubernetes Needed a Native Answer

According to the CNCF’s 2026 survey, around 66% of organizations now run GenAI inference on Kubernetes. That adoption happened faster than the tooling matured. Most teams stitched together their own stack: a model server such as vLLM, a custom Deployment or StatefulSet, an Ingress or Gateway in front, a homegrown autoscaler keyed off queue depth, and a lot of YAML.

This works until it doesn’t. The problems show up at scale:

  • Model size vs. accelerator memory: Large models must be sharded across multiple GPUs or nodes, which standard Deployments do not coordinate well.
  • Prefill vs. decode imbalance: The compute-heavy prefill phase and the memory-bandwidth-bound decode phase compete for the same resources when colocated.
  • Scheduling fragility: Multi-GPU inference pods need all their resources at once. Partial scheduling wastes expensive accelerators.
  • Routing blindness: Standard HTTP load balancing does not understand KV-cache locality, model affinity, or queue depth.
  • Cost opacity: Without per-accelerator metrics, FinOps for inference is guesswork.

llm-d addresses these as first-class concerns rather than afterthoughts. It aligns with the emerging Kubernetes AI Requirements (KARs) and positions itself as the reference inference stack for the cloud-native ecosystem.

Prefill/Decode Disaggregation: The Core Idea

The single most important architectural concept in llm-d is the disaggregation of the prefill and decode phases of inference.

When an LLM processes a request, it first reads the entire prompt and builds a key-value (KV) cache. This is the prefill phase, and it is compute-bound: it benefits from raw GPU throughput. Then the model generates tokens one at a time, each step depending on the KV cache. This is the decode phase, and it is largely memory-bandwidth-bound and latency-sensitive.

When both phases run on the same GPU, they interfere. A long prompt being prefilled can stall token generation for other requests, hurting time-to-first-token and inter-token latency simultaneously. Disaggregation separates these phases onto different pools of accelerators that can be scaled and tuned independently.

Phase Characteristic Bottleneck Scaling Strategy
Prefill Processes the full prompt, builds KV cache Compute (FLOPs) Scale for throughput on high-FLOP accelerators
Decode Generates tokens iteratively Memory bandwidth, latency Scale for concurrency and low latency

By splitting these across nodes, llm-d lets platform teams right-size each pool. You can throw high-throughput accelerators at prefill and optimize a separate pool for low-latency decode, transferring the KV cache between them. The result is better GPU utilization and more predictable latency under load.

How llm-d Fits the Kubernetes Stack

llm-d is not a monolith. It is designed to compose with the newest Kubernetes primitives for AI workloads. This is what makes it cloud-native rather than just another inference server wrapped in a container.

Dynamic Resource Allocation (DRA)

Kubernetes v1.36 matured Dynamic Resource Allocation, which replaces the aging device plugin framework for GPUs and accelerators. NVIDIA and Google have contributed CNCF-donated DRA drivers that act as the accelerator abstraction layer. llm-d uses DRA to request GPUs declaratively, with structured parameters the scheduler and autoscaler can actually understand. This means topology-aware allocation, partitionable devices, and cleaner multi-accelerator scheduling.

Gang Scheduling

Distributed inference needs all its pods at once. A model sharded across four GPUs is useless with three. llm-d relies on gang scheduling, available in the Kubernetes v1.36 workload-aware scheduling features, to ensure that a distributed inference deployment either gets all its resources or waits, rather than partially allocating and stranding expensive accelerators.

Kueue for Job Queuing

For multi-tenant inference pools and batch-style inference, llm-d integrates with Kueue. This brings quota management, fair sharing, and queuing across teams. Platform teams can define ClusterQueues that cap GPU budgets per team while keeping the pool efficiently shared.

Gateway API Inference Extension

Above llm-d sits the Gateway API Inference Extension (GIE), which provides intelligent routing for LLM traffic. Unlike standard HTTP routing, GIE understands inference-specific signals: model affinity, KV-cache locality, queue depth, and load. It routes requests to the right pool and the right replica, which is essential once prefill and decode are disaggregated.

llm-d vs. vLLM, KServe, and Ray Serve

A common point of confusion is where llm-d sits relative to existing tools. It does not replace all of them; it orchestrates and complements them.

Tool Primary Role When to Use
vLLM High-performance model server / inference engine As the underlying engine, often used by llm-d itself
KServe General model serving framework on Kubernetes Mixed model types, classic ML plus LLMs, standardized CRDs
Ray Serve Python-native distributed serving Teams already invested in the Ray ecosystem
llm-d Kubernetes-native distributed LLM inference orchestration Large-scale LLM inference with prefill/decode disaggregation and multi-node scaling

The practical mental model: vLLM is the engine, llm-d is the distributed serving and orchestration layer that runs engines like vLLM across a fleet, and the Gateway API Inference Extension is the smart front door. KServe and Ray Serve remain valid choices, especially for mixed workloads, but llm-d is purpose-built for the specific challenges of large-scale LLM inference on Kubernetes.

Observability and Cost: Making Inference Accountable

One of the most underrated aspects of running inference at scale is knowing what it costs and how it performs per accelerator. llm-d treats observability as a requirement, aligning with AI Conformance expectations.

Key signals platform teams should capture:

  • Time-to-first-token (TTFT): Dominated by prefill and queueing; the primary latency SLO for interactive use.
  • Inter-token latency: Reflects decode performance and concurrency pressure.
  • Per-accelerator utilization: GPU compute and memory usage, exported via Prometheus.
  • Queue depth and batch size: Drive autoscaling decisions far better than CPU metrics.
  • Throughput (tokens/sec): The real unit of inference work.

With OpenTelemetry and Prometheus wired in, these metrics feed both autoscaling and FinOps. The cost question llm-d helps answer is concrete: is it cheaper to run distributed inference across several smaller accelerators with disaggregation, or to consolidate on fewer large GPU nodes? The answer depends on model size, request mix, and latency targets, but for the first time the data to decide is available natively.

Security and Multi-Tenancy

Inference pools are expensive shared resources, which makes isolation important. llm-d supports multi-tenant inference pools with workload isolation and RBAC. Combined with Kueue quotas and namespace-scoped policies, platform teams can let multiple AI teams share a GPU fleet without one team starving another or accessing another team’s models. This is the same multi-tenancy discipline platform teams already apply to compute, extended to accelerators.

A Production Readiness Checklist

llm-d is in the CNCF Sandbox, which means it is early. Sandbox status signals direction and community backing, not production maturity. Platform teams evaluating it should be deliberate.

  1. Validate your Kubernetes version. You need v1.36-era features: mature DRA, gang scheduling, and workload-aware scheduling. Confirm your managed provider (EKS/GKE/AKS) exposes the required feature gates and DRA drivers.
  2. Confirm accelerator drivers. Ensure the NVIDIA or Google DRA drivers are installed and supported on your node pools.
  3. Start with a single model and pool. Prove the basic serving path before introducing prefill/decode disaggregation across nodes.
  4. Wire observability first. Export TTFT, inter-token latency, throughput, and per-GPU metrics to Prometheus before scaling up.
  5. Introduce the Gateway API Inference Extension early. Smart routing is what makes disaggregation pay off.
  6. Layer in Kueue for multi-tenancy. Define GPU quotas per team before opening the pool to multiple consumers.
  7. Run a cost comparison. Benchmark distributed inference against your current setup with real traffic, not synthetic load.
  8. Plan for sandbox churn. APIs may change. Pin versions, track releases, and avoid hard-coupling your platform to unstable interfaces.

Why This Is a Platform Engineering Story

It is tempting to file llm-d under „AI infrastructure“ and leave it to ML teams. That would be a mistake. The whole point of llm-d is to make distributed LLM inference a self-service IDP primitive. Instead of every AI team building bespoke serving stacks, the platform team offers inference as a paved road: declare a model, a pool, and an SLO, and the platform handles GPU allocation, scheduling, routing, scaling, and observability.

This is the same shift platform engineering brought to application deployment, now applied to inference. The golden path for an AI team becomes a governed, observable, cost-aware inference service rather than a pile of custom YAML and tribal knowledge.

The Bottom Line

llm-d represents the cloud-native ecosystem catching up to where AI workloads actually are. By disaggregating prefill and decode, integrating with DRA, gang scheduling, Kueue, and the Gateway API Inference Extension, and treating observability and multi-tenancy as requirements, it offers a coherent answer to the inference gap on Kubernetes.

It is early, and Sandbox status means platform teams should pilot rather than bet the farm. But the backing from Red Hat, Google, IBM, CoreWeave, and NVIDIA, plus alignment with the Kubernetes AI Requirements, makes llm-d the most credible candidate to become the standard distributed inference layer for Kubernetes. For platform teams whose organizations are already running GenAI on Kubernetes, now is the time to start evaluating it, building the observability foundation, and planning the golden path for inference-as-a-service.

Dapr Agents v1.0: Resilient Multi-Agent Orchestration on Kubernetes

The Distributed Systems Foundation for AI Agents

When LangGraph introduced stateful agents and CrewAI popularized role-based collaboration, they solved the what of multi-agent AI systems. But as organizations move from demos to production, a critical question emerges: how do you run these systems reliably at scale?

Enter Dapr Agents, which reached v1.0 GA in March 2026. Built on the battle-tested Dapr runtime—a CNCF graduated project—this Python framework takes a fundamentally different approach: instead of bolting reliability onto AI frameworks, it brings AI agents to proven distributed systems primitives.

The result? AI agents that inherit decades of distributed systems wisdom: durable execution, exactly-once semantics, automatic retries, and the ability to survive node failures without losing state.

Why Traditional Agent Frameworks Struggle in Production

Most AI agent frameworks were designed for prototyping. They work brilliantly in Jupyter notebooks but encounter friction when deployed to Kubernetes:

  • State Loss on Restart: LangGraph checkpoints require manual persistence configuration. A pod restart can lose agent memory mid-conversation.
  • No Native Retry Semantics: When an LLM API returns a 429, most frameworks fail or require custom retry logic.
  • Coordination Complexity: Multi-agent communication typically requires custom message queues or REST endpoints.
  • Observability Gaps: Tracing an agent’s reasoning across multiple tool calls often means stitching together fragmented logs.

Dapr Agents addresses each of these by standing on the shoulders of infrastructure patterns that have been production-hardened since the early days of microservices.

Architecture: Agents as Distributed Actors

At its core, Dapr Agents builds on three Dapr building blocks:

1. Workflows for Durable Execution

Every agent interaction—LLM calls, tool invocations, state updates—is persisted as a workflow step. If the agent crashes mid-reasoning, it resumes exactly where it left off:

from dapr_agents import DurableAgent, tool

class ResearchAgent(DurableAgent):
    @tool
    def search_arxiv(self, query: str) -> list:
        return arxiv_client.search(query)
    
    async def research(self, topic: str):
        papers = await self.search_arxiv(topic)
        summary = await self.llm.summarize(papers)
        return summary

Under the hood, Dapr Workflows use the Virtual Actor model—the same pattern that powers Orleans and Akka. Each agent is a stateful actor that can be deactivated when idle and reactivated on demand, enabling thousands of agents to run on a single node.

2. Pub/Sub for Event-Driven Coordination

Multi-agent systems need reliable communication. Dapr’s Pub/Sub abstraction lets agents publish events and subscribe to topics without knowing about the underlying message broker:

from dapr_agents import AgentRunner

await agent_a.publish("research-complete", {
    "topic": "quantum computing",
    "findings": summary
})

@runner.subscribe("research-complete")
async def handle_research(event):
    await writer_agent.draft_article(event["findings"])

Swap Redis for Kafka or RabbitMQ without changing agent code.

3. State Management for Agent Memory

Conversation history, tool results, reasoning traces—all flow through Dapr’s State API with pluggable backends:

from dapr_agents import memory

agent = ResearchAgent(memory=memory.InMemory())

agent = ResearchAgent(
    memory=memory.PostgreSQL(
        connection_string=os.environ["PG_CONN"],
        enable_vector_search=True
    )
)

Agentic Patterns Out of the Box

Dapr Agents ships with implementations of common multi-agent patterns:

Pattern Description Use Case
Prompt Chaining Sequential LLM calls where each output feeds the next Document processing
Evaluator-Optimizer One LLM generates, another critiques in a loop Code review
Parallelization Fan-out work to multiple agents, aggregate results Research synthesis
Routing Classify input and delegate to specialist agents Customer support
Orchestrator-Workers Central coordinator delegates subtasks dynamically Complex workflows

MCP and Cross-Framework Interoperability

A standout feature is native support for the Model Context Protocol (MCP):

from dapr_agents import MCPToolProvider

tools = MCPToolProvider("http://mcp-server:8080")
agent = DurableAgent(tools=[tools])

Dapr Agents can also invoke agents from other frameworks as tools:

from dapr_agents.interop import CrewAITool

research_crew = CrewAITool(crew=research_crew, name="research_team")
coordinator = DurableAgent(tools=[research_crew])

Kubernetes-Native Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: research-agent
  annotations:
    dapr.io/enabled: "true"
    dapr.io/app-id: "research-agent"
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: agent
        image: myregistry/research-agent:v1

Comparison: Dapr Agents vs. LangGraph vs. CrewAI

Capability Dapr Agents LangGraph CrewAI
Durable Execution Built-in Requires config Limited
Auto Retry Built-in Manual Manual
State Persistence 50+ backends SQLite, PG In-memory
Kubernetes Native Sidecar Manual Manual
Observability OpenTelemetry LangSmith Limited

When to Choose Dapr Agents

Dapr Agents makes sense when:

  • You’re already running Dapr for microservices
  • Your agents must survive node failures without state loss
  • You need to scale to thousands of concurrent agents
  • Enterprise observability requirements demand OpenTelemetry

Getting Started

pip install dapr-agents
dapr init
from dapr_agents import DurableAgent, AgentRunner

class GreeterAgent(DurableAgent):
    system_prompt = "You are a helpful assistant."

runner = AgentRunner(agent=GreeterAgent())
runner.start()

The Bigger Picture

Dapr Agents represents a broader trend: AI frameworks are maturing from „make it work“ to „make it work reliably.“ The CNCF ecosystem is converging on this need—KubeCon 2026 showcased kagent, AgentGateway, and the AI Gateway Working Group.

For platform teams, Dapr Agents offers a familiar operational model: sidecars, state stores, message brokers, and observability pipelines. The agents are new; the infrastructure patterns are proven.


Dapr Agents v1.0 is available now at github.com/dapr/dapr-agents.