Building Durable and Reliable AI Agents at Scale with Dapr Workflows

humanlayer · Tech · 2026 · source Agentic: yes · promotional bias: med · source-backed · extracted with prompt 0.5.5 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Durable cloud-native AI agent infrastructure

Dapr's AI-agent work addresses a production reliability gap in agent frameworks: agents can lose state, replay expensive LLM calls, duplicate workflows, fail to recover after outages, and lack secure distributed communication when deployed across pods or services. The talk positions Dapr workflows, state management, pub/sub, access policy, conversation APIs, and OpenTelemetry as distributed-systems primitives for making autonomous agent workflows reliable at enterprise scale.

Constraints:

Architecture

Dapr Agents wraps agent applications with Dapr sidecars and workflow/state/pub-sub building blocks. A durable agent declares role, instructions, LLM provider, and a Dapr state-memory store. Dapr workflows persist workflow progress, detect failures, retry according to policy, recover from the exact failed step, and enforce one active execution per workflow instance. Dapr state management lets agents store conversation state in 30-plus databases. Dapr pub/sub lets agents discover and message each other with at-least-once delivery. Conversation APIs add LLM abstraction and PII obfuscation, access policies and trust domains govern which agents and MCP servers can talk, and OpenTelemetry traces provide audit logs and debugging visibility.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  agent-application[Agent application] --> dapr-sidecar[Dapr sidecar]
  dapr-sidecar --> dapr-workflow-engine[Dapr workflow engine]
  dapr-sidecar --> state-store[State store]
  dapr-sidecar --> dapr-pub-sub[Dapr pub/sub]
  dapr-sidecar --> conversation-api[Conversation API]
  dapr-sidecar --> access-policies-and-trust-domains[Access policies and trust domains]
  dapr-sidecar --> opentelemetry-traces[OpenTelemetry traces]
  dapr-sidecar --> dapr-management-apis[Dapr management APIs]
  dapr-workflow-engine --> agent-application
  dapr-workflow-engine --> state-store
  dapr-pub-sub --> peer-agent[Peer agent]
  peer-agent --> dapr-pub-sub
  conversation-api --> llm-provider[LLM provider]
  llm-provider --> conversation-api
  access-policies-and-trust-domains --> peer-agent
  access-policies-and-trust-domains --> mcp-server[MCP server]
  opentelemetry-traces --> zipkin-or-tracing-backend[Zipkin or tracing backend]
  dapr-management-apis --> dapr-workflow-engine
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Agent application Python or other-language agent code defining name, role, instructions, LLM provider, and Dapr state memory. Dapr sidecar
Dapr sidecar Local Dapr process mediating workflow, state, pub/sub, conversation, security, resiliency, and telemetry APIs. Dapr workflow engine, State store, Dapr pub/sub, Conversation API, Access policies and trust domains, OpenTelemetry traces, Dapr management APIs
Dapr workflow engine Durable execution layer that detects failure, retries, resumes from the failed point, and prevents duplicate workflow execution. Agent application, State store
State store Configurable database backend for workflow state, agent memory, and conversation history. Dapr workflow engine
Dapr pub/sub Message abstraction for agent discovery and inter-agent communication across broker backends. Peer agent
Peer agent Other autonomous agent reachable through Dapr pub/sub, with its own process and sidecar isolation. Dapr pub/sub
Conversation API Dapr API that abstracts LLM providers and adds enterprise features such as bidirectional PII obfuscation. LLM provider
LLM provider Model backend such as OpenAI, Gemini, Anthropic, Mistral, or a self-hosted model. Conversation API
Access policies and trust domains Governance layer controlling which agents can talk to which agents and MCP servers. Peer agent, MCP server
MCP server External tool/data server whose access can be governed through Dapr policies. Access policies and trust domains
OpenTelemetry traces Tracing and audit-log stream for state operations, agent handoffs, timing, and workflow execution. Zipkin or tracing backend
Zipkin or tracing backend Example tracing UI used in the demo to inspect audit logs and execution timing. OpenTelemetry traces
Dapr management APIs APIs for listing workflows and deciding whether to kick off failed workflows again. Dapr workflow engine

Data flow

An agent process connects to its local Dapr sidecar. The sidecar coordinates workflow execution, persists workflow and conversation state to a configured state store, invokes the LLM through the configured provider or Dapr conversation API, retries failed calls, and resumes from saved progress after crashes. For multi-agent work, agents use Dapr pub/sub declarations rather than broker-specific code; Dapr routes messages to peer agents, preserves isolation through sidecars, and emits OpenTelemetry traces showing state reads/writes, agent handoffs, and workflow completion.

4 supporting quotes
“conversation Dapr state memory, it gets the name of a store name, and that is essentially declared in YAML. I'm going to show that to you later. And agent memory can be a type of any of the 30-plus different supported um databases that Dapr supports. And”transcript, stated
“is not available because they're throttling you or they're down or there's a network blip, the Dapr workflow itself is going to make sure to retry. And as I mentioned, you can put your own retry policies. You can say retry for five times before you essentially declare”transcript, stated
“if we kick the agent back up, and I'm not curling it again now, we can see that it picks up exactly where it left off.”transcript, stated
“Everything is uh translated through open telemetry, so you can plug in whatever open telemetry endpoint you have”transcript, stated

Why this architecture

Dapr uses distributed-systems primitives because prototype-oriented agent frameworks focus on reasoning, tool calling, and LLM abstractions while leaving production reliability to the application team. A sidecar plus workflow engine can detect failures, coordinate recovery, prevent duplicate executions, and persist state independently of the agent process. Declarative YAML component configuration also separates application code from specific databases and brokers.

4 supporting quotes
“Those agent frameworks out there today are focusing on everything that is not distributed systems problems. They focus on the reasoning, the uh tool calling capabilities, the LLM abstractions, but not on really, really important things like how do you”transcript, stated
“they are not focused on distributed systems challenges. They are focused on looping and reasoning capabilities and debugging and evaluation.”transcript, stated
“There is no additional infrastructure needed except for a Dapr and your database of choice, which, as I mentioned, it can be over 30 different databases. You don't have to settle for the regular Postgres, Redis, and the in-memory SQLite implementation. Of”transcript, stated
“If we want to switch that to Kafka, um that's um one of the few things I'd have to do. And the metadata would change here to be like a Kafka broker, but really that's it. And this is how we pick the infrastructure of choice that Dapr agents is going to use.”transcript, stated

Models used: OpenAI · Google Gemini · Mistral · Anthropic · LangChain agents · LangGraph agents · CrewAI agents

Scale

Alternatives considered (roads not taken)

Use agent-framework checkpointing alone.

Rejected because: Checkpointing stores state but does not automatically detect failures, recover workflows, or prevent duplicate executions.

3 supporting quotes
“they do something extremely simple, and this is something that everyone needs to know. Um their answer to the problems we've been talking about um is checkpoints. Checkpoints is basically, you know, recording the output of every step, JSON serializing it, and saving it in a very, very”transcript, stated
“It won't pick up where it left off. Because checkpointing are great for, you know, getting the state into the database”transcript, stated
“then you also need to know when something fails, and when something fails, you also need the business logic to be able to make it recover.”transcript, stated

Build a custom recovery workflow engine around existing frameworks.

Rejected because: The recovery system itself would need durability, failure detection, bulk recovery, and multi-instance coordination.

“that means writing a workflow engine basically yourself, and that is all the hard parts of a workflow engine. Failure detection. You have a thousand agents with a thousand workflows, all of them failed. How do you go about detecting which step exactly failed”transcript, stated
“But what if that process fails? How do you make that durable? How do you make that checkpointed? Because if your recovery system fails, those agents are not going to continue. And then you have multi-instance coordination. Right? If you have multiple”transcript, stated

Put all logic into an agent monolith.

Rejected because: The speaker recommends spreading logic across agents that each do one job, using Dapr to discover and message peers.

“you in many cases do not want to put all of your logic in a what we call an agent monolith. You want to spread them out where each agent does what it needs to do. Um and what we have here is an example for multi-agents. Uh by the way, go to our website. Let”transcript, stated
“you in many cases do not want to put all of your logic in a what we call an agent monolith. You want to spread them out where each agent does what it needs to do. Um and what we have here is an example for multi-agents. Uh by the way, go to our website. Let me just show it to you now.”transcript, stated

Write broker-specific Kafka, Pulsar, or SQS code for multi-agent communication.

Rejected because: Dapr pub/sub lets the same agent code use a YAML-declared broker and switch infrastructure with configuration.

“Dapr to be able to discover other agents and uh really do this multi-agent collaboration. Instead of you needing to pull in Kafka code or Pulsar code or AWS SQS code, and then deciding on different topics and making sure that those agents can actually communicate, um all you need to do”transcript, stated
“sure that those agents can actually communicate, um all you need to do is just have these four lines of code where it'll get a pub/sub name, and that pub/sub name again is a YAML representation of what it actually is. Um for example, in this case, we're just using Redis, right? So, this is what the”transcript, stated

Migrate every team to Dapr Agents immediately.

Rejected because: The roadmap also brings Dapr benefits into existing frameworks so teams can keep LangChain, LangGraph, Strands, or OpenAI Agents code where needed.

“you might not want to move to Dapr agents and change your code if you've already chosen LangChain or LangGraph or Strands or OpenAI agents.”transcript, stated
“chosen LangChain or LangGraph or Strands or OpenAI agents. So, what we want to do is really bring all of those Dapr benefits into the existing ecosystem. Okay, so let's see a demo. Um I don't know if you're in the keynote today, but uh we saw a lot of complex demos, you know,”transcript, stated

Patterns

durable-execution (infrastructure)

Dapr workflows persist execution state, detect crashes, retry failed calls, resume from the failed step, and prevent duplicate workflow instances.

3 supporting quotes
“This is where workflows come into play. And then pub/sub. Let's say you have two agents. Let's say they're LangChain agents or LangGraph agents or CrewAI agents.”transcript, stated
“And now, if we kick the agent back up, and I'm not curling it again now, we can see that it picks up exactly where it left off. No agent framework can do this today.”transcript, stated
“You get this exactly once guarantee when it comes to the scope of the workflow”transcript, stated

async-message-orchestration (multi-agent)

Dapr pub/sub provides discovery and message delivery for distributed agents without broker-specific code, allowing asynchronous collaborative workflows.

3 supporting quotes
“How do you make them discover each other beyond a single process?”transcript, stated
“Dapr pub/sub allows you to do that and also do it in an at least once guarantee.”transcript, stated
“They will discover each other, and um through Dapr agents, the agent that gets the initial prompt will know exactly which agent to pick”transcript, stated

agent-memory (state)

Dapr Agents save both workflow progress and conversation memory to the selected state store so recovered agents do not recompute previous context.

“Um and we've gotten a agent memory. This is essentially where you save your state. Um and that's the only thing you need to do, really.”transcript, stated
“they don't only save where where the workflow was during execution, they also save the memory of the agent and the conversation history.”transcript, stated

privacy-preserving-processing (governance)

The Dapr conversation API can obfuscate PII both before data enters an LLM and after responses come back.

“to Mistral or Anthropic or OpenAI, but Dapr provides some really nice uh additional enterprise features like PII data obfuscation without relying on any external service. So if you have any credit card numbers, names, um addresses, anything of that sort, Dapr can make sure to obfuscate the”transcript, stated
“Dapr can make sure to obfuscate the data when it goes into the LLM or even when it comes out of it.”transcript, stated

safety-policy-enforcement (governance)

Dapr access policies and trust domains restrict which agents can communicate with other agents and MCP servers at runtime.

3 supporting quotes
“Again, uh a lot of scope, but Dapr can apply access policies. So through Dapr, you can choose which agent can talk to each other agent and which agent can talk to this MCP server and not to that MCP server.”transcript, stated
“you can choose which agent can talk to each other agent and which agent can talk to this MCP server and not to that MCP server.”transcript, stated
“And you can also create trust domains um where you have multiple agents that are trusted inside of a boundary and then another group of agents which are not in that trusted boundary and so those two groups just can talk to each other.”transcript, stated

observability-tracing (operations)

The system emits OpenTelemetry traces for full audit logs, state reads/writes, agent handoffs, and timing across multi-agent workflows.

3 supporting quotes
“you have all of the information. Everything is uh translated through open telemetry”transcript, stated
“You're essentially getting uh everything that's happened. So, you get the full audit log”transcript, stated
“You can see which step uh took longest, and everything is essentially detailed.”transcript, stated

Tradeoffs

Use Dapr workflows for agent durability.

Chose workflow-engine recovery over checkpoint-only persistence.

Rationale: Checkpoint-only systems save state but still require teams to build failure detection, recovery, and duplicate-execution prevention.

“that means writing a workflow engine basically yourself, and that is all the hard parts of a workflow engine.”transcript, stated
“Dapr will do that for you, no matter how many agents or workflows you're running.”transcript, stated

Use Dapr component YAML for infrastructure choices.

Chose declarative database and broker bindings over SDK-specific code paths for each backend.

Rationale: The same agent code can switch state stores or pub/sub brokers by changing Dapr component configuration.

“that pub/sub name again is a YAML representation of what it actually is.”transcript, stated
“If we want to switch that to Kafka, um that's um one of the few things I'd have to do.”transcript, stated

Distribute multi-agent logic across agents instead of building an agent monolith.

Chose Dapr-connected agent collaboration over one agent containing all logic.

Rationale: Separate agents can own narrower responsibilities while Dapr handles discovery, messaging, and isolation.

“You want to spread them out where each agent does what it needs to do.”transcript, stated
“two Dapr processes, one for Sam, one one for Frodo, and those um different agents are connecting to their individual Dapr uh sidecars.”transcript, stated

Integrate Dapr benefits into existing frameworks as well as Dapr Agents.

Chose extensions and integration points over forcing code migration to Dapr Agents.

Rationale: Many teams already chose LangChain, LangGraph, Strands, OpenAI Agents, or custom frameworks and still need durability primitives.

“we're also going to see how you can use a lot of the features the Dapr agents gives you in other frameworks.”transcript, stated
“And those integration points that we have make it very easy to do so. Um last demo we're going to see today is a multi-agent demo because Dapr will give that to you, too.”transcript, stated

Obfuscate PII inside the LLM abstraction layer.

Chose Dapr conversation API PII protection over unfiltered model input/output.

Rationale: Enterprises may need to protect sensitive values going into hosted or self-hosted models and also sanitize model outputs before returning them.

“if you have any credit card numbers, names, um addresses, anything of that sort”transcript, stated
“Dapr will make sure to examine that and obfuscate the data when it comes out of the LLM as well.”transcript, stated

Gotchas (what bit them)

State loss can make late-stage agent failures financially expensive.

Root cause: Without durable execution, an agent that fails near the end of a long workflow may repeat all prior LLM calls.

Resolution: Use Dapr workflows so execution state persists and the agent resumes from the failed point.

“workflow consists of 100 steps and it fails at step 99, you really don't want to have to replay from the beginning.”transcript, stated
“it's going to need to pick all the way from the beginning and you're going to be paying for all of those LLM calls.”transcript, stated

Checkpointing alone is not recovery.

Root cause: Frameworks can serialize step outputs but still lack failure detection and recovery orchestration.

Resolution: Let Dapr handle failure detection and recovery instead of making every team build a workflow engine.

3 supporting quotes
“checkpointing are great for, you know, getting the state into the database, resuming the progress”transcript, stated
“Because checkpointing are great for, you know, getting the state into the database, resuming the progress, but then you also need to know when something fails, and when something fails, you also need the business logic to be able to make it recover.”transcript, stated
“You don't need to take care of failure detection, Dapr will do that for you.”transcript, stated

Recovery systems can duplicate workflow execution.

Root cause: Multiple recovery instances may resume the same workflow twice if the framework does not coordinate active executions.

Resolution: Dapr workflows enforce one executing instance per workflow.

“the exact same instance of a workflow twice. So, you'll get duplicate executions with all of their very unwelcome side effects”transcript, stated
“Dapr workflows really guarantees that only one instance of every workflow is going to be executing.”transcript, stated

MCP servers and autonomous agents expand the security attack surface.

Root cause: Agents and MCP servers can hold credentials to databases, CRM systems, and APIs, enabling lateral movement after a breach.

Resolution: Apply access policies and trust domains to govern agent-to-agent and agent-to-MCP communication.

3 supporting quotes
“we're giving those MCP servers access to our most precious prizes, our databases, our CRM systems, our APIs”transcript, stated
“it's much easier for malicious actors to work horizontally or do lateral movements within your system and exploit.”transcript, stated
“how do you govern agents and MCP servers, the MCP servers they're interacting with at scale?”transcript, stated

Framework-native state stores can lock teams into a narrow database set.

Root cause: Some agent frameworks support only a few default databases for saved state.

Resolution: Use Dapr's state abstraction to write agent state to 30-plus supported databases and migrate stores by configuration.

“if you save data using LangGraph, you can pretty much use three databases out of the box today.”transcript, stated
“integrating Dapr with those frameworks, you can actually save all of your data in more than 30 different databases.”transcript, stated

Evaluation

The talk demonstrates reliability through failure-oriented demos rather than only happy-path examples. A weather agent is killed mid-run and restarted without a second request; Dapr resumes exactly where it left off. A multi-agent demo runs two isolated agents through Dapr sidecars, pub/sub, and asynchronous workflow invocation. Zipkin/OpenTelemetry traces are inspected to verify audit logs, state get/save operations, conversation-state persistence, and step timing.

Metrics: resume from exact failed step · no re-submitted user request after restart · retry behavior for LLM or network failures · exactly-once workflow execution · at-least-once pub/sub delivery · number of supported state databases · agent discovery with four lines of code · OpenTelemetry audit coverage · conversation state and workflow state persistence · ability to connect hundreds of agents

4 supporting quotes
“we are abruptly killing it. And this can be any form of failure.”transcript, stated
“I'm not curling it again now, we can see that it picks up exactly where it left off.”transcript, stated
“you can put your own retry policies. You can say retry for five times before you essentially declare this agentic workflow as failed.”transcript, stated
“Um we can see that um we have those traces. Um these ran 2 minutes ago, and you're Let me just zoom in a little.”transcript, stated

Outcomes

The talk gives concrete scale anchors: 100 LLM calls, 100-step and 1,000-step workflows, 1,000 documents, 1,000 agents and 1,000 workflows creating hundreds of thousands or millions of workflow instances, 30-plus databases, 9,000 Discord members, almost 5,000 contributors, retry-for-five policy examples, two-agent demo isolation, hundreds of connected agents, and stable 1.0 release timing.

4 supporting quotes
“Dapr Agents. It was contributed um by Nvidia to the Dapr project and those are essentially durable agents.”transcript, stated
“No agent framework can do this today. None will do this because, again, they are not focused on distributed systems challenges.”transcript, stated
“Dapr workflows really guarantees that only one instance of every workflow is going to be executing.”transcript, stated
“you get the full audit log, really important for compliance for everything that's happened.”transcript, stated