The promise of AI agents is to automate complexity, but as engineering leaders, we often confront a foundational truth: a single agent, like a single junior developer, has its limits.
A simple Q&A bot can fetch documentation, but it cannot replicate the intricate, multi-step, collaborative process of real-world software development. To solve this, we don't need better prompts; we need better systems.
A true development lifecycle isn't one-shot. It's a stateful journey of analysis, research, design, feedback, generation, and — most critically — quality assurance.
The "Aha!" Moment: I didn't need to build a smarter chatbot. I needed to build an autonomous, virtual assembly line. I needed to architect a system.
This is the story of Project Agora, a framework for creating and orchestrating hierarchical multi-agent systems, built on the Google Agent Development Kit (ADK).
The Architecture: A Hierarchical Agent Topology
Project Agora implements a powerful architectural pattern: a central orchestrator_agent that manages a team of specialized sub-agents. Each specialist is wrapped in an ADK AgentTool, allowing the orchestrator to delegate complex tasks as if it were calling a simple function.
This modular design is the key to creating sophisticated, end-to-end workflows.
The Tech Stack: Why Google Cloud?
When building an autonomous agency, you need more than just an LLM; you need a resilient state machine and a scalable memory backend. Here is the production stack that powers Agora:
Google ADK
State-machine primitives for deterministic orchestration. Treats agents as strongly-typed function calls within a DAG.
Gemini 2.5 Pro
Massive context window for full codebase ingestion. Reduces "lost in the middle" hallucination risks.
BigQuery Vector Search
Hybrid search via SQL — no fragile ETL pipelines. Data stays where it lands.
Vertex AI RAG Engine
Managed indexing for hallucination-free documentation retrieval.
Orchestration: Determinism over Creativity
LLMs are non-deterministic stochastic parrots. To build a reliable coding agency, I needed strict guardrails.
Why Google ADK: Unlike standard prompt chaining, ADK allows us to treat the code_reviewer_agent as a strongly-typed function call within a DAG (Directed Acyclic Graph), ensuring the system never "hallucinates" a skipped QA step.
The Brain: Gemini 2.5
For an autonomous coding agency, context is everything. Gemini 2.5 Pro's massive context window allows the ticket_analysis_agent to ingest entire log files or code snippets without aggressive chunking, reducing the "lost in the middle" hallucination risks common in smaller models.
Memory & Knowledge: BigQuery Vector Search
Many architects instinctively reach for Pinecone or Milvus for vector storage. I chose BigQuery Vector Search to minimize architectural complexity.
The Pattern: By performing COSINE_DISTANCE searches directly via SQL, I eliminated the need for a fragile ETL pipeline. The data stays where it lands, allowing hybrid search (filtering by metadata while searching by vector similarity) in a single, serverless execution plan.
Grounding: Vertex AI RAG Engine
For the "RAG Agent," we need factual correctness, not creativity. The Vertex AI RAG Engine provides managed indexing of the ADK documentation, ensuring the agents don't hallucinate API methods that don't exist.
Infrastructure: Cloud Run
The entire agency runs as a stateless container on Cloud Run. This ensures that our "virtual employees" scale down to zero (costing nothing) when no tickets are being processed and scale up instantly when work arrives.
The Workflow: An ADK Expert System
Here is the workflow our pre-configured "ADK Expert" system follows:
End-to-End Agent Workflow
The ticket_analysis_agent receives the request and reads files directly from GCS for deep context.
RAG Agent (documentation) + Experience Agent (historical tickets) run simultaneously.
The code_generator_agent creates a plan and visual architecture diagram for human approval.
Code is generated, then passed to code_reviewer_agent for automated QA before reaching the user.
Step 3: The Human-in-the-Loop
This is where the system's collaborative nature becomes visible. For a code generation request, the code_generator_agent doesn't just start writing code. It first creates a high-level plan and, using a custom tool powered by Playwright, dynamically generates a visual architecture diagram.
The orchestrator then presents both the plan and the diagram to the user for explicit approval. The system doesn't assume; it proposes and aligns.
Step 4: The QA Gate
This is the most critical loop, moving beyond simple generation into reliable automation.
Automated Quality Assurance: The generated code is not sent to the user. Instead, it is immediately passed to the code_reviewer_agent. This QA agent's sole purpose is to perform an automated code review against a formal style guide, checking for correctness, security, and ADK best practices. It has the authority to approve the code or even correct it.
Only after passing this automated quality gate is the final, verified code presented to the user.
Three Pillars of Production-Ready Agentic Systems
Building a demo is easy; building a system that doesn't crash in production is hard. Project Agora's success relies on three architectural decisions:
- State-Driven Orchestration (The Guardrails)
We cannot treat AI as a black box. By enforcing a strict state-machine workflow within the ADK orchestrator, we ensure the system creates a "human-in-the-loop" checkpoint before any code is written.
- Integrated Quality Assurance (The Second Pair of Eyes)
In traditional software teams, no code merges without review. The dedicated
code_reviewer_agentdoes not generate; it critiques. It strictly enforces the Google Style Guide and security best practices. - Infrastructure-as-Code (The One-Command Setup)
Using a master
setup_environment.shscript, I automated the provisioning of GCS buckets, BigQuery datasets, and Vertex AI indices. Agentic systems can be treated as standard infrastructure assets — versioned, reproducible, and deployable in minutes.
The Real Product: A Domain-Agnostic Framework
While the ADK expert system is a powerful demonstration, the true product here is the domain-agnostic framework itself. The entire state-driven, interactive workflow — from analysis and visualization to generation and review — is portable.
By changing the knowledge files (the RAG corpus and BigQuery tables) and the specialist agent prompts, you could transform this from a developer tool into an agentic system that automates financial reporting, legal research, or marketing campaign creation.
Why Google Cloud?
This project was a journey to see how far I could push the Agent Development Kit. It proved to be the ideal foundation for building not just single agents, but the complex, collaborative, and autonomous AI systems that I believe will power the next generation of software.
The future of development isn't just about AI assistance; it's about AI collaboration.
