Skip to content

Latest commit

 

History

History
403 lines (324 loc) · 23.9 KB

File metadata and controls

403 lines (324 loc) · 23.9 KB

ADK-Rust

CI crates.io docs.rs Wiki License Rust GitHub Discussions

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.

🎬 Rust & Beyond Podcast — Episode 3: Agents That Act

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.

▶ Watch Episode 3: ADK-Rust v2.0.0 — Agents That Act

▶️ Watch on YouTube40 min 50 sec · Hosts: James (Fenrir) & Ada (Kore) · Video with slides

"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 Timerun_node_with for work whose size comes from state, and with_goto for 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

🎧 Episode 2: v1.0.0 — The Stable Foundation

A deep-dive into what shipped, who built it, and where it was going. 39 crates. 130K downloads. Semver stable.

▶ Watch Episode 2: ADK-Rust v1.0.0 Launch

▶️ Watch on YouTube10 min 12 sec · Hosts: James (Fenrir) & Ada (Kore)

"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

🎧 Episode 1: What is ADK-Rust?

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-only

The 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.


Start

cargo install cargo-adk
cargo adk new my-agent
cd my-agent && cp .env.example .env   # add GOOGLE_API_KEY
cargo run

Or 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.

One agent, end to end

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.

Models

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.

What you can build

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

Scaffold a project

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 run

Agent 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.

Crates

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).

Performance

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.

Develop

devenv shell            # reproducible toolchain, or ./scripts/setup-dev.sh
make build              # cargo build --workspace
make test               # cargo nextest run --workspace
make clippy             # -D warnings

AGENTS.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.

Documentation

Companion projects

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

Project

Related: Google's ADK · MCP · Gemini API

Star History

Star History Chart

License

Apache 2.0. See LICENSE.