Multi-Agent Systems

Project Agora: Building an Autonomous Software Agency on Google Cloud

A hierarchical multi-agent framework using ADK, Gemini 2.5, and BigQuery Vector Search to automate end-to-end development workflows.

Oct 25, 202515 min readMohit Bhimrajka
Google ADKGemini 2.5BigQueryCloud RunVertex AI RAG
Share this article:
Scroll to explore
Back to Blog

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

1
Triage & Contextualization

The ticket_analysis_agent receives the request and reads files directly from GCS for deep context.

2
Parallel Research

RAG Agent (documentation) + Experience Agent (historical tickets) run simultaneously.

3
Collaborative Design

The code_generator_agent creates a plan and visual architecture diagram for human approval.

4
Verified Production

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_agent does 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.sh script, 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.

Mohit Bhimrajka

Mohit Bhimrajka

Forward Deployed AI Engineer at Supervity. I build AI demos that close deals, then architect the systems to deliver on them. Code > Slides.

Want to learn more?

Explore the code on GitHub or get in touch to discuss AI architecture and production systems.