A2UI (Agent-to-User Interface) is an open protocol and set of renderer libraries that let agents send rich, interactive user interfaces to a client without executing code. An agent sends a declarative JSON description of the UI's intent, and the client renders it with its own native component library, so the same payload displays on web, mobile, and desktop clients built on different frameworks. The project is an early public preview: v0.9.1 is the current production release, v1.0 is a release candidate, and v0.8 is legacy.
The client keeps a catalog of trusted, pre-approved components (such as Card, Button, and TextField), and the agent can only request components from that catalog. The UI is a flat list of components with ID references, which LLMs can generate incrementally, so the interface streams and renders progressively and the agent can update it as the conversation continues. An open registry maps server-side types to custom client implementations, including iframe containers for legacy content, with sandboxing policies enforced in the developer's own component logic.
The flow separates UI generation from execution: an agent (using Gemini or another LLM that produces JSON) generates an A2UI response, a transport such as A2A or AG-UI carries it to the client, and the client's A2UI renderer maps abstract components to concrete widgets. Renderers exist for Angular, Flutter, Lit, React, and Markdown, and the Flutter GenUI SDK uses A2UI under the hood. Through the AG-UI scaffolding CLI, A2UI rendering works with frameworks such as Agent Development Kit (ADK), LangGraph, CrewAI, Mastra, and Strands Agents.
Features
- Declarative format: agents send JSON component descriptions, not executable code
- Component catalog: clients allow only pre-approved components, which blocks UI injection
- Incremental streaming: a flat component list with ID references lets LLMs build and update the UI progressively
- Portable rendering: one payload renders with each client's native widgets on Angular, Flutter, Lit, React, and Markdown renderers
- Custom components: an open registry with Smart Wrappers connects existing components to A2UI data binding and events
- Transports: works over A2A and AG-UI
- A2UI Composer: a visual editor that generates A2UI JSON to paste into an agent prompt
- A2UI Theater: pre-built streaming scenarios across Lit, React, and Angular renderers
