Build production-ready AI agents on Diagrid Catalyst by combining any of the supported agent frameworks below with [Dapr](https://docs.diagrid.io/dapr-open-source) for durable execution, pluggable memory, and swappable LLM providers. Each framework guide shows how to make existing agents crash-proof with [durable workflows](https://docs.diagrid.io/develop/workflows) and how to expose tools over [MCP servers](https://docs.diagrid.io/develop/mcp). New to agents? Start with the [AI agent quickstart](https://docs.diagrid.io/getting-started/quickstarts/ai-agents) to build and deploy your first durable agent in under 15 minutes, then come back here to wire up your preferred framework.

Catalyst works with the following agent frameworks.

- [Dapr Agents](https://docs.diagrid.io/develop/agents/dapr-agents) — Native Dapr agent framework with built-in durability, state, and pub/sub for multi-agent orchestration.
- [CrewAI](https://docs.diagrid.io/develop/agents/crewai) — Multi-agent crews with role-based collaboration, made durable with Catalyst.
- [LangGraph](https://docs.diagrid.io/develop/agents/langgraph) — Graph-based agent orchestration with conditional routing, made durable with Catalyst.
- [Strands](https://docs.diagrid.io/develop/agents/strands) — Model-driven agent framework from AWS with tool use, made durable with Catalyst.
- [Microsoft Agent Framework](https://docs.diagrid.io/develop/agents/microsoft) — Enterprise agent framework from Microsoft, made durable with Catalyst.
- [Spring AI](https://docs.diagrid.io/develop/agents/spring-ai) — Spring's AI framework for Java, made durable with Catalyst.
- [Google ADK](https://docs.diagrid.io/develop/agents/adk) — Agent Development Kit with Gemini integration, made durable with Catalyst.
- [OpenAI Agents](https://docs.diagrid.io/develop/agents/openai) — Function tools and agent handoffs from OpenAI, made durable with Catalyst.
- [Pydantic AI](https://docs.diagrid.io/develop/agents/pydantic-ai) — Type-safe agent framework with structured outputs, made durable with Catalyst.
- [Deep Agents](https://docs.diagrid.io/develop/agents/deepagents) — LangChain-based deep agent framework with durable tool execution, made durable with Catalyst.
- [Claude Agents](https://docs.diagrid.io/develop/agents/claude) — Anthropic's Claude Agent SDK with native tool calling, made durable with Catalyst.
- [HolmesGPT](https://docs.diagrid.io/develop/agents/holmesgpt) — SRE and on-call agent for alert triage and incident investigation, made durable with Catalyst.
- [Mastra](https://docs.diagrid.io/develop/agents/mastra) — TypeScript agent framework with tool calling, made durable with Catalyst.

Beyond the framework guides, [Multi-agent orchestration](https://docs.diagrid.io/develop/agents/multi-agent-quickstart) shows how to coordinate specialist agents across frameworks over Catalyst pub/sub, and [Deploy to Kubernetes](https://docs.diagrid.io/develop/agents/kubernetes-deploy) covers taking any of them to a cluster.

## Framework requirements

Every agent on Catalyst runs as a [durable workflow](https://docs.diagrid.io/develop/workflows), so **every integration requires a workflow state store** — the managed state store where Catalyst checkpoints and replays each reasoning step and tool call to enable [durable execution](https://docs.diagrid.io/concepts/durable-execution). It is the one resource all frameworks share.

The [Conversation API](https://docs.diagrid.io/concepts/dapr-apis) and a Dapr [conversation component](https://docs.diagrid.io/references/catalyst/components-reference/conversation/openai) that proxies LLM calls are **optional** for most integrations: third-party frameworks call their LLM provider directly through their own SDK. There are two exceptions: [Dapr Agents](https://docs.diagrid.io/develop/agents/dapr-agents) leads with the Conversation API as its LLM path, and the [Microsoft Agent Framework](https://docs.diagrid.io/develop/agents/microsoft) integration routes LLM calls through a conversation component.

| Framework | Language | Package / repo | Required resource | Conversation API |
| --- | --- | --- | --- | --- |
| [Dapr Agents](https://docs.diagrid.io/develop/agents/dapr-agents) | Python | [`dapr/dapr-agents`](https://github.com/dapr/dapr-agents) | Workflow state store | Recommended |
| [LangGraph](https://docs.diagrid.io/develop/agents/langgraph) | Python | [`diagridio/python-ai`](https://github.com/diagridio/python-ai) — `diagrid[langgraph]` | Workflow state store | Optional |
| [CrewAI](https://docs.diagrid.io/develop/agents/crewai) | Python | [`diagridio/python-ai`](https://github.com/diagridio/python-ai) — `diagrid[crewai]` | Workflow state store | Optional |
| [Strands](https://docs.diagrid.io/develop/agents/strands) | Python | [`diagridio/python-ai`](https://github.com/diagridio/python-ai) — `diagrid[strands]` | Workflow state store | Optional |
| [Pydantic AI](https://docs.diagrid.io/develop/agents/pydantic-ai) | Python | [`diagridio/python-ai`](https://github.com/diagridio/python-ai) — `diagrid[pydantic_ai]` | Workflow state store | Optional |
| [OpenAI Agents](https://docs.diagrid.io/develop/agents/openai) | Python | [`diagridio/python-ai`](https://github.com/diagridio/python-ai) — `diagrid[openai_agents]` | Workflow state store | Optional |
| [Google ADK](https://docs.diagrid.io/develop/agents/adk) | Python | [`diagridio/python-ai`](https://github.com/diagridio/python-ai) — `diagrid[adk]` | Workflow state store | Optional |
| [Deep Agents](https://docs.diagrid.io/develop/agents/deepagents) | Python | [`diagridio/python-ai`](https://github.com/diagridio/python-ai) — `diagrid[deepagents]` | Workflow state store | Optional |
| [Claude Agent SDK](https://docs.diagrid.io/develop/agents/claude) | Python | [`diagridio/python-ai`](https://github.com/diagridio/python-ai) — `diagrid[claude_agents]` | Workflow state store | Optional |
| [HolmesGPT](https://docs.diagrid.io/develop/agents/holmesgpt) | Python | [`diagridio/python-ai`](https://github.com/diagridio/python-ai) — `diagrid[holmesgpt]` | Workflow state store | Optional |
| [Mastra](https://docs.diagrid.io/develop/agents/mastra) | TypeScript | [`diagridio/typescript-ai`](https://github.com/diagridio/typescript-ai) — `@diagrid/agent-mastra` | Workflow state store | Optional |
| [Microsoft Agent Framework](https://docs.diagrid.io/develop/agents/microsoft) | .NET | [`diagridio/dotnet-ai`](https://github.com/diagridio/dotnet-ai) — `Diagrid.AI.Microsoft.AgentFramework` | Workflow state store | Required |
| Spring AI | Java | [`diagridio/java-ai`](https://github.com/diagridio/java-ai) — `io.diagrid:diagrid-spring-ai-starter` | Workflow state store | Optional |
| LangChainGo | Go | [`diagridio/go-ai`](https://github.com/diagridio/go-ai) — `adapters/langchaingo` | Workflow state store | Optional |
| Eino | Go | [`diagridio/go-ai`](https://github.com/diagridio/go-ai) — `adapters/eino` | Workflow state store | Optional |

The workflow state store is the only resource the third-party wrappers need — they configure nothing else. Two integrations use more. [Dapr Agents](https://docs.diagrid.io/develop/agents/dapr-agents) is agent-native, so a `DurableAgent` wires up its own memory, state, and registry stores plus a pub/sub for agent-to-agent messaging (`agent-workflow`, `agent-memory`, `agent-registry`, `agent-pubsub` in the quickstart). Go agents register themselves into an `agent-registry` component on startup. In both cases a cloud project provisions the set it needs when you create it with `--deploy-managed-kv --deploy-managed-pubsub --enable-managed-workflow`; agent infrastructure follows the managed key-value store, so there is no separate flag on `project create`. For BYOC and private-region projects, or a cloud project without the managed key-value store, `diagrid project update <project> --enable-agent-infrastructure` provisions the whole set in one step.

Each integration is built on a language-specific durability package that wraps the framework's execution loop in Dapr Workflows: [`python-ai`](https://github.com/diagridio/python-ai) for the Python frameworks, [`dotnet-ai`](https://github.com/diagridio/dotnet-ai) for .NET, [`java-ai`](https://github.com/diagridio/java-ai) for Java, [`go-ai`](https://github.com/diagridio/go-ai) for Go, and [`typescript-ai`](https://github.com/diagridio/typescript-ai) for TypeScript. Dapr Agents builds natively on the Dapr workflow runtime, so there is nothing to wrap.

In Go, you build the agent as a graph of nodes and `go-ai` runs it as a Dapr workflow, so each node becomes a checkpointed activity. The framework plugs in through node constructors — `langchaingo.ModelNode` or `eino.ChatModelNode` — which means swapping frameworks leaves your orchestration code untouched. See the [`go-ai` README](https://github.com/diagridio/go-ai#quickstart) and the runnable [LangChainGo](https://github.com/diagridio/go-ai/tree/main/examples/langchaingo) and [Eino](https://github.com/diagridio/go-ai/tree/main/examples/eino) examples.

:::note
The Java ([`java-ai`](https://github.com/diagridio/java-ai)) and Go ([`go-ai`](https://github.com/diagridio/go-ai)) integrations are in early development — APIs are not yet stable.
:::

**Dapr & AI University — Learn this hands-on:** [Dapr Agents: Build LLM-powered intelligent applications with tools and workflows](https://www.diagrid.io/university/dapr-agents?utm_source=docs&utm_medium=cta&utm_campaign=dapr-agents)

Build intelligent agents with custom tool calls, MCP integration, and multi-agent collaboration. Requires an OpenAI API key.

Intermediate · 45 min · Python
