The AI agent landscape has undergone a dramatic consolidation in 2026. What was once a fragmented ecosystem of experimental libraries has crystallized into four major contending frameworks, each backed by a hyperscaler or a frontier lab. If you are building agentic workflows today, your real choice comes down to Claude Agent SDK (Anthropic), Strands Agents (AWS), LangGraph (LangChain), and OpenAI Agents SDK (OpenAI).

This article provides a rigorous, code-grounded comparison of all four. We will dissect their architectural models, evaluate state management and tool use patterns, compare multi-agent orchestration capabilities, and ultimately help you decide which framework fits your production requirements. If you are new to agent development, consider reading our AI Agent Development Complete Guide first.

The 2026 Agent Framework Landscape

Before 2025, the agent space was defined by LangChain and a handful of research-oriented projects like AutoGen and CrewAI. The past eighteen months changed everything. Anthropic shipped a general-purpose Agent SDK extracted from Claude Code. AWS open-sourced Strands Agents, a model-driven framework deeply integrated with Amazon Bedrock. OpenAI evolved its experimental Swarm project into a production-grade Agents SDK with sandbox execution and a harness system. And LangGraph matured into a durable execution engine with first-class human-in-the-loop support.

Each framework reflects a fundamentally different philosophy about what an agent should be and how much control the developer should retain. Understanding these philosophies is the key to making the right choice.

Architecture and Core Abstractions

Claude Agent SDK: The Agent-as-Runtime Model

Claude Agent SDK, formerly known as the Claude Code SDK, was renamed in late 2025 to reflect its evolution into a general-purpose agent runtime. As of April 2026, it ships as both a Python package (claude-agent-sdk) and a TypeScript package on npm.

The architecture is built around four core concepts:

  • Agent: Encapsulates the model, system prompt, tools, MCP servers, and skills.
  • Environment: A configured container template specifying packages, network access, and filesystem mounts.
  • Session: A running agent instance within an environment, maintaining persistent state across turns.
  • Events: A stream of messages exchanged between your application and the agent (user turns, tool results, status updates).
python
from claude_agent_sdk import Agent, Session

agent = Agent(
    model="claude-sonnet-4-20250514",
    system_prompt="You are a data analysis assistant.",
    tools=[read_csv, plot_chart, query_database],
    mcp_servers=["filesystem", "postgres"]
)

async with Session(agent, environment="data-analyst-env") as session:
    response = await session.send("Analyze Q1 revenue trends")
    async for event in response:
        print(event)

The distinguishing characteristic is that Claude Agent SDK treats every agent as a stateful, sandboxed runtime rather than a lightweight function chain. The session persists through failures, maintains a working directory, and can execute code inside a container. This makes it exceptionally well-suited for coding agents, data analysis, and any task that requires persistent environment state.

Trade-off: The SDK is tightly coupled to Anthropic's Claude models. You cannot swap in GPT-4 or Llama. If model portability matters, look elsewhere.

Strands Agents: The Model-Driven Minimalist

Strands Agents, open-sourced by AWS in 2025 and now at version 1.34+, takes a radically minimalist approach. Its core thesis: the LLM itself should drive the agent loop. The framework provides three primitives — Model, Tools, and Agent — and delegates all planning and routing decisions to the model.

python
from strands import Agent
from strands.tools import tool

@tool
def get_weather(city: str) -> str:
    """Get current weather for a city."""
    return f"72F and sunny in {city}"

agent = Agent(tools=[get_weather])
response = agent("What is the weather in Seattle?")

That is the entire agent. No graph definitions, no state schemas, no routing logic. The model receives the tool descriptions and decides autonomously which tools to call, in what order, and when to stop.

Under the hood, Strands implements an event-loop architecture with three phases: (1) the model generates a response, (2) the framework parses any function calling requests, (3) tool results are fed back to the model. This loop repeats until the model produces a final text response with no tool calls.

Strands supports multiple model providers including Amazon Bedrock, Anthropic, OpenAI, LiteLLM, and Ollama. Its natural home is the AWS ecosystem, pairing with Bedrock for inference and AgentCore for managed deployment, but it is genuinely provider-agnostic.

LangGraph: The Stateful Graph Engine

LangGraph has evolved from a LangChain sub-library into the most widely adopted agent orchestration framework, with over 47 million monthly downloads. Its architecture is fundamentally different from the other three: it models agent workflows as directed graphs with explicit state.

python
from langgraph.graph import StateGraph
from typing import TypedDict, Annotated
from langgraph.graph.message import add_messages

class AgentState(TypedDict):
    messages: Annotated[list, add_messages]
    current_step: str

graph = StateGraph(AgentState)
graph.add_node("planner", planner_node)
graph.add_node("executor", executor_node)
graph.add_node("reviewer", reviewer_node)

graph.add_edge("planner", "executor")
graph.add_conditional_edges("executor", route_after_execution)
graph.add_edge("reviewer", "planner")

app = graph.compile(checkpointer=MemorySaver())

In LangGraph, you define the precise topology of your agent workflow. Each node is a function that reads and writes to a typed state object. Edges can be conditional, enabling branching and looping. The state is checkpointed at every step, enabling durable execution that survives failures and restarts.

This is as close to a "bare metal" agent orchestration engine as you will find. LangGraph does not abstract prompts or architecture decisions — it gives you raw control and expects you to design the workflow yourself. For a deeper exploration of LangGraph's multi-agent capabilities, see our LangGraph vs AutoGen comparison.

OpenAI Agents SDK: The Handoff-Centric Model

The OpenAI Agents SDK evolved from the experimental Swarm framework into a production-grade toolkit. Its core primitives are deliberately simple: Agents, Handoffs, and Guardrails.

python
from agents import Agent, Runner

triage_agent = Agent(
    name="Triage",
    instructions="Route the user to the correct specialist.",
    handoffs=[billing_agent, technical_agent, general_agent]
)

billing_agent = Agent(
    name="Billing Specialist",
    instructions="Handle billing inquiries.",
    tools=[lookup_invoice, process_refund]
)

result = Runner.run_sync(triage_agent, "I was double-charged last month")

The handoff mechanism is the defining pattern. Instead of routing through a graph or delegating to a meta-agent, an agent can transfer control to another agent by producing a handoff. The receiving agent takes over the conversation with full context. This maps naturally to customer service workflows, tiered support systems, and any scenario where specialization boundaries are clear.

In April 2026, OpenAI shipped a major upgrade introducing a harness system — the same scaffolding that powers Codex. The harness wraps the model with instructions, tools, approvals, tracing, and resume bookkeeping, enabling long-running agents that persist through interruptions and sandbox execution for safe code evaluation.

State Management Compared

State management is where these frameworks diverge most sharply. The table below summarizes the key differences:

Feature Claude Agent SDK Strands Agents LangGraph OpenAI Agents SDK
State Model Session-based (persistent environment) Conversation history (message list) Typed state graph with reducers Context variables + conversation
Persistence Built-in (session storage) Manual (DynamoDB, S3) Checkpointer API (memory, SQLite, Postgres) Session-based (new in 2026)
Durability Session auto-resumes Developer-managed Built-in durable execution Harness resume bookkeeping
Human-in-the-Loop Via event stream interrupts Custom tool implementation First-class interrupt() primitive Approval callbacks in harness
Memory Short-term (session) + long-term (configurable) Short-term (conversation context) Short-term (thread) + long-term (store API) Short-term + memory API

LangGraph leads in state management sophistication. Its reducer-based approach lets you define exactly how concurrent updates to the same state key are resolved — critical for parallel multi-agent systems. The interrupt() primitive allows pausing execution at any node for human approval, then resuming from exactly that checkpoint.

Claude Agent SDK takes a different approach: state lives in the session environment itself. Files written to disk, environment variables set, databases created — all persist across turns. This is less structured than LangGraph's typed state but more natural for tasks that produce artifacts.

Strands Agents is deliberately lightweight on state. The framework maintains conversation history and lets the model manage context. For persistence, you wire in DynamoDB or S3 yourself. This simplicity is a feature — it means less framework magic to debug.

Tool Integration and MCP Support

The Model Context Protocol has become the de facto standard for agent-tool interoperability in 2026. All four frameworks support it, but with varying depth.

Feature Claude Agent SDK Strands Agents LangGraph OpenAI Agents SDK
Native MCP First-party (Anthropic created MCP) First-class integration Via LangChain MCP adapter Added in v0.7 (2025)
Custom Tools Python/TS functions @tool decorator Node functions @function_tool decorator
Tool Count Scaling Managed via skills system Semantic search (6000+ tools) Manual or via tool node Manual selection
Permission Control Permission modes (ask, allow, deny) IAM-based Custom logic in nodes Approval callbacks
Sandbox Execution Container-based sandboxing AgentCore sandboxing Custom (bring your own) Sandbox execution (new)

Strands Agents deserves special mention for its approach to large tool inventories. Its built-in Retrieve tool uses semantic search — a technique familiar from RAG pipelines — to dynamically filter the most relevant tools from catalogs containing thousands of entries. This is critical for enterprise deployments where an agent might have access to hundreds of microservice APIs.

Claude Agent SDK has the deepest MCP integration, which makes sense given that Anthropic co-created the protocol. You can attach MCP servers directly to an agent definition, and the framework handles connection lifecycle and capability negotiation automatically.

For a comprehensive look at how MCP is reshaping agent-tool interaction, see our MCP Protocol Complete Guide.

Multi-Agent Orchestration

Building systems where multiple agents collaborate is one of the hardest problems in agent engineering. Each framework takes a distinct approach, as detailed in our Multi-Agent System Complete Guide.

LangGraph: Graphs of Agents

LangGraph's graph architecture extends naturally to multi-agent systems. Each node in the graph can be an independent agent with its own prompt engineering, tools, and sub-graph. The parent graph controls routing, state flow, and termination conditions.

python
# Each "node" is itself a compiled sub-graph (agent)
main_graph = StateGraph(OrchestratorState)
main_graph.add_node("researcher", researcher_graph.compile())
main_graph.add_node("writer", writer_graph.compile())
main_graph.add_node("reviewer", reviewer_graph.compile())

This gives you maximum control but requires significant upfront design. You must define every edge, every conditional branch, and every state transition. For complex workflows, this is precisely the kind of control you want. For simpler use cases, it is over-engineering.

Strands Agents: Four Coordination Patterns

Strands provides four built-in multi-agent coordination patterns:

  1. Agents-as-Tools: A hierarchical pattern where specialist agents are registered as tools on a coordinator agent. The coordinator delegates by calling them like functions.
  2. Swarms: Autonomous collaboration where agents self-organize and communicate through shared context.
  3. Graphs: Structured workflows using the agent_graph tool for deterministic execution paths.
  4. Meta-Agents: A dynamic pattern where an orchestrator agent creates and configures child agents at runtime.
python
from strands import Agent
from strands.tools import tool

researcher = Agent(tools=[web_search, arxiv_search])
writer = Agent(tools=[text_editor])

@tool
def research(topic: str) -> str:
    """Delegate research to the specialist."""
    return researcher(f"Research: {topic}")

coordinator = Agent(tools=[research, writer_tool])

OpenAI Agents SDK: Handoff Chains

The OpenAI approach models multi-agent interaction as a chain of handoffs. Agent A can transfer control to Agent B, which can hand off to Agent C. This creates a pipeline-style flow that is easy to understand and debug.

The limitation is that handoffs are primarily sequential. While you can build more complex topologies by having agents hand off conditionally, the framework does not natively support parallel agent execution or graph-based routing. For complex orchestration needs like those described in our CrewAI Multi-Agent Workflow Guide, you would need to build additional infrastructure.

Claude Agent SDK: Depth Over Breadth

Claude Agent SDK focuses on making a single agent extraordinarily capable rather than orchestrating many agents. Through managed sessions, container environments, skills, and persistent state, a single Claude agent can handle workflows that might otherwise require multiple cooperating agents.

For scenarios that genuinely require multi-agent coordination, you would compose at the application level — running multiple sessions and routing between them in your own code. The framework itself does not prescribe a multi-agent pattern.

Observability and Debugging

Production agents fail in subtle ways. A wrong tool call, a hallucinated parameter, a routing decision that sends the workflow into an infinite loop — these issues demand strong observability.

Feature Claude Agent SDK Strands Agents LangGraph OpenAI Agents SDK
Built-in Tracing Event stream with full audit trail OTEL-based observability LangSmith integration Built-in tracing (spans, traces)
Step-by-Step Replay Session event replay CloudWatch + X-Ray LangGraph Studio Trace viewer in dashboard
Cost Tracking Per-session token usage Bedrock cost metrics LangSmith cost tracking Usage API
Debugging Tool Event inspector Standard OTEL tooling LangGraph Studio (visual) Trace inspection

LangGraph Studio stands out as the most developer-friendly debugging experience. It provides a visual representation of the graph, lets you step through execution node by node, inspect state at each checkpoint, and even rewind and replay from any point. This alone can justify choosing LangGraph for complex workflows.

Strands Agents leverages OpenTelemetry (OTEL), which means you can plug into any OTEL-compatible backend (Datadog, Jaeger, Grafana) without vendor lock-in. Combined with native AWS observability via CloudWatch and X-Ray, this provides enterprise-grade monitoring for AWS-native deployments.

OpenAI's tracing system records every step of agent execution as spans within traces, viewable through the OpenAI dashboard. The April 2026 harness update improved this significantly, adding detailed harness-level tracing that captures tool approvals, resume events, and handoff decisions.

Performance and Production Readiness

For teams evaluating these frameworks for production deployment, several practical factors matter beyond architecture elegance.

Dimension Claude Agent SDK Strands Agents LangGraph OpenAI Agents SDK
Language Support Python, TypeScript Python Python, TypeScript Python (TS planned)
Managed Hosting Claude Managed Agents AWS AgentCore LangGraph Cloud OpenAI platform
Self-Hosting Container-based Any infrastructure Any infrastructure Harness is self-hostable
Streaming Native event streaming Native streaming Native streaming Native streaming
Model Support Claude only Bedrock, Anthropic, OpenAI, Ollama Any (via LangChain) OpenAI API compatible
License Proprietary SDK Apache 2.0 MIT MIT
Community Size Growing (Anthropic ecosystem) Growing (AWS ecosystem) Largest (47M+ downloads/mo) Large (OpenAI ecosystem)

LangGraph has the most production mileage. Companies like Klarna, Uber, and LinkedIn run LangGraph agents at scale, and the combination of durable execution, checkpointing, and LangGraph Cloud provides a clear path from prototype to production.

Strands Agents is the newest entrant but benefits from AWS's enterprise credibility. If your infrastructure is already on AWS and you use Bedrock for inference, Strands plus AgentCore provides the most frictionless deployment path with native IAM, VPC, and secrets management integration.

Claude Agent SDK's managed hosting through Claude Managed Agents removes operational burden entirely — Anthropic handles container orchestration, scaling, and session persistence. The trade-off is vendor lock-in to both the SDK and the model provider.

Framework Selection Decision Guide

Choosing the right framework comes down to three questions: What is your primary model provider? How complex is your agent workflow? What is your deployment target?

Choose Claude Agent SDK When:

  • You are building with Claude models exclusively
  • Your agents need persistent sandboxed environments (coding, data analysis)
  • You want managed hosting with minimal operational overhead
  • Single-agent depth matters more than multi-agent breadth

Choose Strands Agents When:

  • Your infrastructure runs on AWS with Amazon Bedrock
  • You prefer a minimal, model-driven approach with little framework ceremony
  • You need to scale tool inventories to hundreds or thousands of APIs
  • You want open-source flexibility with enterprise AWS integration

Choose LangGraph When:

  • You need maximum control over complex, stateful agentic workflows
  • Model portability across providers is a requirement
  • You are building sophisticated multi-agent systems with conditional routing
  • Observability and debugging tools (LangGraph Studio) are a priority
  • You need the most proven production track record

Choose OpenAI Agents SDK When:

  • You are building within the OpenAI ecosystem (GPT-4, Codex)
  • Your multi-agent pattern maps to sequential handoffs (support tiers, pipelines)
  • You need voice agent capabilities (Realtime Agents with gpt-realtime-1.5)
  • You want the simplest possible API for common agent patterns

The Convergence Ahead

Despite their different architectures, these frameworks are converging on several fronts. All four now support MCP for tool interoperability. All four offer some form of streaming, persistence, and observability. The ReAct pattern — the reasoning-and-acting loop that underpins most agent architectures — is implemented in all of them, whether explicitly (LangGraph) or implicitly (the model-driven loops in Strands and Claude Agent SDK).

The broader industry trend points toward agents becoming infrastructure rather than applications. As we explored in Cloud Agent Paradigm Shift, the next phase is agents deployed as always-on services with durable state, managed hosting, and enterprise-grade security. All four frameworks are racing toward this vision, just from different starting positions.

What has not converged is the fundamental tension between control and simplicity. LangGraph gives you the most control at the cost of more boilerplate. Strands and Claude Agent SDK give you simplicity at the cost of less fine-grained orchestration. OpenAI Agents SDK splits the difference with its handoff model. This tension is unlikely to resolve — it reflects genuinely different design priorities.

For teams starting new agent projects in 2026, the pragmatic advice is this: prototype with the framework closest to your existing model provider and infrastructure. If you are on AWS, start with Strands. If you use Claude, start with Claude Agent SDK. If you need model flexibility or complex graphs, start with LangGraph. Then evaluate whether the framework's constraints become blockers as your requirements grow. The switching cost between frameworks is real but manageable — the business logic and prompt engineering you develop will transfer even if the orchestration code does not.

The agent framework wars of 2026 are not about which framework is "best." They are about which set of trade-offs aligns with the way your team builds software. Choose accordingly.