Single agents are demos.
Production is multi-agent.
The moment two agents need to coordinate, your orchestration choice stops being academic and becomes the difference between a system that scales and one that fights you at 2 AM.
This is Part 2 of a 3-part series on Google ADK.
Series links:
In Part 1, we build a single agent with tools locally. In Part 2 (this article), we orchestrate multi-agent workflows. In Part 3, we deploy to production and connect agents across frameworks via A2A.
The moment you need two agents to coordinate on a task, your choice of orchestration framework stops being academic and starts being the difference between a system that scales and one that fights you at every turn.
I've been building multi-agent systems with ADK, LangGraph, and CrewAI across consulting engagements for the past year. Here's what I've learned: each framework has a fundamentally different mental model for how agents should collaborate. ADK thinks in trees. LangGraph thinks in graphs. CrewAI thinks in teams. Understanding those models is not optional if you want to build systems that actually work in production.
This is Part 2 of the Google ADK Deep Dive series. Part 1 covered ADK fundamentals and single-agent patterns.[1] Here we go deep on multi-agent orchestration: workflow agents, MCP integration, the agent-as-tool pattern, human-in-the-loop flows, and session state management. Every section includes side-by-side code comparisons with LangGraph and CrewAI, because honest comparison is the only way to make informed architectural decisions.

Multi-Agent Orchestration with ADK: hierarchical agent trees, workflow patterns, and MCP tool integration for production systems
Before writing a single line of orchestration code, you need to understand the mental model your framework imposes. This is not a minor detail. The orchestration model shapes how you decompose problems, how you handle failures, and how you debug production issues at 2 AM when a pipeline is producing garbage output and you need to figure out which agent went sideways.
I've been through that 2 AM debugging session more times than I'd like to admit. The mental model matters because it determines where you look first.

ADK Hierarchical Tree vs LangGraph Directed Graph vs CrewAI Crew Metaphor: three approaches to multi-agent architecture
ADK organizes agents in a tree. A root agent sits at the top and delegates to sub-agents, which can themselves delegate to their own sub-agents. State flows through the tree via output_key values stored in shared session state.