Model or dataset
zavora-ai/adk-rust avatar
zavora-ai/adk-rust

ADK-Rust: 43 publishable crates, tiers you add to rather than pick, and a fan-in default that moved without an API change

Rust Agent Development Kit (ADK-Rust): Build AI agents in Rust with modular components for models, tools, memory, realtime voice, and more. ADK-Rust is a flexible framework for developing AI agents with simplicity and power. Model-agnostic, deployment-agnostic, optimized for frontier AI models. Includes support for real-time voice agents.

752 stars117 forksRustNOASSERTION

At a glance

What is it?
A Rust framework for AI agents published as a workspace of crates on crates.io, with a cargo-adk scaffolder, an embedded runtime UI, and four feature tiers described as starting points rather than ceilings. Its own numbers disagree with each other in small ways worth knowing before you pin a version.
Who is it for?
Pick this up if you are writing agents in Rust, want HTTP serving, auth, graph orchestration, guardrails and evaluation behind one dependency rather than five, and can live with a large surface that is still moving. The migration note is the honest signal about that: six APIs changed shape when 2.0 landed, and the fan-in default changed behaviour with no API change at all, so read docs/official_docs/migration/1.0-to-2.0.md and the CHANGELOG before upgrading rather than after.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • zavora-ai/adk-rust752 ★ · +103
Star history
Repository2026-09-132026-11-14
zavora-ai/adk-rust649752

103 Stars in the last 62 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

43 crates now, 42 in the podcast, 39 in the first episode's predecessor

The opening line advertises 43 publishable crates for agent orchestration. The podcast block further down, written for v2.0.0, says 42 crates, 4,300+ tests and 104 runnable examples. The previous episode, covering v1.0.0, says 39 crates and 130K downloads, while the current milestone line claims 500K total crates.io downloads across the workspace. So the crate count has moved twice inside the same document, and the two figures bracket a difference of one, which is consistent with a crate having been added between the v2.0.0 recording and the v2.2.0 text. The workspace member array in Cargo.toml is where to settle it: it names 44 entries, and one of them, xtask, is commented as a repo-internal task runner with publish = false and never published. That leaves the published count at 43, matching the opening line and not the podcast.

The fan-in default changed behaviour without an API change

The upgrade note is unusually candid. Coming from 1.x, six APIs changed shape, and separately the fan-in default changed behaviour without an API change. That second clause is the one that catches teams out: a dependency that still compiles is not evidence that it still behaves the same way. Anyone migrating has two places to read, the migration guide at docs/official_docs/migration/1.0-to-2.0.md and the CHANGELOG, and the note points at both rather than leaving them to be discovered. The release titles around that transition are themselves inconsistent: v2.0.0 is titled Agents That Act, v2.1.0 carries the ADK-Rust prefix with Portable Teams, Agent Platform, and Runtime UI, and v2.2.0 drops the prefix again for Agent Platform, completed. The last push to the repository is dated 2026-09-27, after the v2.2.0 tag of 2026-09-01, so the branch has moved past the newest release.

Tiers are a starting point, which makes the name `minimal` mean two things

Four tiers are offered and each is defined as the one before plus a set of features. The default tier is minimal, giving the Gemini provider, agents, runner and sessions. Standard adds OpenAI, Anthropic, tools, memory, telemetry, server, auth, graph, eval, guardrail, plugins, artifacts and skills, aimed at serving an agent over HTTP. Enterprise adds realtime, browser, RAG, payments and AWP for voice, retrieval and payments. Full adds audio, code execution and sandbox. The stated rule is that a tier is a starting point and not a ceiling, and that any single capability can be added on top of one without moving up, with the example given as features = ["minimal", "audio"]. The consequence is that tier names behave like a menu of cumulative feature sets rather than a switch, and the dependency line shows the same thing: the plain form adk-rust = "2.2.0" for Gemini and agents, with the features form commented beside it for everything through eval.

The Makefile advertises nine targets its .PHONY line never declares

The .PHONY declaration names help, setup, check-env, build, build-all, test, test-all, clippy, fmt, clean, examples and docs. The help text right beneath it advertises more than that list contains: examples-gpu, build-mistralrs, build-mistralrs-metal, build-mistralrs-cuda, build-openai, build-anthropic, build-ollama, cache-stats and cache-clear. A declared target with no file beside it can silently do nothing when a file of the same name appears, so those nine targets are worth invoking deliberately rather than through a wrapper that assumes phony behaviour. One of them points at something the workspace does not obviously contain. The help lists make build-ollama as building with Ollama support, yet no Ollama crate appears among the workspace members or the top-level directories, so the target must be flipping a feature on a crate that already exists. Which one is not stated in the visible text.

The Makefile calls mistral.rs excluded from the workspace, then a member of it

Two lines in the same help block disagree. The section header reads mistral.rs (Local LLM - excluded from workspace by default), and three targets are offered beneath it for CPU-only, Metal GPU on macOS and CUDA GPU builds. The final note in the file says adk-mistralrs is a workspace member, adding GPU features as a caveat that the visible text cuts off mid-word. The Cargo.toml side of the question is answered in a comment of its own, which describes adk-mistralrs as local LLM inference, now publishable, with mistralrs on crates.io. The word now implies a change of state, so the help text reads as stale rather than wrong, but a newcomer reading the Makefile first has no way to tell which of the two lines describes the current build.

The environment template says only API keys are required, then asks for four Azure values

The template opens by telling you to copy it to .env and fill in values for the provider you use, stating that only API keys for your chosen provider are required. Most of the file honours that. GOOGLE_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY, DEEPSEEK_API_KEY, GROQ_API_KEY, OPENROUTER_API_KEY, FIREWORKS_API_KEY and TOGETHER_API_KEY are listed bare, while XAI_API_KEY, MISTRAL_API_KEY, PERPLEXITY_API_KEY, CEREBRAS_API_KEY and SAMBANOVA_API_KEY are commented out, which reads as a preference for a default rather than a requirement. The Azure blocks break the rule stated at the top. Azure OpenAI needs four values where the key is only one of them, since the endpoint, the deployment name and the API version are all required, with the version pinned to a dated preview string. Azure AI Inference repeats the pattern with a key and an endpoint, and the Bedrock section switches to AWS credentials instead of an API key at all.

The 900 MB episode video is kept out by a 100 MB limit, and the script and deck are kept in

The podcast material doubles as a worked example of what the repository will and will not hold. Episodes are generated with the framework's own audio path, using Chirp3-HD multi-speaker TTS synthesis through adk-audio, with the script, a Marp slide deck and the synthesized segments concatenated by ffmpeg, and the text notes zero manual voice recording. The asset list shows the shape of that pipeline:

bash
# 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/adk-rust-episode-3-narration.mp3  # Audio-only

The video and slides are not in the repository, the video alone being about 900 MB against GitHub's 100 MB per-file limit, while the script and the deck source are. The first episode is described as generated entirely by the framework using Gemini 3.1 Flash TTS and running 2 min 21 sec, with the third running 40 min 50 sec and the second 10 min 12 sec.

The license metadata asserts nothing while a LICENSE file sits at the root

The repository record carries no asserted license, and the tree at the same time contains a LICENSE file. Nothing in the visible text resolves the discrepancy, and the badge at the top of the README links to that LICENSE file rather than to a named license. So the two sources a consumer would check disagree in the mildest possible way, which is the kind that survives review and then matters during a procurement conversation. The rest of the root is unusually thorough for a project of this size, with AGENTS.md carrying the umbrella feature list, plus CHANGELOG.md, CONTRIBUTING.md, CONTRIBUTORS.md, ROADMAP.md, SECURITY.md, STABILITY.md, a .clippy.toml, a .codeqlignore and a .config/ directory. AGENTS.md is the file the tier documentation points at for the full list of features you can add without moving up a tier.

Editorial conclusion

Pick this up if you are writing agents in Rust, want HTTP serving, auth, graph orchestration, guardrails and evaluation behind one dependency rather than five, and can live with a large surface that is still moving. The migration note is the honest signal about that: six APIs changed shape when 2.0 landed, and the fan-in default changed behaviour with no API change at all, so read docs/official_docs/migration/1.0-to-2.0.md and the CHANGELOG before upgrading rather than after. Three smaller checks before you commit. The license metadata asserts nothing while a LICENSE file sits in the tree, so settle the terms yourself. The tier names are starting points, so turn on only the capabilities you need and add the rest one at a time instead of reaching for full. And the performance claim you will read first, 568 microseconds of agent-loop overhead against a figure of 1,228 milliseconds for another framework, comes from the project's own podcast material rather than from a benchmark you can rerun here.

Frequently asked questions

How many crates does ADK-Rust publish?

The opening line says 43 publishable crates, and the Cargo.toml workspace array lists 44 members including xtask, which is marked publish = false and never published. Podcast material for v2.0.0 still says 42 crates.

How do I scaffold a new agent project with ADK-Rust?

Install the scaffolder with cargo install cargo-adk, then run cargo adk new quickstart_agent --template api --provider openai, copy .env.example to .env, replace the OPENAI_API_KEY placeholder, and run cargo run. The UI is then at http://127.0.0.1:8080/ui/.

What changed when ADK-Rust moved to 2.0?

Six APIs changed shape, and the fan-in default changed behaviour without an API change. Both the migration guide at docs/official_docs/migration/1.0-to-2.0.md and the CHANGELOG are pointed at for the details.

Do I have to pick one feature tier in ADK-Rust?

No. A tier is a starting point and not a ceiling, so any single capability can be added on top of one without moving to the next, and features = ["minimal", "audio"] gives the minimal build plus audio. The four tiers are minimal, standard, enterprise and full.

What license does ADK-Rust use?

The repository record asserts no license, while a LICENSE file is present at the root of the tree and the README badge links to that file. The visible text does not name the license anywhere.

Official sources

  1. Issues
  2. Project website
  3. README
  4. Releases
  5. zavora-ai/adk-rust on GitHub
Community

Where developers are discussing it

Posts on Hacker News, dev.to and Lobsters that link to this repository, found by our scan of those communities. 0 in the last 30 days; newest first.

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/zavora-ai-adk-rust.svg)](https://hysenlabs.com/projects/zavora-ai-adk-rust)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/zavora-ai-adk-rust.svg)](https://hysenlabs.com/projects/zavora-ai-adk-rust)

Was this useful?