Framework Landscape
2026's framework map was redrawn in eight months — AutoGen and Semantic Kernel merged into Microsoft Agent Framework, LangGraph went 1.0, first-party SDKs matured. The tour, honestly given.
▶ Watch this reelWhat you'll learn
- The consolidation
- The main contenders
- Vendor SDKs & the no-framework path
- Status table
Remember this
- 2026 consolidation: AutoGen + Semantic Kernel → Microsoft Agent Framework 1.0 (Apr 2026); LangGraph 1.0; first-party SDKs matured; MCP/A2A open protocols changed the switching math
- Three philosophies: LangGraph = explicit graphs you control · MAF = unified enterprise SDK (.NET+Python, MCP+A2A) · CrewAI = fastest role-based crews
- Verify before committing: repo pulse, protocol support, ecosystem — and start no-framework for narrow tasks; Swarm is archived, AutoGen/SK are maintenance-mode
Consolidation
- Oct 2025: AutoGen + Semantic Kernel → maintenance mode; LangChain/LangGraph 1.0.
- Apr 3, 2026: Microsoft Agent Framework 1.0 (Python + .NET), native MCP + A2A.
- Mar 2026: OpenAI Agents SDK GA (Swarm archived). Google ADK 2.0 multi-language.
- MCP → Linux Foundation; A2A 150+ orgs. Shorthand: MCP = tools, A2A = agents.
Contenders
- LangGraph: explicit state graphs, checkpoints, interrupts, LangSmith.
- MAF: unified enterprise; .NET+Python cross-runtime; telemetry, sessions.
- CrewAI: roles/crews, fastest start, largest standalone community.
- Also: Pydantic AI (typed), Mastra (TS), Claude Agent SDK (safety-first).
Status board
- Build on: LangGraph · MAF · CrewAI · Agents SDK · ADK · Pydantic AI · Mastra.
- Migrate from: AutoGen (→MAF/AG2) · Semantic Kernel (→MAF).
- Never start: Swarm.
- Verify: repo pulse, protocol support, ecosystem — record evaluations with dates.
Code: The same tiny agent, three ways (shape comparison)
# --- 1 · Plain loop (no framework) -------------------------------
while not done and iters < 10:
msg = llm(messages, tools=TOOLS)
messages += run_tools(msg) # ~30 lines total
# --- 2 · LangGraph (explicit graph) -------------------------------
from langgraph.graph import StateGraph
g = StateGraph(AgentState)
g.add_node("think", think)
g.add_node("act", act)
g.add_conditional_edges("think", route) # loops visible
g.add_edge("act", "think")
graph = g.compile(checkpointer=memory) # durable + resumable
# --- 3 · Microsoft Agent Framework (conversational) ---------------
from agent_framework.azure import AzureOpenAIChatClient
agent = AzureOpenAIChatClient().create_agent(
instructions="…", tools=[…]) # orchestration built-in
# The loop is identical inside all three —
# frameworks differ in who owns the control flow and what comes
# built in (checkpoints, telemetry, handoffs), not in kind.