
This project demonstrates how to design, orchestrate, and deploy a safe, toolβgrounded, multiβagent developer assistant using Google Agent Development Kit (ADK) and Gemini models.
The system implements a strictly routed multiβagent architecture where a central RootAgent orchestrates specialist agents for:
The result is an opinionated developerβintelligence toolkit that prioritizes safety, determinism, and architectural clarity, while remaining extensible for realβworld production use. This ADK Toolkit is designed not only for AI developers, since it supports a wide range of technical and non-technical users such as Ready Tensor users, ML Engineers, Researchers, Technical Writers.
google_searchThis toolkit supports a broad range of users across the AI development lifecycle. By combining specialist agents with explicit tool constraints, users can retrieve highβsignal information, execute safe code, and access authoritative references without managing agent complexity directly.
The following table gives an overview of use cases that illustrate how different user roles can leverage the toolkit to address role-specific needs, highlighting its flexibility, practical relevance, and applicability beyond expert AI practitioners.
| User Role | Value Delivered | Example Use Cases |
|---|---|---|
| ML Engineers | AI tooling insights | Compare openβsource models, frameworks |
| Backend Engineers | AI relevance without ML overhead | Identify deployable AI tools |
| MLOps Engineers | Deployment signals | Assess model maturity and ops readiness |
| Tech Leads | Strategic summaries | Weekly AI trend overviews |
| Dev Advocates | Clear narratives | Explain AI articles to nonβexperts |
| Product Managers | Competitive insight | Openβsource vs proprietary analysis |
| Researchers | Researchβtoβpractice bridge | Discover implementations of papers |
| Students | Guided learning | Learn Python and AI tooling |
The application is built using a state-aware, RootAgent-centric multi-agent architecture powered by Google ADK and Gemini models.
At a high level, the system consists of:
The below table shows the main Agent Responsibilities
| Agent | Purpose | Capabilities | Constraints |
|---|---|---|---|
| RootAgent | Central router and orchestrator | β’ Intent detection β’ Deterministic routing β’ Delegation to specialist agents | β’ Never answers directly β’ No tool calls β’ Delegation only |
| AIDevSearchAgent | AI developer news discovery | β’ Search AI dev news β’ Headline extraction β’ Structured summaries β’ Uses google_search | β’ AI content only β’ Must use google_searchβ’ No code execution |
| CodeAgent | Safe Python execution | β’ Execute Python code β’ Return raw output or errors | β’ Python only β’ No filesystem β’ No network β’ No explanations |
| CodeExplainAgent | Explain Python code | β’ Step-by-step explanation β’ Highlight logic and pitfalls | β’ No execution β’ No code modification |
| HuggingFaceAgent | Canonical HF references | β’ Validate exact HF IDs β’ Return official URLs | β’ Exact IDs only β’ No guessing β’ No recommendations |
| GitHubAgent | GitHub repository inspection | β’ Fetch repo metadata β’ Stars, issues, PRs β’ Recent activity via MCP | β’ Explicit owner/repo requiredβ’ No discovery β’ No inference |
This system architecture is intentionally described using two parallel lanes:
Keeping these lanes separate makes authority, responsibility, and trust boundaries explicit.
The Control Flow lane represents decisionβmaking and orchestration, entirely owned by the RootAgent.
Key rules:
This guarantees a single, auditable decision point and prevents hidden agent autonomy.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β CONTROL FLOW β β (Decision, routing, orchestration β ADK) β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£ β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β ADK Web UI β β β β - User prompts β β β β - Headline selection β β β ββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β βΌ β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β RootAgent β β β β (Gemini 2.5 Flash β Router / Orchestrator) β β β β β β β β - Intent classification β β β β - Delegation (AgentTool) β β β β - Result aggregation β β β βββββββββ¬βββββββββββββββ¬βββββββββββββββ¬βββββββββββββββ¬ββββββββββββββββββββββββ¬βββββββββ β β β β β β β β β βΌ βΌ βΌ βΌ βΌ β β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ β β β AIDevSearch β β CodeAgent β β CodeExplain β β HuggingFace β β GitHub β β β β Agent β β β β Agent β β Agent β β Agent β β β β (Gemini Tool)β β (Gemini Tool)β β (Gemini Tool) β β (Gemini Tool) β β (Gemini Tool) β β β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The Data Flow lane represents execution, transport, and I/O paths. These flows may:
Important: transport differences do not imply authority. All flows still originate from RootAgent decisions.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β DATA FLOW β β (Execution, transport, external systems) β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£ β β β βββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ β β β google_search (ADK) β β BuiltInCodeExecutor β β CodeExplain β β β βββββββββββ¬ββββββββββββ β (Python sandbox, no net/fs) β β (Python sandbox, no net/fs) β β β β βββββββββββ¬βββββββββββββββββββββ βββββββββββ¬βββββββββββββββββββββ β β βΌ βΌ βΌ β β External search results Python execution output Python explanation output β β β β βββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββ β β β HF MCP Server β β GitHub MCP Server β β β β (stdio, local proc) β β (HTTP, remote Copilot MCP) β β β βββββββββββ¬ββββββββββββ βββββββββββ¬βββββββββββββββββββββββ β β β β β β βΌ βΌ β β Hugging Face Hub GitHub Platform β β - models - repos β β - datasets - issues / PRs β β - spaces - commits / releases β β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
This section provides a concise, authoritative mapping between agents, tools, and execution backends. It complements the architecture diagrams by making attachments, responsibilities, and transport mechanisms explicit.
| Component | Type | Attached To | Purpose |
|---|---|---|---|
| AIDevSearchAgent | AgentTool | RootAgent | Discover & summarize AI developer news |
| CodeAgent | AgentTool | RootAgent | Execute Python code safely |
| CodeExplainAgent | AgentTool | RootAgent | Explain Python code safely |
| hugging_face_agent | AgentTool + MCP | RootAgent | Hugging Face data (models, datasets, spaces) access |
| github_agent | AgentTool + MCP | RootAgent | GitHub insights |
| google_search | ADK Tool | AIDevSearchAgent | Web discovery |
| BuiltInCodeExecutor | ADK Executor | CodeAgent | Deterministic Python sandbox |
Why this matters:
This pubblication has a GitHub code repository attached also under the Code section.
git clone https://github.com/micag2025/Toolkit_Google_ADK.git cd Toolkit_Google_ADK python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt
Set environment variables (keys) in .env or your environment. See example .env.example.
GEMINI_API_KEY=your_gemini_api_key HF_API_KEY=your_hf_api_key GIT_API_KEY=your_github_api_key ADK_DEV_MODE=true
Start the ADK Web app:
adk web
ADK will provide a local URL. Open it in your browser. From the Google ADK user interface in the left pane, select the app_01 agent. You can now interact with the ADK AI Developer.
Stop the ADK process (if needed):
pkill -f "adk web"
This enhanced instruction pattern includes:
This creates a much more reliable and focused agent behavior.
You can test the enhanced multi-agent system using both valid and invalid prompts. A full set of reproducible test prompts and expected behaviors is provided in the accompanying GitHub repository.

After selecting the appropriate app (app_01) from the dropdown menu from the ADK Web UI, below is a high-signal, comprehensive set of prompt examples designed to systematically test the application end-to-end, aligned with the agent architecture, routing rules, MCP integrations, and UI flows.
Note : Different Run Results: The output generated can vary with each execution due to their dynamic, probabilistic nature.









Some built-in ADK tools (for example google_search and code execution) typically cannot be combined within a single agent instance.
Workaround:
SearchAgent, CodeAgent)AgentTool.create()This preserves architectural clarity while respecting ADK constraints.
LLM responses may vary between runs, even with identical inputs.
Mitigation:
Usage is subject to Vertex AI / Google Cloud quotas and billing limits.
Recommendation:
Contributions are welcomed to improve the ADK Toolkit! Suggested workflow:
git checkout -b feat/your-feature
Please follow the repository code style and add tests for major features.
We actively welcome contributors who want to help extend the system without compromising its architectural guarantees. The following items represent suggested and validated directions for future work.
Intentional Model Selection : The current implementation uses gemini-2.5-flash across agents. A promising improvement is to intentionally mix Gemini models by responsibility. For example, upgrading AIDevSearchAgent to gemini-2.5-pro and evaluating trade-offs enables controlled experimentation around quality vs cost vs latency, while preserving RootAgent orchestration.
Additional AgentTools : Add new AgentTools without destabilizing existing flows, preserving RootAgent-only delegation and avoiding agent-to-agent invocation chains.
Structured Outputs: Produce machine-readable JSON outputs for headlines and summaries . Enable downstream automation and evaluation pipelines.
Session & State Management: Persistent session storage across restarts. Reproducible conversations and debugging support.
Search & Retrieval Refinements : Filters (e.g. only open-source). Date ranges and recency controls. Improved relevance scoring.
UI & Observability : UI buttons for explicit selection and confirmation. Debug / observability modes. Clear visibility into control vs data flow at runtime.
Stronger Execution Guardrails : Tighter resource limits. Enhanced sandbox policies. Explicit failure modes and reporting.
Feel free to suggest more ideas by opening an issue or starting a discussion! For bug reports or feature requests,
open an issue.
This project is licensed under the MIT License. See the LICENSE file for details.
An acknowledgement to Ready Tensor developer community for creating a vibrant ecosystem where AI professionals can share projects, insights, and innovations, playing a meaningful role in accelerating the advancement of AI technology and in shaping practical, real-world developer tools such as this project.