A Survey of AI Agent Orchestration Frameworks
A comparative survey of LangGraph, CrewAI, AutoGen, and Haystack, examining their orchestration models and appropriate use cases.
The tooling for constructing LLM agents has diversified into several frameworks with distinct orchestration models. This article surveys four widely used frameworks—LangGraph, CrewAI, AutoGen, and Haystack—and characterises the design choices that distinguish them, with references to their primary documentation.
The tooling landscape
The agent ecosystem can be understood as layered: orchestration frameworks coordinate control flow; memory systems provide persistence; observability tools provide tracing and evaluation; and serving systems provide inference. This article concerns the orchestration layer.
graph TB
subgraph Orchestration
LG[LangGraph]
CA[CrewAI]
AG[AutoGen]
end
subgraph Memory
M0[Mem0]
LT[Letta]
ZP[Zep]
end
subgraph Observability
LF[Langfuse]
HL[Helicone]
end
subgraph Serving
VL[vLLM]
SG[SGLang]
end
Orchestration --> Memory
Orchestration --> Observability
Orchestration --> Serving
Orchestration models
LangGraph
Graph-based control flow with explicit state. Models a workflow as a directed graph of nodes over a shared state object; suited to workflows requiring fine-grained, explicit state management [1].
CrewAI
Role-based coordination. Organises work around agents with defined roles executing sequentially or hierarchically; suited to tasks that decompose naturally into roles [2].
AutoGen
Message-passing multi-agent conversation, from Microsoft Research. Now positioned within the Microsoft Agent Framework [3].
Haystack
Pipeline-oriented framework from deepset, with strengths in search, retrieval-augmented generation, and document processing [4].
Applicability
Appropriate where explicit state-machine control and complex branching are required, and where integration with the LangChain ecosystem is desired [1].
from langgraph.graph import StateGraph
graph = StateGraph(AgentState)
graph.add_node("research", research_agent)
graph.add_node("write", writing_agent)
graph.add_edge("research", "write")
Developments over the period
Two developments are notable. First, Microsoft consolidated AutoGen and Semantic Kernel into a single Microsoft Agent Framework, described as the successor to both and reaching Release Candidate status for .NET and Python [3]; this is examined in a companion article. Second, the frameworks continued to differentiate along the axis of explicit versus implicit control flow, with graph-based approaches (LangGraph) favouring explicit state and role-based approaches (CrewAI) favouring higher-level abstraction.
Claims occasionally circulate regarding specific adoption figures or funding amounts for individual frameworks; such figures are not reproduced here unless attributable to a primary source, and readers should treat unattributed market statistics with caution.
Summary
| Requirement | Framework to consider |
|---|---|
| Explicit stateful control flow | LangGraph [1] |
| Role-structured task decomposition | CrewAI [2] |
| Conversational multi-agent / M365 | Microsoft Agent Framework [3] |
| Search and retrieval-augmented tasks | Haystack [4] |
No single framework dominates; selection should follow from a workflow's control- flow requirements, the team's ecosystem, and its deployment constraints.
References
- LangGraph documentation (LangChain). https://langchain-ai.github.io/langgraph/
- CrewAI (repository and documentation). https://github.com/crewAIInc/crewAI
- Microsoft Agent Framework DevBlog (successor to AutoGen and Semantic Kernel). https://devblogs.microsoft.com/agent-framework/migrate-your-semantic-kernel-and-autogen-projects-to-microsoft-agent-framework-release-candidate/
- Haystack (deepset) documentation. https://haystack.deepset.ai/