Projects
Things I've built in the open. Everything here is public on GitHub; write-ups link through to the code.
Voice AI applications
Real-time spoken conversation apps built on the Gemini Live API.
CarBotTypeScript
A voice-first AI companion for car rides with kids — answers questions, tells jokes, builds a memory of the family over time, and emails parents a recap after each drive.
LegacyBot / BiographyBotTypeScript
Voice-first life-story preservation: conducts empathetic real-time interviews with a storyteller, then transcribes and organizes their narrative for the family archive.
Libraries & utilities
Reusable packages extracted from the applications above.
nl2timeTypeScript · Python
Bidirectional natural language ⇄ date/time. Parses "last week" into timezone- and locale-correct intervals and describes instants back as "9pm last night", around a deterministic JSON IR. Six languages; JS and Python.
Read: What time is "last week"? Tools for AI agents to stop fumbling dates
VoiceCommonTypeScript
A framework for voice AI web apps on Gemini Live and Firebase — session management, transcript archival, audio recording, tool integration. Extracted from LegacyBot and generalized.
KnowledgeCommonTypeScript
Shared knowledge tools for Gemini Live voice apps: weather, maps, jokes, Wikipedia RAG, and date/time — with server-side proxying so API keys never reach the browser.
Agents & data
Agents that answer questions over real data pipelines.
weatherbotPython
Personal weather data end to end: Ambient Weather Network ingestion into Cloud SQL Postgres, queried in natural language by an ADK agent over MCP Toolbox.
weatherbot-appTypeScript
Mobile-first chat and voice frontend for weatherbot — React + Vite on Firebase, talking to the agent through the Gemini Live API.
Benchmarks & evaluation
Measuring what models and agents actually get right.
agent-time-benchPython
How well do LLM agents handle date/time in the tool calls they make and the answers they give? 10 domains × 10 scenarios, graded on both directions, across models from tiny open-weights to closed frontier.
Read: What time is "last week"? Tools for AI agents to stop fumbling dates
Simulations & games
Small worlds with rules, run long enough to see what the rules actually do.
Grammar GardenTypeScript
Plants grown from tiny L-system recipes, in a browser. Unstable shapes collapse, sunlight and soil water decide who thrives across two climates, and bees and butterflies breed the survivors — so the field evolves forms nobody designed.
Read: Grammar Garden: evolving plants from tiny recipes, thirty years later
Wind SpiritTypeScript
A civilization sandbox where every village is run by an AI chief and the player is a spirit who sees everything and can touch almost nothing. Deterministic weekly sim, headless balance harness first.
Read: Wind Spirit: balance is measured, not argued · Wind Spirit: how much intelligence does a stone-age chief need?
This site
andrewbrook-devAstro
The source of this site — Astro, statically built, deployed to GitHub Pages.
Contributing to
googleapis/genai-toolbox
MCP Toolbox for Databases — an open-source MCP server for databases.