a2ui README

The project's README from github.com/a2ui-project/a2ui. As one markdown file: README.md.

A2UI: Agent-to-User Interface

A2UI is an open-source project, complete with a format optimized for representing updatable agent-generated UIs and an initial set of renderers, that allows agents to generate or populate rich user interfaces.

Gallery of A2UI components

A gallery of A2UI rendered cards, showing a variety of UI compositions that A2UI can achieve.

⚠️ Status: Early stage public preview

Note: A2UI's current production release is v0.9.1, a patch release in the stable v0.9 protocol family. The v1.0 specification is a release candidate, while v0.8 is legacy. The specification and implementations are functional but are still evolving. We are opening the project to foster collaboration, gather feedback, and solicit contributions (e.g., on client renderers). Expect changes.

Summary

Generative AI excels at creating text and code, but agents can struggle to present rich, interactive interfaces to users, especially when those agents are remote or running across trust boundaries.

A2UI is an open standard and set of libraries that allows agents to "speak UI." Agents send a declarative JSON format describing the intent of the UI. The client application then renders this using its own native component library (Flutter, Angular, Lit, etc.).

This approach ensures that agent-generated UIs are safe like data, but expressive like code.

High-level philosophy

A2UI was designed to address the specific challenges of interoperable, cross-platform, generative or template-based UI responses from agents.

The project's core philosophies:

Use cases

Some of the use cases include:

Architecture

The A2UI flow disconnects the generation of UI from the execution of UI:

  1. Generation: An Agent (using Gemini or another LLM) generates or uses a pre-generated A2UI Response, a JSON payload describing the composition of UI components and their properties.
  2. Transport: This message is sent to the client application (via A2A, AG-UI, etc.).
  3. Resolution: The Client's A2UI Renderer parses the JSON.
  4. Rendering: The Renderer maps the abstract components (e.g., type: 'text-field') to the concrete implementation in the client's codebase.

Dependencies

A2UI is designed to be a lightweight format, but it fits into a larger ecosystem:

Getting started

Pick the path that matches where you want to start:

Path What you get Time
🍜 Quickstart Restaurant Finder Demo Full-stack A2UI running locally with a Gemini powered ADK agent and Lit renderer. Learn A2UI end-to-end and customize to your use case. ~5 min
⚛️ Use A2UI with Any Agent Framework & Harness Scaffold an AG-UI app or harness for your framework of choice, then enable A2UI rendering over AG-UI. ~5 min
🎨 A2UI Composer Generate A2UI JSON from a visual editor and paste it into any agent prompt — no install required. ~1 min
🎬 A2UI Theater Step through pre-built A2UI streaming scenarios across Lit, React, and Angular renderers — no install required. ~1 min

Restaurant Finder demo — Summary

Prerequisites: Node.js 18+ (with Corepack enabled), uv, and a Gemini API key.

git clone https://github.com/a2ui-project/a2ui.git
cd a2ui
export GEMINI_API_KEY="your_gemini_api_key"

# Enable Corepack (macOS Homebrew users: see tip below)
corepack enable

yarn install
cd samples/client/lit
yarn demo:restaurant

[!TIP] macOS Homebrew Users: If you previously installed standalone package managers, unlink conflicts before installing Corepack so Corepack can manage versions per-project:

brew unlink yarn pnpm
brew install corepack
corepack enable

These commands install dependencies across workspaces, build the renderers, start the Python agent, and open the client at http://localhost:5173. For step-by-step instructions, alternative demos, and troubleshooting see the full Quickstart.

Use A2UI with Any Agent Framework & Harness — Summary

npx create-ag-ui-app@latest

Use the AG-UI CLI with your framework or harness of choice (Google Chat, ADK, LangGraph, CrewAI, Mastra, Strands, Slack, Teams, etc.), then follow the AG-UI guide to enable A2UI rendering. Some scaffold paths use CopilotKit's A2UI runtime with Next.js under the hood, but the setup surface is AG-UI-first.

Other renderers

For Flutter, check out the GenUI SDK, which uses A2UI under the hood. See docs/public/reference/renderers.md for the full list of client implementations.

Roadmap

We hope to work with the community on the following:

Contribute

A2UI is an Apache 2.0 licensed project. We believe the future of UI is agentic, and we want to work with you to help build it.

See CONTRIBUTING.md for details on how to get started.

a2ui (a2ui-project/a2ui)

langgraph
Searching Database…

16.7K ·GitHub
What is this?A2UI is an open protocol and set of libraries that let AI agents send a declarative JSON description of a UI, which client apps render using their own native components (Flutter, Angular, Lit, React, etc.) instead of executing agent-generated code.
Is this a UI framework or more like a data protocol?It's a protocol/data format, not a rendering framework: agents emit a flat JSON list of components with ID references, and the client maps that abstract description to its own native widget library.
How do I try it out?Easiest no-install option is the A2UI Composer or Theater demos; for a full local run, try the Quickstart Restaurant Finder demo which spins up a Gemini-powered ADK agent with a Lit renderer, or scaffold an AG-UI app for your framework via the AG-UI CLI.
What do I need installed to run the Restaurant Finder demo?Node.js 18+ with Corepack enabled, uv, and a Gemini API key.
Is the spec stable enough to build on right now?No — it's an early-stage public preview on protocol v0.9.1 (v0.8 is legacy, v1.0 is only a release candidate), so breaking changes are expected.
Which frameworks can actually render A2UI today?Officially Web (Lit/Angular/React via demos) and Flutter (through the GenUI SDK) are supported now; React, Jetpack Compose, and SwiftUI are on the roadmap.
How does A2UI keep agent-generated UIs safe to render?The client maintains a catalog of trusted, pre-approved components (e.g. Card, Button, TextField), and the agent can only request components from that catalog rather than sending executable code.
Can an agent update the UI mid-conversation instead of regenerating it?Yes, the UI is a flat list of components with ID references, which is easy for LLMs to generate incrementally and allows progressive, responsive updates as the conversation continues.
How does A2UI connect to agent transports like A2A?A2UI payloads are transport-agnostic and are sent over existing agent communication protocols such as A2A Protocol and AG-UI, so any model that can output JSON can drive it.
What is a 'Smart Wrapper' in A2UI?It's a registry pattern that lets developers map server-side component types to custom client implementations, such as native widgets, React components, or sandboxed iframes, while keeping security policy in the developer's hands.
Size
192 MB
Stars
16.7K
Age
1y
Commits · 90 Days