Google ADK (Python)
TL;DR
Google's Agent Development Kit (ADK) is an Apache-2.0, code-first Python framework for building, evaluating and deploying agents; sibling SDKs cover TypeScript, Go, Java and Kotlin. Version 2.0 added a graph-based workflow runtime alongside LLM agent teams. It is optimized for Gemini but model-agnostic, and suits teams deploying on Google Cloud.
Key facts
| Type | Framework |
|---|---|
| Languages / SDKs | Python |
| License | Apache-2.0 |
| Pricing model | Open core |
| Orchestration pattern | Graph |
| GitHub stars | 21,683 (as of 2026-09-30) |
| GitHub forks | 4,083 |
| Last push | 2026-09-30 |
| Latest release | v2.10.0 |
| Repository | google/adk-python |
| Website | adk.dev |
| Documentation | adk.dev |
| Last verified | 2026-09-30 |
Key features
Workflowruntime (ADK 2.0): a graph of nodes and edges with routing, fan-out/fan-in, loops, retries and nested workflows. (source)- Coordinator agents that delegate to subagents running in chat, task or single-turn mode. (source)
- Template workflow agents for fixed sequential, parallel and loop execution over a set of agents. (source)
- Sessions, session state and a searchable cross-session memory service. (source)
McpToolsetfor consuming MCP servers, andto_mcp_server()to publish an agent as an MCP server. (source)- A2A:
to_a2a()exposes an agent with an auto-generated agent card andRemoteA2aAgentcalls remote agents (experimental). (source) - Tool confirmation that pauses a tool call for a yes/no or structured human response (experimental). (source)
- CLI and dev web UI (
adk run,adk web), built-in evaluation (adk eval) and deploy commands for Docker and Cloud Run. (source)
Architecture and orchestration pattern
Pattern: Graph
ADK 2.0 moved from a hierarchical agent executor to a graph-based execution engine. Agents, tools and plain functions are nodes in a Workflow, and edges define routing, parallel branches, loops and retries. An agent is itself a node, so graphs can mix deterministic code steps with LLM reasoning and can be nested.
For less structured work, a coordinator agent can delegate to subagents, each set to a collaboration mode: chat (full user interaction), task (asks for clarification, then returns to the parent) or single-turn (no user interaction, can run in parallel). Older template agents (sequential, parallel, loop) remain available.
Conversation context is split into a Session (the event history of one conversation), State (data scoped to that session) and a Memory service that can be searched across sessions, with in-memory, database and Vertex AI backed implementations. Resumable apps can pick up an interrupted workflow where it stopped.
Human in the loop
Three documented routes. Tool confirmation (experimental) wraps a tool with require_confirmation=True for a yes/no answer, or requests a structured response with a prompt; the answer can come from the ADK web UI dialog or be posted remotely through the ADK server's REST API. Known limitation: it does not work with DatabaseSessionService or VertexAiSessionService. In ADK 2.0 graph workflows, a node can yield RequestInput to pause until a person replies, and the reply becomes the next node's input. Subagents in task mode can also stop to ask the user for clarification before returning to their coordinator.
Harnesses it can drive
- Claude Code (evidence)
Protocols
| Protocol | Support | Note |
|---|---|---|
| MCP | Yes evidence | Client and server: McpToolset connects agents to MCP servers, and to_mcp_server() wraps an agent as a FastMCP server for clients such as Claude Code. |
| A2A | Partial evidence | Client (RemoteA2aAgent) and server (to_a2a()) exist, but the docs label A2A support in ADK Python as Experimental. |
| AG-UI | Partial evidence | ADK docs show an AG-UI app built with CopilotKit; the server adapter (ag-ui-adk) lives in the AG-UI repository rather than adk-python. The AG-UI README lists Google ADK as 1st party. |
Best for
- Teams deploying agents on Google Cloud (Cloud Run, GKE or Agent Runtime)
- Workflows that mix deterministic code steps, LLM agents and human input nodes in one graph
- Publishing an agent as an MCP server so Claude Code or other MCP clients can call it
- Gemini-based applications that need built-in evaluation and a local dev UI
Not for
- Projects that need stable A2A or tool-confirmation APIs today; both are marked experimental in the Python docs
- ADK 1.x deployments with custom session storage or overridden executor methods that cannot absorb 2.0 migration work
- Teams that want to avoid any Google Cloud dependency for managed hosting
Quickstart
pip install google-adk # my_agent/agent.py (project from `adk create my_agent`); run: adk run my_agent
from google.adk import Agent, Workflow
from google.adk.tools import FunctionTool
def refund(order_id: str) -> dict:
"""Issue a refund for an order."""
return {"status": "refunded", "order_id": order_id}
triage = Agent(name="triage", model="gemini-2.5-flash",
instruction="Summarize the customer's problem in one line.")
resolver = Agent(name="resolver", model="gemini-2.5-flash",
instruction="Resolve the issue; call refund only when needed.",
tools=[FunctionTool(refund, require_confirmation=True)])
root_agent = Workflow(
name="root_agent",
edges=[("START", triage, resolver)],
)
Common pitfalls
- Python 3.10 or later is required; the README recommends installing with its constraints file for your Python version.
- Gemini models need
GOOGLE_API_KEY(or Vertex AI settings) in the project's.env. - ADK 2.0 changed the event schema (
node_info,output) and made agents graph nodes; custom session stores and overrides of_run_async_impl()need migration, and old overrides are silently ignored. - Broad
except Exceptionblocks in tools disable 2.0 automatic retries, and catchingBaseExceptionbreaks HITL pauses. - Tool confirmation is experimental and unsupported with
DatabaseSessionServiceandVertexAiSessionService. - To stay on 1.x, install with the compatible-release pin
pip install "google-adk~=1.0".
Pros
- One framework covers deterministic graph workflows and LLM-driven agent teams. (source)
- MCP in both directions, including a one-line conversion of an agent into an MCP server. (source)
- Ships a CLI, a local web UI and an evaluation runner with the package. (source)
- Model-agnostic even though it is optimized for Gemini. (source)
- Resumable workflows can continue after crashes or dropped connections. (source)
Cons
- ADK 2.0 has breaking changes for 1.x users: new event fields, agents as graph nodes, and silently ignored legacy overrides. (source)
- Tool confirmation is experimental and does not work with database or Vertex AI session services. (source)
- A2A support in Python is labelled experimental. (source)
- Subagent task mode is disabled inside graph-based workflows in ADK Python 2.0. (source)
- The managed Agent Runtime on Google Cloud is a paid service beyond its no-cost tier. (source)
Alternatives
FAQ
Does Google ADK support MCP?
Yes. McpToolset lets agents use MCP server tools, and to_mcp_server() turns an agent into an MCP server that clients such as Claude Code can call.
Does ADK support A2A?
Partly. Python has to_a2a() for exposing agents and RemoteA2aAgent for calling remote ones, but the docs mark A2A support as experimental.
Is ADK free?
The framework is Apache-2.0. Deploying to Google Cloud's managed Agent Runtime is a paid service once usage exceeds its no-cost tier.
Does ADK only work with Gemini?
No. The README says ADK is optimized for Gemini but model-agnostic and deployment-agnostic.
What changed in ADK 2.0?
Python 2.0 (GA on 2026-05-19) added a graph-based Workflow runtime and collaborative agent modes, and made agents nodes in the graph, with some breaking changes for 1.x code.
Sources
- Google ADK Python GitHub repository
- Agent Development Kit documentation
- ADK Python README
- Python quickstart for ADK
- Welcome to ADK 2.0 (breaking changes)
- Graph-based agent workflows (ADK docs)
- Human input for agent workflows (ADK docs)
- Build collaborative agent teams (ADK docs)
- Template workflow agents (ADK docs)
- Session, State and Memory (ADK docs)
- Model Context Protocol tools (ADK docs)
- Configure ADK agents as MCP servers (ADK docs)
- ADK with Agent2Agent (A2A) Protocol
- A2A quickstart: exposing an agent (ADK docs)
- AG-UI user interface for ADK
- Tool action confirmation (ADK docs)
- Resume stopped agents (ADK docs)
- Deploy to Agent Runtime (ADK docs)
- Gemini Enterprise Agent Platform pricing (includes Agent Runtime)
- AG-UI README, supported integrations
- ag-ui-adk middleware (AG-UI repository)