๐ v0.5.0 Released! Structured error envelope (
AdkError redesign), OpenAI Responses API client, OpenRouter deep integration, config validation, typed Runner::run() parameters, labs feature preset, provider_from_env() auto-detection, adk::run() one-liner, encrypted sessions with key rotation, graph durable resume, MCP resource API, Deepgram streaming STT, ToolSearchConfig for Anthropic. Breaking: AdkError is now a multi-axis struct, Runner::run() takes UserId/SessionId types. See CHANGELOG for full details and migration guide.
Contributors: Many thanks to @mikefaille โ AdkIdentity design, realtime audio, LiveKit bridge, skill system. @rohan-panickar โ OpenAI-compatible providers, xAI, multimodal content. @dhruv-pant โ Gemini service account auth. @danielsan โ Google deps issue & PR (#181, #203), RAG crash report (#205). @CodingFlow โ Gemini 3 thinking level, global endpoint, citationSources (#177, #178, #179). @ctylx โ skill discovery fix (#204). @poborin โ project config proposal (#176). Get started โ
Announcements: ADK-Rust Roadmap launched for 2026, we welcome suggestions, comments and ideas. ADK Playground launched! You can now run 70+ ADK-Rust AI Agents online for free. Compile and click. No login, no install. https://playground.adk-rust.com (https://playground.adk-rust.com) And many more discussions, feel free to discuss: A production-ready Rust framework for building AI agents enabling you to create powerful and high-performance AI agent systems with a flexible, modular architecture. Model-agnostic. Type-safe. Async.
cargo install cargo-adk
cargo adk new my-agent
cd my-agent && cargo runOr pick a template: --template tools | rag | api | openai. See Quick Start for details.
ADK-Rust provides a comprehensive framework for building AI agents in Rust, featuring:
- Type-safe agent abstractions with async execution and event streaming
- Multiple agent types: LLM agents, workflow agents (sequential, parallel, loop), and custom agents
- Realtime voice agents: Bidirectional audio streaming with OpenAI Realtime API and Gemini Live API
- Tool ecosystem: Function tools, Google Search, MCP (Model Context Protocol) integration
- RAG pipeline: Document chunking, vector embeddings, semantic search with 6 vector store backends
- Security: Role-based access control, declarative scope-based tool security, SSO/OAuth, audit logging
- Agentic commerce: ACP and AP2 payment orchestration with durable transaction journals and evidence-backed recall
- Production features: Session management, artifact storage, memory systems, REST/A2A APIs
- Developer experience: Interactive CLI, 120+ working examples, comprehensive documentation
Status: Production-ready, actively maintained
ADK-Rust follows a clean layered architecture from application interface down to foundational services.
LLM Agents: Powered by large language models with tool use, function calling, and streaming responses.
Workflow Agents: Deterministic orchestration patterns.
SequentialAgent: Execute agents in sequenceParallelAgent: Execute agents concurrentlyLoopAgent: Iterative execution with exit conditions
Custom Agents: Implement the Agent trait for specialized behavior.
Realtime Voice Agents: Build voice-enabled AI assistants with bidirectional audio streaming.
Graph Agents: LangGraph-style workflow orchestration with state management and checkpointing.
ADK supports multiple LLM providers with a unified API:
| Provider | Model Examples | Feature Flag |
|---|---|---|
| Gemini | gemini-2.5-flash, gemini-2.5-pro, gemini-3-pro-preview, gemini-3-flash-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-6, 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 | llama3.2:3b, qwen2.5:7b, mistral:7b |
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 | Phi-3, Mistral, Llama, Gemma, LLaVa, FLUX | git dependency |
All providers support streaming, function calling, and multimodal inputs (where available).
Define tools with zero boilerplate using the #[tool] macro:
use adk_tool::{tool, AdkError};
use schemars::JsonSchema;
use serde::Deserialize;
use serde_json::{json, Value};
#[derive(Deserialize, JsonSchema)]
struct WeatherArgs {
/// The city to look up
city: String,
}
/// Get the current weather for a city.
#[tool]
async fn get_weather(args: WeatherArgs) -> std::result::Result<Value, AdkError> {
Ok(json!({ "temp": 72, "city": args.city }))
}
// Use it: agent_builder.tool(Arc::new(GetWeather))The macro reads the doc comment as the description, derives the JSON schema from the args type, and generates a Tool impl. No manual schema writing, no boilerplate.
Built-in tools:
#[tool]macro (zero-boilerplate custom tools)- Function tools (custom Rust functions)
- Google Search
- Artifact loading
- Loop termination
MCP Integration: Connect to Model Context Protocol servers for extended capabilities. Supports MCP Elicitation โ servers can request additional user input at runtime via structured forms or URLs.
- Session Management: In-memory and SQLite-backed sessions with state persistence, encrypted sessions with AES-256-GCM and key rotation
- Memory System: Long-term memory with semantic search and vector embeddings
- Servers: REST API with SSE streaming, A2A protocol for agent-to-agent communication
- Guardrails: PII redaction, content filtering, JSON schema validation
- Payments: ACP and AP2 commerce support through
adk-payments - Observability: OpenTelemetry tracing, structured logging
| 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 integration, ISQ quantization, LoRA adapters (git-only) |
adk-tool |
Tool system and extensibility | FunctionTool, Google Search, MCP protocol with elicitation, schema validation |
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, Qdrant integration |
adk-payments |
Agentic commerce orchestration | ACP/AP2 adapters, canonical transaction kernel, durable journals, evidence-backed payment flows |
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 protocol, middleware, health checks |
adk-cli |
Command-line interface | Interactive REPL, session management, MCP server integration |
adk-realtime |
Real-time voice agents | OpenAI Realtime API, Gemini Live API, bidirectional audio, VAD |
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-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-telemetry |
Observability | Structured logging, OpenTelemetry tracing, span helpers |
Extracted to standalone repos: adk-ui (dynamic UI generation), adk-studio (visual agent builder), adk-playground (120+ examples).
cargo install cargo-adk
cargo adk new my-agent # basic Gemini agent
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 openai # OpenAI-powered agent
cd my-agent
cp .env.example .env # add your API key
cargo runRequires Rust 1.85 or later (Rust 2024 edition). Add to your Cargo.toml:
[dependencies]
adk-rust = "0.5.0" # Standard: agents, models, tools, sessions, runner, server, CLI
# Need graph, browser, eval, realtime, audio, RAG?
# adk-rust = { version = "0.5.0", features = ["full"] }Set your API key:
# For Gemini (default)
export GOOGLE_API_KEY="your-api-key"
# For OpenAI
export OPENAI_API_KEY="your-api-key"
# For Anthropic
export ANTHROPIC_API_KEY="your-api-key"
# For DeepSeek
export DEEPSEEK_API_KEY="your-api-key"
# For Groq
export GROQ_API_KEY="your-api-key"
# For Fireworks AI
export FIREWORKS_API_KEY="your-api-key"
# For Together AI
export TOGETHER_API_KEY="your-api-key"
# For Mistral AI
export MISTRAL_API_KEY="your-api-key"
# For Perplexity
export PERPLEXITY_API_KEY="your-api-key"
# For Cerebras
export CEREBRAS_API_KEY="your-api-key"
# For SambaNova
export SAMBANOVA_API_KEY="your-api-key"
# For Azure AI Inference
export AZURE_AI_API_KEY="your-api-key"
# For Amazon Bedrock (uses AWS IAM credentials)
# Configure via: aws configure
# For Ollama (no key, just run: ollama serve)The simplest way to run an agent โ one function call, auto-detects your provider from environment variables:
use adk_rust::run;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
// Set ANTHROPIC_API_KEY, OPENAI_API_KEY, or GOOGLE_API_KEY
let response = run("You are a helpful assistant.", "What is 2 + 2?").await?;
println!("{response}");
Ok(())
}provider_from_env() checks env vars in order: ANTHROPIC_API_KEY โ OPENAI_API_KEY โ GOOGLE_API_KEY. First match wins.
use adk_rust::prelude::*;
use adk_rust::Launcher;
#[tokio::main]
async fn main() -> AnyhowResult<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("GOOGLE_API_KEY")?;
let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;
let agent = LlmAgentBuilder::new("assistant")
.description("Helpful AI assistant")
.instruction("You are a helpful assistant. Be concise and accurate.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}use adk_rust::prelude::*;
use adk_rust::Launcher;
#[tokio::main]
async fn main() -> AnyhowResult<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("OPENAI_API_KEY")?;
let model = OpenAIClient::new(OpenAIConfig::new(api_key, "gpt-5-mini"))?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}Uses the /v1/responses endpoint โ recommended for reasoning models (o3, o4-mini) and built-in tools:
use adk_rust::prelude::*;
use adk_rust::Launcher;
use adk_model::openai::{OpenAIResponsesClient, OpenAIResponsesConfig};
#[tokio::main]
async fn main() -> AnyhowResult<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("OPENAI_API_KEY")?;
let config = OpenAIResponsesConfig::new(api_key, "gpt-4.1-mini");
let model = OpenAIResponsesClient::new(config)?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}use adk_rust::prelude::*;
use adk_rust::Launcher;
#[tokio::main]
async fn main() -> AnyhowResult<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("ANTHROPIC_API_KEY")?;
let model = AnthropicClient::new(AnthropicConfig::new(api_key, "claude-sonnet-4-6"))?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}use adk_rust::prelude::*;
use adk_rust::Launcher;
#[tokio::main]
async fn main() -> AnyhowResult<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("DEEPSEEK_API_KEY")?;
// Standard chat model
let model = DeepSeekClient::chat(api_key)?;
// Or use reasoner for chain-of-thought reasoning
// let model = DeepSeekClient::reasoner(api_key)?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}use adk_rust::prelude::*;
use adk_rust::Launcher;
#[tokio::main]
async fn main() -> AnyhowResult<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("GROQ_API_KEY")?;
let model = GroqClient::new(GroqConfig::llama70b(api_key))?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}use adk_rust::prelude::*;
use adk_rust::Launcher;
#[tokio::main]
async fn main() -> AnyhowResult<()> {
dotenvy::dotenv().ok();
// Requires: ollama serve && ollama pull llama3.2
let model = OllamaModel::new(OllamaConfig::new("llama3.2"))?;
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}Examples live in the dedicated adk-playground repo (120+ examples covering every feature and provider).
git clone https://github.com/zavora-ai/adk-playground.git
cd adk-playground
cargo run --example quickstart| Project | Description |
|---|---|
| adk-studio | Visual agent builder โ drag-and-drop canvas, code generation, live testing |
| adk-ui | Dynamic UI generation โ 28 components, React client, streaming updates |
| adk-playground | 120+ working examples for every feature and provider |
Build voice-enabled AI assistants using the adk-realtime crate:
use adk_realtime::{RealtimeAgent, openai::OpenAIRealtimeModel, RealtimeModel};
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let model: Arc<dyn RealtimeModel> = Arc::new(
OpenAIRealtimeModel::new(&api_key, "gpt-4o-realtime-preview-2024-12-17")
);
let agent = RealtimeAgent::builder("voice_assistant")
.model(model)
.instruction("You are a helpful voice assistant.")
.voice("alloy")
.server_vad() // Enable voice activity detection
.build()?;
Ok(())
}Supported Realtime Models:
| Provider | Model | Transport | Feature Flag |
|---|---|---|---|
| OpenAI | gpt-4o-realtime-preview-2024-12-17 |
WebSocket | openai |
| OpenAI | gpt-realtime |
WebSocket | openai |
| OpenAI | gpt-4o-realtime-* |
WebRTC | openai-webrtc |
gemini-live-2.5-flash-native-audio |
WebSocket | gemini |
|
| Gemini via Vertex AI | WebSocket + OAuth2 | vertex-live |
|
| LiveKit | Any (bridge to Gemini/OpenAI) | WebRTC | livekit |
Features:
- OpenAI Realtime API and Gemini Live API support
- Vertex AI Live with Application Default Credentials (ADC)
- LiveKit WebRTC bridge for production-grade audio routing
- OpenAI WebRTC transport with Opus codec and data channels
- Bidirectional audio streaming (PCM16, G711, Opus)
- Server-side Voice Activity Detection (VAD)
- Mid-session context mutation โ swap instructions and tools without dropping the call
- Real-time tool calling during voice conversations
- Multi-agent handoffs for complex workflows
- Zero-allocation LiveKit audio output path
Run realtime examples (from adk-playground):
# OpenAI Realtime (WebSocket)
cargo run --example realtime_basic --features realtime-openai
cargo run --example realtime_tools --features realtime-openai
cargo run --example realtime_handoff --features realtime-openai
# Vertex AI Live (requires gcloud auth application-default login)
cargo run -p adk-realtime --example vertex_live_voice --features vertex-live
cargo run -p adk-realtime --example vertex_live_tools --features vertex-live
# LiveKit Bridge (requires LiveKit server)
cargo run -p adk-realtime --example livekit_bridge --features livekit,openai
# OpenAI WebRTC (requires cmake)
cargo run -p adk-realtime --example openai_webrtc --features openai-webrtc
# Mid-session context mutation
cargo run -p adk-realtime --example openai_session_update --features openai
cargo run -p adk-realtime --example gemini_context_mutation --features geminiBuild complex, stateful workflows using the adk-graph crate (LangGraph-style):
use adk_graph::{prelude::*, node::AgentNode};
use adk_agent::LlmAgentBuilder;
use adk_model::GeminiModel;
// Create LLM agents for different tasks
let translator = Arc::new(LlmAgentBuilder::new("translator")
.model(Arc::new(GeminiModel::new(&api_key, "gemini-2.5-flash")?))
.instruction("Translate the input text to French.")
.build()?);
let summarizer = Arc::new(LlmAgentBuilder::new("summarizer")
.model(model.clone())
.instruction("Summarize the input text in one sentence.")
.build()?);
// Create AgentNodes with custom input/output mappers
let translator_node = AgentNode::new(translator)
.with_input_mapper(|state| {
let text = state.get("input").and_then(|v| v.as_str()).unwrap_or("");
adk_core::Content::new("user").with_text(text)
})
.with_output_mapper(|events| {
let mut updates = HashMap::new();
for event in events {
if let Some(content) = event.content() {
let text: String = content.parts.iter()
.filter_map(|p| p.text())
.collect::<Vec<_>>()
.join("");
updates.insert("translation".to_string(), json!(text));
}
}
updates
});
// Build graph with parallel execution
let agent = GraphAgent::builder("text_processor")
.description("Translates and summarizes text in parallel")
.channels(&["input", "translation"Release HistoryVersion Changes Urgency Date v2.2.0 API-compatible minor release. All 43 crates are on [crates.io](https://crates.io/crates/adk-rust/2.2.0). ```toml adk-rust = "2.2.0" ``` ## Added **Wave 4 platform services** complete the Gemini Enterprise Agent Platform consumption path. Every one is opt-in, composable with any preset, and appended to `gemini-agent-platform`. | Feature | Crate | What it gives you | |---------|-------|-------------------| | `vertex-eval` | adk-eval | Gen AI Evaluation Service bridge โ `evaluateInstances` and Medium 9/1/2026 v2.1.0 ADK-Rust 2.1.0 is an API-compatible minor release adding portable team orchestration, the owned runtime UI, Gemini Enterprise Agent Platform integrations, hardened ambient scheduling and tool guardrails, expanded Anthropic capabilities, refreshed provider model catalogs, and security dependency updates. All 43 workspace crates are published on crates.io. See the [2.1.0 changelog](https://github.com/zavora-ai/adk-rust/blob/v2.1.0/CHANGELOG.md#210---2026-08-25) for the detailed compatibility and High 8/25/2026 v2.0.0 # ADK-Rust v2.0.0 โ Agents That Act A major release for agents that run on their own and finish what they start. **42 crates. 4,300+ tests. 104 runnable examples. 568 ฮผs agent-loop overhead.** <a href="https://www.youtube.com/watch?v=RIh-M0W1CiQ"><img src="https://raw.githubusercontent.com/zavora-ai/adk-rust/main/docs/podcast/episode-3-thumbnail.png" alt="Watch Episode 3: Agents That Act" width="100%"></a> **๐ฌ [Rust & Beyond, Episode 3 โ Agents That Act](https://www.youtube.com/watch?v=RIh-M High 8/17/2026 v1.0.0 # ADK-Rust v1.0.0 โ The Stable Foundation The first stable release of the Rust Agent Development Kit. **39 crates. 130K+ downloads in 6 months. Semver stability guarantee.** <a href="https://www.youtube.com/watch?v=tlqaE8qeHac"><img src="https://raw.githubusercontent.com/zavora-ai/adk-rust/main/docs/podcast/episode-2-thumbnail.jpg" alt="โถ Watch the launch video" width="560"></a> ## Highlights - **Semver stable** โ pin to `1.x` and your build won't break - **All former Beta crates promoted to High 6/7/2026 v0.9.0 ## ADK-Rust v0.9.0 ### Added - **Composable Template System** โ 8 base templates, 9 addons, 5 enterprise patterns via `cargo adk new --addon` - **Cargo Adk Build** โ Compile-without-deploy subcommand for pre-deployment verification - **A2A Simple Scaffolding** โ `A2aServer::quick_start`, `A2aServer::builder`, `cargo adk new --template a2a` ### Changed - Version bump from 0.8.5 to 0.9.0 ### Security - hickory-proto 0.26.1 (moderate โ DNS cache poisoning) - openssl 0.10.80 (moderate โ certif High 5/24/2026 v0.8.4 ## Fixed - **Gemini schema: array types require `items`**: v0.8.3 stripped tuple-style `items` entirely, causing Gemini to reject arrays with "missing field" errors. Now tuple `items` (`[{type:number},{type:number}]`) are converted to a single schema using the first element (`{type:number}`). Arrays without any `items` field also get a default `{type:string}` added. ## Upgrade ```toml adk-gemini = "0.8.4" ``` **Full Changelog**: https://github.com/zavora-ai/adk-rust/compare/v0.8.3...v0.8.4 High 5/18/2026 v0.8.1 ## Highlights **Agent Client Protocol (ACP) support** โ connect ADK agents to Claude Code, Codex, Kiro CLI, and any ACP-compatible agent as tools. ### New Crate: `adk-acp` ```rust use adk_acp::AcpAgentTool; let kiro = AcpAgentTool::new("kiro-cli acp --trust-all-tools") .description("Delegate coding tasks to Kiro CLI"); let agent = LlmAgentBuilder::new("orchestrator") .tool(Arc::new(kiro)) .build()?; ``` - `AcpAgentTool` โ wraps any ACP agent as an ADK Tool - `AcpToolset` โ mult High 5/13/2026 v0.8.0 ## Highlights **Performance release** โ default builds are 32% lighter with new feature tiers. ### Breaking Changes - **Default feature changed from `standard` to `minimal`**: `adk-rust = "0.8.0"` now activates only `agents`, `models`, `gemini`, `runner`, and `sessions`. Add `features = ["standard"]` for the full production preset. ### New Feature Tiers | Tier | Includes | Use case | |------|----------|----------| | `minimal` (default) | Gemini, agents, runner, sessions | Fast starter agent High 5/7/2026 v0.7.0 ## ADK-Rust v0.7.0 ### Highlights - **Agentic Web Protocol (AWP)** โ Two new crates (`awp-types`, `adk-awp`) implementing the full AWP protocol: discovery, capability manifests, trust levels, rate limiting, consent, events, health monitoring, and version negotiation. [AWP Docs](https://github.com/zavora-ai/adk-rust/blob/main/docs/official_docs/deployment/awp.md) - **DeepSeek V4 Provider** โ `ThinkingMode`, `ReasoningEffort`, strict tool mode, beta URL support, `v4_pro`/`v4_flash` constructors High 4/26/2026 v0.6.0 ## ๐ ADK-Rust v0.6.0 **31 crates published to crates.io** ยท [Listen to the podcast โ](https://github.com/zavora-ai/adk-rust#-rust--beyond-podcast--episode-1-what-is-adk-rust) ### ๐ง Rust & Beyond Podcast Episode 1 is live on the README โ a 2:21 podcast about ADK-Rust generated entirely by the framework using Gemini 3.1 Flash TTS. Two AI hosts, natural voices, zero manual editing. ### โจ Highlights #### Multimodal Function Responses (`adk-core`, `adk-gemini`, `adk-model`, `adk-agent`) Tools High 4/16/2026 v0.5.0 # ADK-Rust v0.5.0 **31 crates published to crates.io** โ the largest ADK-Rust release to date. ## Highlights ### Zero-Config Ergonomics - **`provider_from_env()`** โ auto-detect LLM provider from environment variables (Anthropic โ OpenAI โ Gemini precedence) - **`adk::run(instructions, input)`** โ single-function agent invocation with auto provider detection, session creation, and execution ### Prompt Caching Enabled by Default - **Anthropic**: `prompt_caching` now defaults to `true` (cache_ Medium 3/29/2026 v0.4.0 ## Highlights **ADK-Rust is now a focused, lean Rust framework.** UI, Studio, and 120+ examples extracted to standalone repos. Default builds dropped from ~2min to ~50s. New `cargo-adk` scaffolding CLI and `#[tool]` proc macro for zero-boilerplate DX. ### Get Started ```bash cargo install cargo-adk cargo adk new my-agent cd my-agent && cargo run ``` Templates: `--template tools` | `rag` | `api` | `openai` --- ## Breaking Changes - **Default preset:** `full` โ `standard`. Server/CLI includ Low 3/16/2026 v0.3.1 ## ADK-Rust v0.3.1 ### โญ Highlights - **Vertex AI Streaming**: `adk-gemini` refactored with `GeminiBackend` trait โ pluggable `StudioBackend` (REST) and `VertexBackend` (REST SSE streaming + gRPC fallback) - **Realtime Audio Transport**: Three new transports for `adk-realtime` โ Vertex AI Live (OAuth2/ADC), LiveKit WebRTC bridge, OpenAI WebRTC (str0m + Opus) - **Vertex AI Live Tool Calling**: New `vertex_live_tools` example demonstrating real-time voice agents with function calling via Vertex Low 2/15/2026 v0.3.0 ## โญ Highlights - **Context Compaction**: Sliding-window summarization of older events to reduce LLM context size (ADK Python parity) - **Workflow Agent Hardening**: ConditionalAgent, LlmConditionalAgent, and ParallelAgent production fixes - **adk-core Production Hardening**: Security limits, validation, provider-agnostic Event, hand-written template parser - **Action Node Code Generation**: Full Rust codegen for HTTP, Database, Email, and Code action nodes - **Workflow Triggers**: Complete trig Low 2/10/2026 v0.2.1 ## โญ Highlights - **OpenAI Structured Output**: `output_schema` now works with OpenAI/Azure via `response_format` API - **Ralph Autonomous Agent**: New example showcasing spec-driven development with loop agents - **Local Model Support**: New examples for Ollama and OpenAI-compatible local APIs - **Improved Error Handling**: Replaced `unwrap()` calls with proper error handling across crates ## Added - **adk-model**: OpenAI/Azure clients now wire `output_schema` to `response_format` with `json_s Low 1/22/2026 v0.2.0 ## Release v0.2.0 - Major Documentation & Feature Update ### ๐ New Features **Streaming Mode Control** - Implement `StreamingMode.None` and SSE per ADK spec - Add streaming mode control to Launcher API - Use stable event IDs for all streaming chunks **Tracing & Observability** - Add `call_llm` span in llm_agent.rs for all model types - Fix async tool execution tracing to match adk-go pattern - Group spans by invocation_id in trace UI - Add get_event endpoint for trace-event linking **Agents Low 1/7/2026 v0.1.8 ## โญ Highlights - **ADK Studio**: Complete visual agent builder with drag-and-drop workflow design - **Real-Time Streaming**: Live SSE streaming with agent animations and trace events - **Code Generation**: Compile visual workflows to production Rust code - **Rust 2024 Edition**: Migrated to Rust 2024 edition for latest language features ## Added - **ADK Studio** (`adk-studio`): Visual agent development environment - Drag-and-drop agent creation with ReactFlow-based canvas - Full agent pale Low 12/28/2025 v0.1.7 ## ๐ก๏ธ Guardrails Framework This release introduces **adk-guardrail**, a new crate for agent safety and validation. ### New Crate: adk-guardrail - **`Guardrail` trait** - Async validation returning `Pass`, `Fail`, or `Transform` - **`GuardrailSet`** - Collection with parallel execution and early exit on `Critical` severity - **`Severity` levels** - `Low`, `Medium`, `High`, `Critical` ### Built-in Guardrails | Guardrail | Description | |-----------|-------------| | `PiiRedactor` | Detects an Low 12/14/2025 v0.1.6 # Release v0.1.6 ๐ฆ ## ๐จ Introducing adk-ui: Dynamic UI Generation for AI Agents This release introduces **adk-ui**, a complete framework for AI agents to generate rich, interactive user interfaces through tool calls. Give your agents the power to render forms, tables, charts, dashboards, and more! ### Why adk-ui? Traditional AI chatbots are limited to text responses. With adk-ui, your agents can: - **Collect structured data** via forms (registration, settings, surveys) - **Display data** w Low 12/12/2025 v0.1.5 ## Added - **DeepSeek provider support**: Native integration with DeepSeek's LLM models - `DeepSeekClient` and `DeepSeekConfig` for easy configuration - Support for `deepseek-chat` (standard) and `deepseek-reasoner` (thinking mode) - Thinking mode with chain-of-thought reasoning - Context caching for 10x cost reduction on repeated prefixes - Full function calling/tool support - Feature flag: `adk-model = { features = ["deepseek"] }` - 8 new DeepSeek examples: - `deepseek_basic` - B Low 12/10/2025 v0.1.4 Release v0.1.4 - Graph Workflows, Browser Automation, Evaluation This release adds three major new crates: adk-graph for LangGraph-style workflows, adk-browser for browser automation, and adk-eval for agent evaluation. โจ New Features adk-graph Crate - StateGraph for building complex agent workflows with state channels - AgentNode for wrapping LLM agents as graph nodes with input/output mappers - Conditional routing with Router::by_field and custom predicates - Human- Low 12/9/2025 v0.1.3 ## Release v0.1.3 - Real-time Voice-Enabled AI Agents This release introduces the `adk-realtime` crate for building voice-enabled AI agents with real-time audio streaming. ### โจ New Features #### adk-realtime Crate - **RealtimeAgent** implementing `adk_core::Agent` trait with full callback/tool/instruction support - **OpenAI Realtime API** support (`gpt-4o-realtime-preview-2024-12-17`, `gpt-realtime`) - **Gemini Live API** support (`gemini-2.0-flash-live-preview-04-09`) Low 12/9/2025 v0.1.2 ## Release v0.1.2 - Multi-Provider LLM Support This release adds support for OpenAI and Anthropic providers, making ADK-Rust a truly multi-provider LLM framework supporting Gemini, OpenAI, and Claude. ### โจ New Features #### OpenAI Provider Support - Full integration with OpenAI GPT models (GPT-4o, GPT-4o-mini, GPT-4-turbo, GPT-3.5-turbo) - `OpenAIClient` and `OpenAIConfig` for easy configuration - Streaming support with proper tool call accumulation - Feature flag: `adk-model = { features = Low 12/7/2025

