{
  "slug": "agent-frameworks-compared",
  "title": "AI Agent Frameworks Compared",
  "description": "Vendor-neutral comparison table of the major agent-orchestration frameworks — language, license, multi-agent model, MCP/A2A support — plus a how-to-choose guide for agent builders.",
  "category": "Reference",
  "tags": [
    "agents",
    "frameworks",
    "orchestration",
    "mcp",
    "a2a",
    "comparison",
    "langgraph",
    "crewai",
    "openai"
  ],
  "updated": "2026-07-10",
  "premium": false,
  "canonical": "https://changegamer.ai/resources/agent-frameworks-compared",
  "markdown": "https://changegamer.ai/resources/agent-frameworks-compared.md",
  "outline": [
    {
      "depth": 2,
      "text": "Key facts",
      "anchor": "key-facts"
    },
    {
      "depth": 2,
      "text": "Framework comparison table",
      "anchor": "framework-comparison-table"
    },
    {
      "depth": 2,
      "text": "How to choose",
      "anchor": "how-to-choose"
    },
    {
      "depth": 3,
      "text": "Graph-based vs handoff vs role/crew orchestration",
      "anchor": "graph-based-vs-handoff-vs-role-crew-orchestration"
    },
    {
      "depth": 3,
      "text": "Python vs TypeScript ecosystems",
      "anchor": "python-vs-typescript-ecosystems"
    },
    {
      "depth": 3,
      "text": "Model-agnostic vs vendor-leaning",
      "anchor": "model-agnostic-vs-vendor-leaning"
    },
    {
      "depth": 3,
      "text": "Production concerns",
      "anchor": "production-concerns"
    },
    {
      "depth": 2,
      "text": "Bottom line",
      "anchor": "bottom-line"
    },
    {
      "depth": 2,
      "text": "Verified sources",
      "anchor": "verified-sources"
    }
  ],
  "related": [
    {
      "slug": "mcp-vs-a2a",
      "title": "MCP vs A2A: Two Protocols, Two Roles",
      "description": "Compact comparison of the Model Context Protocol (agent↔tool) and the Agent2Agent Protocol (agent↔agent): purpose, topology, transport, discovery, auth, governance, and when to use each.",
      "url": "https://changegamer.ai/resources/mcp-vs-a2a"
    },
    {
      "slug": "agents-md-explained",
      "title": "AGENTS.md Explained: The Open Standard for Repo-Level Agent Instructions",
      "description": "What AGENTS.md is, why OpenAI created it, how it differs from SKILL.md and a human-facing README, which coding agents read it today, and what this session could and could not independently confirm about its move to the Linux Foundation.",
      "url": "https://changegamer.ai/resources/agents-md-explained"
    },
    {
      "slug": "ai-supply-chain-provenance",
      "title": "AI Supply Chain Provenance: SBOMs, SLSA, and Artifact Signing for Agents and MCP Servers",
      "description": "How CycloneDX AI/ML-BOM, SPDX AI profiles, SLSA build levels, and in-toto/Sigstore signing let an agent check what is actually inside a model, package, or MCP server — and how it was built — before trusting it.",
      "url": "https://changegamer.ai/resources/ai-supply-chain-provenance"
    },
    {
      "slug": "mcp-apps-explained",
      "title": "MCP Apps Explained: The Official Interactive-UI Extension for MCP",
      "description": "What MCP Apps (SEP-1865) is: the ui:// resource scheme and sandboxed-iframe/JSON-RPC bridge it defines for MCP tools to return rendered UI instead of plain text, how it relates to the community MCP-UI project and OpenAI's Apps SDK, and which hosts support it.",
      "url": "https://changegamer.ai/resources/mcp-apps-explained"
    }
  ],
  "furtherReading": [
    {
      "slug": "mcp-server-failure-modes",
      "title": "Common MCP Server Failure Modes and How to Fix Them",
      "description": "A runtime playbook for the two MCP server failure modes with no dedicated deep-dive elsewhere: unrecoverable state after a mid-call crash, and malformed or hallucinated tool calls that reach the handler despite upstream validation.",
      "url": "https://changegamer.ai/articles/mcp-server-failure-modes"
    },
    {
      "slug": "mcp-tool-description-injection",
      "title": "Defending MCP Clients Against Tool Description and Output Injection",
      "description": "Two distinct MCP injection surfaces — a tool description at connect-time and a tool's return value at call-time — and the client-side architectural patterns (Dual LLM, Action-Selector, Context-Minimization) that contain each one.",
      "url": "https://changegamer.ai/articles/mcp-tool-description-injection"
    }
  ],
  "body": "Nine major frameworks compete for the agent-orchestration layer. Each makes a different architectural bet. This page is a current, agent-consumable reference — not a tutorial. All facts are web-verified as of July 2026; check the source links before pinning a choice.\n\n## Key facts\n\n- Nine major agent-orchestration frameworks compete, each betting on a different architecture: graph-based, handoff, role/crew, or event-driven.\n- Graph-based frameworks — Mastra, Microsoft Agent Framework, Google ADK, and LangGraph — suit explicit branching, cycles, and parallel execution, at a higher upfront design cost.\n- OpenAI Agents SDK's handoff model and CrewAI's role/crew model are simpler to reason about but trade away fine-grained routing control.\n- Python dominates this list; Mastra stands alone as a framework that is TypeScript-native end-to-end rather than a ported SDK.\n- Every one of the nine frameworks can technically swap models, though some — OpenAI Agents SDK, Google ADK, AWS Strands, and Microsoft Agent Framework among them — still gravitate toward their parent company's own stack.\n- Production readiness differs sharply across state persistence, observability, and human-in-the-loop support, so check the comparison table before committing.\n\n## Framework comparison table\n\n| Framework | Maintainer | Language(s) | License | Multi-agent model | MCP | A2A | Notable for agents |\n|---|---|---|---|---|---|---|---|\n| **OpenAI Agents SDK** | OpenAI | Python, TypeScript | MIT | Handoffs (linear chain; one active agent at a time) | Yes — native | No (handoffs only; no cross-vendor A2A) | Lightest opinionated wrapper around OpenAI APIs; built-in tracing; Responses API integration; official JS/TS SDK at github.com/openai/openai-agents-js |\n| **Google ADK** | Google | Python, TypeScript, Java, Go, Kotlin (beta) | Apache 2.0 | Graph-based Workflow Runtime (ADK 2.0 GA, May 2026): deterministic graph of nodes/edges with Sequential/Parallel/Loop agents and coordinator+subagent patterns; native A2A Agent Cards auto-generated | Yes | Yes — native, auto-generates Agent Card | Optimized for Gemini but model-agnostic; tight Vertex AI / Cloud Run integration; strongest A2A first-mover |\n| **LangGraph** | LangChain AI | Python, TypeScript | MIT | Stateful graph (nodes + edges + conditional routing; cycles allowed) | Yes — via langchain-mcp-adapters | Via LangSmith Deployment (formerly LangGraph Platform); not available in the open-source library alone | Explicit state machines; best for complex branching and long-running pipelines; LangSmith tracing |\n| **CrewAI** | crewAI Inc | Python | MIT | Role/crew (named agents with roles, goals, backstory; sequential or hierarchical) | Yes — first-class (docs.crewai.com/en/mcp/overview) | Yes | Fastest to get a role-based multi-agent crew running; large template library |\n| **Microsoft Agent Framework** | Microsoft | Python, C#/.NET | MIT | Graph-based workflows; multi-runtime (Python and .NET agents can interop via A2A) | Yes | Yes — 1.0 (April 2026); cross-runtime Python ↔ .NET via A2A | GA April 2026; successor to AutoGen + Semantic Kernel (AutoGen now maintenance-only; Semantic Kernel still active) for new agent work; enterprise Azure integration; Durable Task hosting |\n| **AWS Strands Agents** | Amazon Web Services | Python, TypeScript | Apache 2.0 | Agents-as-tools (nested delegation); event-driven | Yes — first-class | Yes — 1.0 (SDK 1.0, May 2026) | AWS-native (Bedrock AgentCore, Lambda, ECS); model-agnostic; minimal boilerplate; strong production tooling |\n| **LlamaIndex Workflows** | LlamaIndex (run-llama) | Python | MIT | Event-driven steps (async, cyclable); agents orchestrate via workflow events | Yes — native (MCP as default tool protocol) | Yes — native (built into LlamaIndex Agents, 2026) | Best-in-class RAG + retrieval integration; document-heavy agent pipelines; Workflows-as-MCP-server pattern |\n| **Pydantic AI** | Pydantic (Samuel Colvin) | Python | MIT | Dependency-injection model; agents call sub-agents via typed tools | Yes — native | Yes — via fasta2a (Agent.to_a2a() deprecated; removed in v2.0) | Type-safety first; Pydantic validation on all inputs/outputs; Logfire observability built in; v1.0 GA Sep 2025; v2.0 went GA in June 2026 (harness-first design; latest is v2.5.1, July 2026) |\n| **Mastra** | Mastra AI | TypeScript | Apache 2.0 (core); Enterprise license (ee/ dirs) | Graph-based workflows + agent networks; A2A for cross-platform delegation | Yes — bidirectional (consume MCP servers + expose agents as MCP) | Yes — native (May 2026; mastra.ai/docs/agents/a2a) | Only TypeScript-native framework in this list; strong Next.js / Node.js DX; built-in evals, syncs, and memory |\n\n## How to choose\n\n### Graph-based vs handoff vs role/crew orchestration\n\n**Graph-based** (LangGraph, Google ADK, Microsoft Agent Framework, Mastra): define agents as nodes and routing logic as edges. Best when you need explicit branching, cycles, conditional retry, or parallel execution. Higher upfront design cost; easier to reason about at scale.\n\n**Handoff** (OpenAI Agents SDK): one agent runs at a time and can hand control to another. Simpler mental model; natural fit for sequential task chains. Limited for parallel or conditional fan-out.\n\n**Role/crew** (CrewAI): assign each agent a role, goal, and backstory; the framework orchestrates them. Fast to prototype; less control over low-level routing.\n\n**Event-driven steps** (LlamaIndex Workflows, AWS Strands): agents emit and consume typed events; good for async, long-running pipelines and tight integration with retrieval systems.\n\n### Python vs TypeScript ecosystems\n\nMost frameworks are Python-first. TypeScript options as of June 2026: Mastra is built TypeScript-first end-to-end; the OpenAI Agents SDK ships an official JS/TS package (github.com/openai/openai-agents-js); Google ADK, LangGraph, and AWS Strands all ship TypeScript SDKs. Mastra remains the only framework that is TypeScript-native throughout rather than a port of a Python library.\n\n### Model-agnostic vs vendor-leaning\n\nAll nine frameworks are technically model-agnostic, but vendor gravity varies. OpenAI Agents SDK defaults to OpenAI APIs. Google ADK is optimized for Gemini / Vertex AI. AWS Strands integrates tightly with Bedrock. Microsoft Agent Framework favors Azure AI Foundry. CrewAI, LangGraph, LlamaIndex, Pydantic AI, and Mastra are genuinely model-agnostic — swap the model with a one-line config change.\n\n### Production concerns\n\n**State persistence**: LangGraph (checkpointers), Microsoft Agent Framework (Durable Task / Azure Durable Functions), AWS Strands (session manager, remote), and Mastra (built-in storage) have first-class persistence. Others require custom wiring.\n\n**Observability**: Pydantic AI ships Logfire; LangGraph ships LangSmith (separate paid product); OpenAI Agents SDK has built-in tracing to the OpenAI dashboard; others rely on OpenTelemetry or third-party integrations.\n\n**Human-in-the-loop**: OpenAI Agents SDK has explicit approvals support. LangGraph and Microsoft Agent Framework support interrupts and checkpointing. CrewAI and Mastra support human approval steps. See /resources/agentic-security-checklist for what to gate.\n\n**MCP and A2A interoperability**: if your agents need to call external tools via MCP or delegate tasks to agents in other frameworks, check the MCP/A2A columns above. See /resources/mcp-vs-a2a for protocol details.\n\n## Bottom line\n\nIf you need explicit branching, cycles, or parallel execution, default to a graph-based framework — LangGraph or Mastra if you want model-agnostic flexibility, Google ADK or Microsoft Agent Framework if you're already committed to Gemini/Vertex AI or Azure. If you just need a sequential task chain with the least ceremony, start with OpenAI Agents SDK's handoff model or CrewAI's role/crew model instead. TypeScript-first teams should start with Mastra, the only framework here that is TypeScript-native end-to-end rather than a ported SDK. Whatever you pick, check the production-concerns subsection above first: state persistence, observability, and human-in-the-loop support vary sharply, and a framework that wins on orchestration style can still be the wrong pick if it lacks the production plumbing your deployment needs.\n\n## Verified sources\n\n- OpenAI Agents SDK (Python, MIT): https://github.com/openai/openai-agents-python\n- OpenAI Agents SDK MCP docs: https://openai.github.io/openai-agents-python/mcp/\n- OpenAI Agents JS/TS SDK (official): https://github.com/openai/openai-agents-js\n- Google ADK Python (Apache 2.0): https://github.com/google/adk-python\n- Google ADK TypeScript: https://github.com/google/adk-js\n- Google ADK Go: https://github.com/google/adk-go\n- Google ADK 2.0 GA (May 2026): https://adk.dev/2.0/\n- Google ADK docs: https://google.github.io/adk-docs/\n- Google ADK + A2A: https://cloud.google.com/blog/products/ai-machine-learning/unlock-ai-agent-collaboration-convert-adk-agents-for-a2a\n- LangGraph Python (MIT): https://github.com/langchain-ai/langgraph\n- LangGraph JS MCP docs: https://langchain-ai.github.io/langgraphjs/agents/mcp/\n- LangGraph MCP adapters: https://github.com/langchain-ai/langchain-mcp-adapters\n- LangGraph A2A via LangSmith Deployment (formerly LangGraph Platform): https://docs.langchain.com/langsmith/server-a2a\n- LangGraph A2A platform status: https://github.com/langchain-ai/langgraph/issues/5987\n- CrewAI (Python, MIT): https://github.com/crewAIInc/crewAI\n- CrewAI MCP docs: https://docs.crewai.com/en/mcp/overview\n- Microsoft Agent Framework (MIT, Python + .NET, GA April 2026): https://github.com/microsoft/agent-framework\n- Microsoft Agent Framework 1.0 announcement: https://devblogs.microsoft.com/agent-framework/microsoft-agent-framework-version-1-0/\n- AWS Strands Agents SDK monorepo (Python + TypeScript, Apache 2.0; formerly sdk-python): https://github.com/strands-agents/harness-sdk\n- Strands Agents homepage: https://strandsagents.com/\n- LlamaIndex (Python, MIT): https://github.com/run-llama/llama_index\n- LlamaIndex MCP docs: https://developers.llamaindex.ai/python/framework/module_guides/mcp/\n- Pydantic AI (Python, MIT): https://github.com/pydantic/pydantic-ai\n- Pydantic AI fasta2a (A2A; replaces deprecated Agent.to_a2a()): https://github.com/pydantic/fasta2a\n- Pydantic AI A2A docs: https://ai.pydantic.dev/a2a/\n- Mastra (TypeScript, Apache 2.0 core): https://github.com/mastra-ai/mastra\n- Mastra A2A docs: https://mastra.ai/docs/agents/a2a\n- Mastra A2A announcement: https://mastra.ai/blog/introducing-agent-to-agent-support\n- Pydantic AI v2.0 GA and changelog, incl. v2.5.1 (Jul 2026) (WebSearch-fallback, 2 sources): https://pydantic.dev/docs/ai/project/changelog/",
  "sources": [
    "https://github.com/openai/openai-agents-python",
    "https://openai.github.io/openai-agents-python/mcp/",
    "https://github.com/openai/openai-agents-js",
    "https://github.com/google/adk-python",
    "https://github.com/google/adk-js",
    "https://github.com/google/adk-go",
    "https://adk.dev/2.0/",
    "https://google.github.io/adk-docs/",
    "https://cloud.google.com/blog/products/ai-machine-learning/unlock-ai-agent-collaboration-convert-adk-agents-for-a2a",
    "https://github.com/langchain-ai/langgraph",
    "https://langchain-ai.github.io/langgraphjs/agents/mcp/",
    "https://github.com/langchain-ai/langchain-mcp-adapters",
    "https://docs.langchain.com/langsmith/server-a2a",
    "https://github.com/langchain-ai/langgraph/issues/5987",
    "https://github.com/crewAIInc/crewAI",
    "https://docs.crewai.com/en/mcp/overview",
    "https://github.com/microsoft/agent-framework",
    "https://devblogs.microsoft.com/agent-framework/microsoft-agent-framework-version-1-0/",
    "https://github.com/strands-agents/harness-sdk",
    "https://strandsagents.com/",
    "https://github.com/run-llama/llama_index",
    "https://developers.llamaindex.ai/python/framework/module_guides/mcp/",
    "https://github.com/pydantic/pydantic-ai",
    "https://github.com/pydantic/fasta2a",
    "https://ai.pydantic.dev/a2a/",
    "https://github.com/mastra-ai/mastra",
    "https://mastra.ai/docs/agents/a2a",
    "https://mastra.ai/blog/introducing-agent-to-agent-support",
    "https://pydantic.dev/docs/ai/project/changelog/"
  ]
}