A production-ready Rust framework for building AI agents. Model-agnostic, type-safe and async, across 42 crates for agent orchestration.
v2.0.0 Released! A major release with breaking changes. Coming from 1.x, read the migration guide — six APIs changed shape, and the fan-in default changed behaviour without an API change. The CHANGELOG has the full entry.
ADK-Rust v2.0.0 — Agents That Act. Eight chapters on agents that run on their own and finish what they start: a workflow that resumes exactly where it stopped, a graph that changes course when the problem does, and approvals you can trust down to the digest. 42 crates, 4,300+ tests, sub-millisecond loop overhead.
"Show me." — Ada, thirty seconds in, declining to be told about the visual builder
Episode highlights
- The Numbers — 42 crates, 4,300+ tests, 104 runnable examples, 568 μs agent-loop overhead against LangGraph's 1,228 ms
- Agents That Survive — SQLite checkpointers, delta checkpoints, and a pause that resumes in a fresh process that shares only the database file
- Subgraphs — a graph as a node, nested three deep, with channel mismatches caught when the parent compiles rather than as an absent value at run time
- Deciding At Run Time —
run_node_withfor work whose size comes from state, andwith_gotofor a node that picks its own successor with no edge declared - Built To Run Unattended — retries with capped backoff, concurrency bounds, node timeouts, and checkpoint retention that keeps a week-long thread steady
- Governed Computer Use — approval interrupts bound to a digest, so what you approved is what runs
- What It Costs — no automatic crash recovery, an unbounded child ledger, and why we kept two orchestration APIs when the other ADKs deprecated one
Previous episodes
A deep-dive into what shipped, who built it, and where it was going. 39 crates. 130K downloads. Semver stable.
"We believe the next generation of software will be built by composing autonomous agents, not by writing every line of logic by hand. And we believe Rust is the right language for the runtime those agents live in." — James
2 min 21 sec · Generated entirely by ADK-Rust using Gemini 3.1 Flash TTS
How are these made?
Episodes are generated using ADK-Rust's own audio capabilities — Chirp3-HD
multi-speaker TTS synthesis via adk-audio. The script, slide deck (Marp), and
synthesized audio segments are concatenated with ffmpeg into a video presentation.
Zero manual voice recording.
# Episode 3 assets
docs/podcast/episode-3-script.md # Full script, eight chapters
docs/podcast/episode-3-slides.md # Marp slide deck
docs/podcast/adk-rust-episode-3.mp4 # Final video
docs/podcast/episode-3-narration.mp3 # Audio-onlyThe episode 3 video and slides are not in the repository: the video alone is about 900 MB, over GitHub's 100 MB per-file limit. The script and the deck source are.
cargo install cargo-adk
cargo adk new my-agent
cd my-agent && cp .env.example .env # add GOOGLE_API_KEY
cargo runOr add it to an existing project:
[dependencies]
adk-rust = "2.0.0" # Gemini, agents, runner, sessions
# adk-rust = { version = "2.0.0", features = ["standard"] } # + server, auth, graph, eval| Tier | Includes | Use case |
|---|---|---|
minimal (default) |
Gemini provider, agents, runner, sessions | Fast starter agents |
standard |
minimal + OpenAI, Anthropic, tools, memory, telemetry, server, auth, graph, eval, guardrail, plugins, artifacts, skills | Production deployment |
enterprise |
standard + realtime, browser, RAG, payments, AWP | Full-featured production |
full |
enterprise + audio, code execution, sandbox | Everything |
A tier is a starting point for ADK-Rust feature sets. Add any single capability on top of one
without moving to the next tier, so features = ["minimal", "audio"] gives you the
minimal build plus audio. AGENTS.md lists every feature you can add
this way.
use adk_rust::prelude::*;
use adk_rust::Launcher;
#[tokio::main]
async fn main() -> AnyhowResult<()> {
dotenvy::dotenv().ok();
let model = GeminiModel::new(&std::env::var("GOOGLE_API_KEY")?, "gemini-3.1-flash-lite-preview")?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant. Be concise and accurate.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}Swap the provider by swapping the client. The agent, runner and tools are unchanged:
| Provider | Client | Feature | Key |
|---|---|---|---|
| Gemini | GeminiModel::new(key, model) |
default | GOOGLE_API_KEY |
| OpenAI | OpenAIClient::new(OpenAIConfig::new(key, model)) |
openai |
OPENAI_API_KEY |
| OpenAI Responses | OpenAIResponsesClient::new(OpenAIResponsesConfig::new(key, model)) |
openai |
OPENAI_API_KEY |
| Anthropic | AnthropicClient::new(AnthropicConfig::new(key, model)) |
anthropic |
ANTHROPIC_API_KEY |
| DeepSeek | DeepSeekClient::chat(key) |
deepseek |
DEEPSEEK_API_KEY |
| Groq | GroqClient::new(GroqConfig::llama70b(key)) |
groq |
GROQ_API_KEY |
| Ollama | OllamaModel::new(OllamaConfig::new(model)) |
ollama |
none |
| Bedrock | BedrockClient::new(BedrockConfig::new(region, model_id)).await? |
bedrock |
AWS credential chain |
| mistral.rs | MistralRsModel::new(config) |
adk-mistralrs |
none, local |
Or let it choose: adk_rust::run(instructions, input) picks a provider from the
environment across the features you compiled.
| Provider | Model Examples | Feature Flag |
|---|---|---|
| Gemini | gemini-2.5-flash, gemini-2.5-pro, gemini-3-flash-preview, gemini-3.1-flash-lite-preview, gemini-3.1-pro-preview |
(default) |
| OpenAI | gpt-5, gpt-5-mini, gpt-5-nano |
openai |
| OpenAI Responses API | gpt-4.1, o3, o4-mini |
openai |
| Anthropic | claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5 |
anthropic |
| DeepSeek | deepseek-chat, deepseek-reasoner |
deepseek |
| Groq | meta-llama/llama-4-scout-17b-16e-instruct, llama-3.3-70b-versatile |
groq |
| Ollama | qwen3.6:35b-a3b, qwen3.5, llama3.2:3b |
ollama |
| Fireworks AI | accounts/fireworks/models/llama-v3p1-8b-instruct |
openai (preset) |
| Together AI | meta-llama/Llama-3.3-70B-Instruct-Turbo |
openai (preset) |
| Mistral AI | mistral-small-latest |
openai (preset) |
| Perplexity | sonar |
openai (preset) |
| Cerebras | llama-3.3-70b |
openai (preset) |
| SambaNova | Meta-Llama-3.3-70B-Instruct |
openai (preset) |
| xAI (Grok) | grok-3-mini |
openai (preset) |
| Amazon Bedrock | anthropic.claude-sonnet-4-20250514-v1:0 |
bedrock |
| Azure AI Inference | (endpoint-specific) | azure-ai |
| mistral.rs | Gemma 4, Phi-3, Llama, Qwen 3.5, Voxtral, FLUX | adk-mistralrs |
Use current-generation models. gemini-2.0-flash and gemini-2.0-flash-lite shut
down on 31 March 2026.
Each row links to its guide and a runnable example.
| Capability | Guide | Example |
|---|---|---|
Tools with zero boilerplate — #[tool] derives the schema from your arg type |
tools | examples/coding_agent |
MCP clients and servers on rmcp 3.1 — tools, resources, prompts, elicitation, tasks |
mcp | examples/mcp_protocol_revisions |
| Workflow agents — sequential, parallel, loop | agents | examples/multi_perspective_analysis |
| Graph workflows — checkpoints, durable resume, human-in-the-loop, subgraphs | graph-agents | examples/graph_subgraph_claims |
| Coding agents — read, edit and run code in a confined workspace | coding-agent | examples/coding_goal |
| Realtime voice and video — OpenAI Realtime, Gemini Live, Vertex, LiveKit, WebRTC | realtime | examples/realtime_voice |
| Governed computer use — approval interrupts bound to a digest | computer-use | — |
| RAG — chunking, embeddings, vector search, 6 backends | rag | — |
| Memory — semantic search, project isolation, a bi-temporal knowledge graph | memory | examples/skill_memory_improvements |
| Servers — REST with SSE, A2A v1.0.0, background runs, cron | deployment | examples/awp_agent |
| Agentic Web Protocol — discovery, manifests, trust levels, consent | awp | examples/awp_agent |
| Agentic commerce — ACP and AP2 with durable journals | payments | examples/payments |
| Editor interop — use an ACP coding agent as a tool, or expose yours | acp | — |
| Browser automation — 46 WebDriver tools | browser-tools | — |
| Evaluation — trajectory, rubric, LLM-judge, A/B, CI output | evaluation | examples/eval_showcase |
| Guardrails, RBAC, SSO, audit logging | security | — |
| Observability — OpenTelemetry tracing, structured logging | observability | — |
cargo install cargo-adk
cargo adk new my-agent # basic Gemini agent (alias for --template llm)
cargo adk new my-agent --template tools # agent with #[tool] custom tools
cargo adk new my-agent --template rag # RAG with vector search
cargo adk new my-agent --template api # REST server
cargo adk new my-agent --template graph # graph workflow with checkpoints
cargo adk new my-agent --template realtime # realtime voice agent
# Compose addons with any template
cargo adk new my-agent --template tools --addon telemetry --addon sessions
cargo adk new my-agent --addon mcp --addon guardrails
cd my-agent
cp .env.example .env # add your API key
cargo runAgent types — the core agent structure.
| Template | What you get |
|---|---|
llm (alias basic) |
Single LLM agent with tool calling |
tools |
LLM agent with #[tool] custom tools |
sequential |
Multi-agent pipeline executing in order |
parallel |
Parallel execution with result aggregation |
loop |
Iterates until a condition is met |
conditional |
Routes based on LLM decisions |
graph |
Graph workflow with checkpoints and durable execution |
realtime |
Bidirectional audio and video streaming |
rag |
Vector search over a knowledge base |
api |
REST server exposing the agent over HTTP |
openai |
OpenAI-powered agent |
custom |
Manual Agent trait implementation |
Enterprise patterns — pre-composed, several capabilities already wired together.
| Template | What you get |
|---|---|
production |
LLM agent with server, auth, sessions and telemetry |
multi-agent |
Supervisor over sub-agents, with telemetry |
pipeline |
Sequential data processing with session state |
chatbot |
Conversational agent with memory and an HTTP interface |
a2a-server (alias a2a) |
A2A protocol server with session management |
managed-agents |
Anthropic Managed Agents session with SSE streaming |
Addons — composable with any template, and with each other.
| Addon | Adds |
|---|---|
telemetry |
OpenTelemetry tracing |
auth |
API key and JWT authentication |
sessions |
Session state management |
memory |
Semantic memory and RAG |
mcp |
MCP tool integration |
guardrails |
Input and output validation |
eval |
Evaluation framework |
browser |
Browser automation |
server |
HTTP server with A2A |
cargo adk build compiles the project without deploying, and cargo adk validate
checks an agent definition without building. cargo adk templates and
cargo adk addons print these lists.
| Crate | Purpose | Key Features |
|---|---|---|
adk-core |
Foundational traits and types | Agent trait, Content, Part, error types, streaming primitives |
adk-agent |
Agent implementations | LlmAgent, SequentialAgent, ParallelAgent, LoopAgent, builder patterns |
adk-skill |
AgentSkills parsing and selection | Skill markdown parser, .skills discovery/indexing, lexical matching, prompt injection helpers |
adk-model |
LLM integrations | Gemini, OpenAI, Anthropic, DeepSeek, Groq, Ollama, Bedrock, Azure AI + OpenAI-compatible presets (Fireworks, Together, Mistral, Perplexity, Cerebras, SambaNova, xAI) |
adk-gemini |
Gemini client | Google Gemini API client with streaming and multimodal support |
adk-anthropic |
Anthropic client | Dedicated Anthropic API client with streaming, thinking, caching, citations, vision, PDF, pricing |
adk-mistralrs |
Native local inference | mistral.rs v0.8 — Gemma 4, Qwen 3.5, Voxtral, ISQ/MXFP4 quantization, LoRA adapters |
adk-tool |
Tool system and extensibility | Typed Rust tools, provider-native tools, composable toolsets, MCP clients and server SDK, dynamic local-server management |
adk-devtools |
Coding-agent dev tools | read_file/write_file/edit_file/glob/grep/bash as a DevToolset, scoped to a sandboxed Workspace |
adk-session |
Session and state management | SQLite/in-memory backends, conversation history, state persistence |
adk-artifact |
Artifact storage system | File-based storage, MIME type handling, image/PDF/video support |
adk-memory |
Long-term memory | Vector embeddings, semantic search, project-scoped isolation, bi-temporal knowledge graph (GraphMemoryService), 6 backends |
adk-payments |
Agentic commerce orchestration | ACP/AP2 adapters, canonical transaction kernel, durable journals, evidence-backed payment flows |
awp-types |
AWP protocol types | Trust levels, requester types, discovery documents, capability manifests, payment intents, typed A2A messages — zero adk-* deps |
adk-awp |
Agentic Web Protocol implementation | Business context loading, discovery/manifest generation, rate limiting, consent, events, health state machine, AWP routes |
adk-acp |
Agent Client Protocol integration | Official stable v1 client and server, one-shot and persistent sessions, streaming, cancellation, async permissions, client files and terminals, per-session MCP, and editor-facing ADK agents |
adk-rag |
RAG pipeline | Document chunking, embeddings, vector search, reranking, 6 backends |
adk-runner |
Agent execution runtime | Context management, event streaming, session lifecycle, callbacks |
adk-server |
Production API servers | REST API, A2A v1.0.0 protocol (11 JSON-RPC operations; tasks/resubscribe returns a snapshot, not a live re-attach), middleware, health checks |
adk-cli |
Command-line interface | Interactive REPL, session management, MCP server integration |
adk-realtime |
Real-time voice & multimodal agents | OpenAI Realtime + Gemini Live, bidirectional audio, video frames, VAD, affective dialogue, server-side tools via IntegratedRealtimeRunner |
adk-graph |
Graph-based workflows | LangGraph-style orchestration, state management, checkpointing, human-in-the-loop |
adk-browser |
Browser automation | 46 WebDriver tools, navigation, forms, screenshots, PDF generation |
adk-computer-use |
Governed desktop automation | Deterministic graph over computer-use-mcp: parallel observation, digest-bound approval interrupts, single-executor mutation, verification; wire contracts + tamper-evident evaluation receipts |
adk-eval |
Agent evaluation | Test definitions, trajectory validation, LLM-judged scoring, rubrics |
adk-guardrail |
Input/output validation | PII redaction, content filtering, JSON schema validation |
adk-auth |
Access control | Role-based permissions, declarative scope-based security, SSO/OAuth, audit logging |
adk-sandbox |
Sandboxed code execution | Process/WASM backends, OS-level sandbox profiles (Seatbelt on macOS, bubblewrap on Linux; Windows AppContainer not implemented) |
adk-telemetry |
Observability | Structured logging, OpenTelemetry tracing, span helpers |
adk-managed |
Managed agent runtime (Experimental) | Provider-neutral agent execution, in-process checkpointing and event replay (state does not survive process loss) |
adk-enterprise |
Enterprise client SDK (Experimental) | HTTP/SSE client for managed agent service, zero runtime deps |
adk-plugin |
Lifecycle hooks | EnhancedPlugin trait, tool and model interception, priority pipeline, shared PluginContext |
adk-retry-reflect |
Retry and reflect plugin | Intercepts tool failures, injects reflection prompts, exponential backoff, circuit breaker |
adk-action |
Action node types | 14 deterministic node types, StandardProperties, variable interpolation — the shared types behind adk-graph's ActionNodeExecutor |
adk-code |
Code execution substrate | Process, Docker and embedded runtimes; the kernel adk-codeact-monty and the code tools build on |
adk-codeact-monty |
Python runtime for CodeAct (Experimental) | Pydantic Monty interpreter, sandboxed OS access, suspend and resume snapshots |
adk-audio |
Audio processing | STT and TTS providers, Deepgram streaming, desktop capture and playback, VAD, ONNX models (Whisper, Moonshine, Kokoro) |
adk-bench |
Benchmarking | Framework runtime performance against real LLM APIs, and cross-framework comparison with Python ADK |
adk-deploy |
Deployment utilities | Targets and manifests for shipping an agent |
adk-rust-macros |
Procedural macros | #[tool] with read_only/concurrency_safe/long_running metadata, #[entrypoint] and #[task] for the functional API |
cargo-adk |
Cargo subcommand | cargo adk new, templates, addons, bench, deploy |
adk-rust |
Umbrella crate | Re-exports every crate above behind tiered feature presets — the one dependency most projects need |
Extracted to standalone repos: adk-ui (dynamic UI generation), adk-studio (visual agent builder), adk-playground (120+ examples).
Measured with cargo adk bench against gemini-2.5-flash, same workload and prompt
for every framework.
| Framework | Cold Start | Agent Loop Overhead (mean) | Agent Loop Overhead (P95) | Peak RSS |
|---|---|---|---|---|
| ADK-Rust | 109 ms | 568 μs | 615 μs | ~15 MB |
| Gemini Python SDK | 501 ms | 253 μs | 334 μs | 69.7 MB |
| LangGraph | 502 ms | 1,228 ms | 1,228 ms | 92.7 MB |
Cold start is process launch to first API call. Overhead is turn time minus the LLM
round trip. Apple M-series, macOS, June 2026. Run it yourself with
cargo adk bench --dry-run to see the cost estimate first.
devenv shell # reproducible toolchain, or ./scripts/setup-dev.sh
make build # cargo build --workspace
make test # cargo nextest run --workspace
make clippy # -D warningsAGENTS.md documents the conventions CI enforces, including the per-platform tool matrix and the CI cost tiers. CONTRIBUTING.md covers the workflow and the required checks.
- Official docs — guides for every capability above
- Wiki — tutorials and quickstarts
- docs.rs — API reference
- Examples — 104 standalone crates, plus 120+ in the playground
| Project | What it is |
|---|---|
| adk-studio | Visual agent builder — canvas, code generation, live testing |
| adk-ui | Dynamic UI generation — 28 components, React client, streaming |
| adk-playground | 120+ working examples, and a hosted playground |
- ROADMAP.md — v2.0.0 (current). The authoritative roadmap, and why both orchestration APIs are supported
- CHANGELOG.md — every release
- CONTRIBUTORS.md — the people who built this
- STABILITY.md — crate stability tiers and the deprecation policy
- Discussions — ideas and questions
Related: Google's ADK · MCP · Gemini API
Apache 2.0. See LICENSE.