Favicon of Dapr

Dapr

Dapr is an open-source sidecar runtime providing durable workflows, state management, pub/sub, and secure APIs for distributed apps and AI agents.

Dapr website screenshot
Dapr GitHub repository preview

Dapr is an open-source runtime for building distributed applications, workflows, and AI agents. It runs as a sidecar alongside your service and exposes a consistent set of APIs over HTTP and gRPC, so any language can use durable execution, state management, pub/sub messaging, and secure service-to-service calls without pulling in a framework. It's aimed at developers and platform teams building microservices, event-driven systems, or AI agents who don't want to hand-roll retries, state persistence, or mTLS for every service.

Instead of coupling your code to a specific message broker, database, or cloud provider, you talk to Dapr's APIs and swap the backing component (Kafka, Redis, Azure Service Bus, DynamoDB, etc.) through configuration. Dapr is a graduated CNCF project, and native SDKs exist for .NET, Java, Python, Go, JavaScript/TypeScript, Rust, C++, and PHP.

Key features

  • Durable workflows: author long-running workflows as ordinary code; execution persists progress and resumes from the last completed step after crashes, pod restarts, or node failures.
  • AI agent support: durable agent execution, multi-agent orchestration, state/memory persistence, and an LLM Conversation API with prompt caching and tool calling.
  • Secure by default: every app gets a cryptographically verifiable identity, with mutual TLS, workload authentication, fine-grained access policies, and automatic certificate rotation.
  • Verifiable execution: cryptographic proof of who executed what, in what order, and whether execution history was tampered with, useful for audit-heavy environments.
  • Pluggable building blocks: state management, pub/sub, actors, bindings, secrets, configuration, distributed locks, cryptography, and job scheduling, all decoupled from specific infrastructure.
  • Runs anywhere: works identically on Kubernetes, VMs, bare metal, cloud, edge, and air-gapped environments, as a small (~58MB) sidecar binary.
  • Incremental adoption: pick up one API at a time (e.g. just pub/sub, or just workflows) without rewriting the rest of your application.

Ideal use cases

Dapr fits teams building microservices or event-driven systems who want reliability primitives (retries, mTLS, observability) without writing that plumbing per service. It's a good fit for multi-step business processes like order processing, onboarding, or document pipelines that need to survive crashes and resume rather than restart. It's also aimed squarely at AI agent systems that need durable state, multi-agent coordination, and human-in-the-loop approval steps on top of whatever model or framework you're already using.

It's less useful for a single simple service with no cross-service calls, no need for state persistence, and no messaging, adding a sidecar there is pure overhead. Teams fully committed to a single cloud's managed orchestration (e.g. a proprietary workflow engine) with no plans to change providers may not need the portability Dapr offers. If you need a full ML training/serving platform rather than an execution/coordination layer for agents, Dapr's Conversation API and workflow primitives are complementary, not a replacement.

Installation

Dapr is typically installed and managed through the Dapr CLI, which sets it up on a local dev machine or a Kubernetes cluster. The README points to the official docs for a full walkthrough:

# See the Getting Started guide for OS-specific install commands
# https://docs.dapr.io/getting-started/

After installing the CLI, initialize Dapr locally or on Kubernetes (exact commands are covered in the docs linked above), then add the Dapr sidecar to your service via the CLI (dapr run) for local development, or via annotations for Kubernetes deployments. For hands-on examples, clone the quickstarts repository:

git clone https://github.com/dapr/quickstarts.git

Additional samples covering various use cases live in the samples repository. SDKs for Go, Java, .NET, JavaScript, Python, Rust, C++, and PHP are maintained in their own repos under the dapr GitHub organization, and each includes language-specific setup instructions.

Share:

Stars
26.2K
Forks
2.2K
Last commit
2 days ago
Repository age
7 years
License
Apache-2.0
Self-hosted
Yes
Activity score
83/100
View Repository
Ad
Favicon

 

  
 

Similar to Dapr

Favicon

 

  
 
Favicon

 

  
 
Favicon