{"id":640,"date":"2026-04-26T02:33:59","date_gmt":"2026-04-26T02:33:59","guid":{"rendered":"https:\/\/rejupillai.com\/?p=640"},"modified":"2026-05-03T01:40:35","modified_gmt":"2026-05-03T01:40:35","slug":"reviewing-agent-platform-demo-google-next","status":"publish","type":"post","link":"https:\/\/rejupillai.com\/index.php\/2026\/04\/26\/reviewing-agent-platform-demo-google-next\/","title":{"rendered":"Quick review of Marathon Demo @ Google Next"},"content":{"rendered":"\n<figure class=\"wp-block-video\"><video height=\"1040\" style=\"aspect-ratio: 1920 \/ 1040;\" width=\"1920\" controls src=\"https:\/\/rejupillai.com\/wp-content\/uploads\/2026\/04\/race-condition.webm\"><\/video><\/figure>\n\n\n\n<p>Google recently open-sourced the code behind the multi-agent marathon simulation shown at the developer keynote at Google Cloud Next&#8217; 26 last week (kudos to the team). The repository, <strong><a href=\"https:\/\/github.com\/GoogleCloudPlatform\/race-condition\" data-type=\"link\" data-id=\"https:\/\/github.com\/GoogleCloudPlatform\/race-condition\">Race Condition<\/a><\/strong>, is a deployable reference architecture for building autonomous systems using Gemini and the Google Agent Development Kit (ADK).<\/p>\n\n\n\n<p>If you&#8217;re currently trying to wrangle multiple LLMs into a coordinated system, getting past the prototype phase is usually where the pain starts. Google built this repo to show how to handle state routing, frontend integration, and API costs in a more production-ready way.<\/p>\n\n\n\n<p>Here is a technical breakdown of how the repository is structured:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture<\/h3>\n\n\n\n<p><strong>The Hub (Go):<\/strong> A WebSocket gateway that sits at the center of the architecture, handling state management and message routing between agents.<\/p>\n\n\n\n<p><strong>The Agents (Python):<\/strong> Built with the ADK and powered by Gemini, these handle the actual decision-making and environment processing.<\/p>\n\n\n\n<p><strong>The Frontend (Angular &amp; Three.js):<\/strong> Consumes the WebSocket streams to visualize the agent interactions and simulation state in real-time.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Communication Protocols<\/h3>\n\n\n\n<p>Handling unpredictable LLM outputs on a frontend is notoriously difficult. We split the communication into two patterns:<\/p>\n\n\n\n<p><strong>A2A (Agent-to-Agent):<\/strong> The internal message-passing backbone for state sharing and coordination.<\/p>\n\n\n\n<p><strong>A2UI (Agent-to-UI):<\/strong> A server-driven UI approach. Instead of the frontend trying to parse raw text into a layout, the agents emit specific UI primitives (cards, routes, buttons) over the wire. The frontend just renders what it receives.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Key Engineering Patterns<\/h3>\n\n\n\n<p><strong>The Planner Ladder:<\/strong> Rather than using complex feature flags, we built a literal progression of agents (<code>planner<\/code>, <code>planner_with_eval<\/code>, and <code>planner_with_memory<\/code> backed by AlloyDB). You can diff the code between them to see exactly how to implement evaluation gating and persistent memory.<\/p>\n\n\n\n<p><strong>Thundering Herd Mitigation:<\/strong> The Hub implements message batching. If you have hundreds of runner agents trying to broadcast state on the exact same tick, this prevents the system from taking itself down.<\/p>\n\n\n\n<p><strong>Replay &amp; Deterministic Testing:<\/strong> Building with LLMs gets expensive fast. The repo includes the ability to replay recorded NDJSON streams (which the frontend treats as live traffic) and a <code>runner_autopilot<\/code> variant that mocks LLM decisions with zero API calls. This lets you iterate on the UI and run load tests without burning through API credits.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deploying to GCP<\/h3>\n\n\n\n<p>Locally, the stack spins up via Docker Compose (bundling Redis, Postgres, and a Pub\/Sub emulator).<\/p>\n\n\n\n<p>When you&#8217;re ready to deploy to Google Cloud, the containers map cleanly to <a href=\"https:\/\/cloud.google.com\/\">Cloud Run,<\/a> and the agents can be hosted on the <a href=\"https:\/\/cloud.google.com\/products\/gemini-enterprise-agent-platform\">Gemini Enterprise Agent Platform<\/a><\/p>\n\n\n\n<p><strong>Setup Hint:<\/strong> To get the map and location tools working, ensure you enable <code>agentregistry.googleapis.com<\/code> (for MCP server discovery), <code>mapstools.googleapis.com<\/code>, and <code>places.googleapis.com<\/code> in your GCP console. <\/p>\n\n\n\n<p>Also, take a look at the <strong><code>AGENTS.md<\/code><\/strong> file in the repo\u2014it&#8217;s written specifically as context for your IDE&#8217;s AI assistant (Copilot or Gemini Code Assist) to help you configure the local and cloud environment faster. I used Gemini-CLI on a CloudShell pointing to the AGENTS.md and deployed it with a few natural language inputs to the cloud (It takes about 30-mins for all the terraform code to complete)<\/p>\n\n\n\n<p>#GoogleCloud #MultiAgentSystems #SoftwareArchitecture #GenAI #Developers #OpenSource <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Google recently open-sourced the code behind the multi-agent marathon simulation shown at the developer keynote at Google Cloud Next&#8217; 26 last week (kudos to the team). The repository, Race Condition, is a deployable reference architecture for building autonomous systems using Gemini and the Google Agent Development Kit (ADK). If you&#8217;re<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[],"class_list":["post-640","post","type-post","status-publish","format-standard","hentry","category-aiagents","ct-col-2"],"_links":{"self":[{"href":"https:\/\/rejupillai.com\/index.php\/wp-json\/wp\/v2\/posts\/640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rejupillai.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rejupillai.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rejupillai.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rejupillai.com\/index.php\/wp-json\/wp\/v2\/comments?post=640"}],"version-history":[{"count":7,"href":"https:\/\/rejupillai.com\/index.php\/wp-json\/wp\/v2\/posts\/640\/revisions"}],"predecessor-version":[{"id":655,"href":"https:\/\/rejupillai.com\/index.php\/wp-json\/wp\/v2\/posts\/640\/revisions\/655"}],"wp:attachment":[{"href":"https:\/\/rejupillai.com\/index.php\/wp-json\/wp\/v2\/media?parent=640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rejupillai.com\/index.php\/wp-json\/wp\/v2\/categories?post=640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rejupillai.com\/index.php\/wp-json\/wp\/v2\/tags?post=640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}