How to Build A2UI from Source: Complete Setup Guide
Build A2UI from source by installing Node.js ≥20 and the UV Python package manager, then compile the TypeScript libraries with npm install && npm run build in renderers/web_core and renderers/lit, followed by launching the sample client with npm run dev and the Python agent with uv run ..
A2UI is Google's multi-language framework for building agent-to-user interfaces across Web, Angular, React, and Python environments. To build A2UI from source and run the interactive demos locally, you must compile the shared TypeScript libraries, build framework-specific renderers, and configure the Python runtime for the agent SDK. The repository is organized as a monorepo with the core data model in renderers/web_core and framework adapters in separate directories.
Prerequisites
Before you build A2UI from source, install the following tools:
- Node.js 20 or later (bundles npm)
- npm (included with Node) or pnpm 9+ (optional, used by some samples)
- UV 0.2 or later (Python package manager)
- GEMINI_API_KEY environment variable (required for agent demos)
Install UV on macOS/Linux with:
curl -LsSf https://astral.sh/uv/install.sh | sh
Set your API key:
export GEMINI_API_KEY="your_key_here"
Building the TypeScript Libraries
A2UI uses a layered architecture where renderers/web_core provides the foundation, and framework-specific packages depend on it. All builds use Wireit as defined in each package's package.json.
Compile the Web Core Foundation
Navigate to the core library and run the build pipeline:
cd renderers/web_core
npm install
npm run build
In renderers/web_core/package.json, the build script delegates to Wireit, which executes the build:tsc target to compile TypeScript [2†L39-L44][2†L58-L66]. This step generates the data models and base classes required by all other renderers.
Build the Lit Renderer
The Lit renderer is the most common frontend implementation and depends on the web core:
cd renderers/lit
npm install
npm run build
The Lit package's package.json declares @a2ui/web_core as a dependency and uses the same Wireit-driven build script pattern [3†L22-L30].
(Optional) Build Additional Renderers
To build A2UI from source with alternative frontend support:
- Angular:
cd renderers/angular && npm install && npm run build[4†L3-L5] - React:
cd renderers/react && npm install && npm run build - Markdown:
cd renderers/markdown/markdown-it && npm install && npm run build
All follow the identical npm install && npm run build pattern defined in their respective package.json files.
Running the Sample Applications
Once the libraries are compiled, you can launch the reference implementation consisting of a Lit-based client and a Python agent.
Launch the Lit Shell Client
The "shell" sample demonstrates a complete A2UI client:
cd samples/client/lit/shell
npm install
npm run dev
This starts a Vite development server on http://localhost:5173 [5†L36-L55]. The dev script is defined in the sample's package.json and uses the Vite configuration in tools/inspector/vite.config.ts [6†L1-L5].
Start the Python Agent Backend
In a separate terminal, run the Restaurant-Finder demo agent:
cd samples/agent/adk/restaurant_finder
uv run .
This command launches the Python agent that streams A2UI JSON to the client [5†L26-L31]. The agent requires the GEMINI_API_KEY environment variable to communicate with the Gemini API.
Automated Build and Run Script
For convenience, combine all steps into a single script:
#!/bin/bash
export GEMINI_API_KEY="YOUR_KEY"
# Build core and Lit renderer
cd renderers/web_core && npm i && npm run build && cd -
cd renderers/lit && npm i && npm run build && cd -
# Launch client in background
cd samples/client/lit/shell && npm i && npm run dev &
CLIENT_PID=$!
# Launch agent
cd ../../../../samples/agent/adk/restaurant_finder
uv run .
# Cleanup
kill $CLIENT_PID
This script mirrors the manual steps described in the repository's README and ensures proper build order [5†L26-L55].
Summary
- Install Node.js ≥20, npm, and UV before attempting to build A2UI from source.
- Always build
renderers/web_corefirst, as all framework renderers depend on it. - Use
npm run build(powered by Wireit) in each renderer directory to compile TypeScript. - Launch the Lit shell client with
npm run devafter building the Lit renderer. - Start Python agents with
uv run .in the sample directories, ensuringGEMINI_API_KEYis set.
Frequently Asked Questions
What Node.js version is required to build A2UI?
You need Node.js 20 or later. The repository uses modern TypeScript features and Wireit build orchestration that rely on Node 20+ APIs. Earlier versions may fail during the npm run build phase with syntax or module resolution errors.
Why does the build fail with missing TypeScript errors?
This occurs when node_modules is not installed in the specific package directory or when renderers/web_core was not built before attempting to build a dependent renderer like Lit or Angular. Always run npm install in the specific subdirectory (e.g., cd renderers/lit && npm install) before running npm run build, and ensure the web core build completes successfully first.
How do I run the Python agent samples?
Navigate to a sample directory such as samples/agent/adk/restaurant_finder and execute uv run . after setting the GEMINI_API_KEY environment variable. The UV tool handles dependency installation and virtual environment creation automatically. You must have UV 0.2+ installed via the official installer script.
Can I use pnpm instead of npm to build A2UI?
Yes, several samples list pnpm i && pnpm build as an alternative workflow. While the core libraries use npm in their documentation, pnpm 9+ is fully compatible with the monorepo structure and may offer faster installation times due to its content-addressable store.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →