Agent-Driven Interfaces with A2UI
A2UI (Agent-to-User Interface) is an open specification and library set from Google that lets agents “speak UI” — request and describe interactive interfaces without sending executable code. It gives users native forms and controls instead of text-only back-and-forth.
The problem it solves
Most chat agents are stuck in text. Booking an appointment or filling out a form becomes a slow, multi-turn dialogue when what the user wants is a native form with a date picker and a submit button.
A2UI lets the agent send a structured, declarative JSON payload describing the interface it wants. The client application interprets that payload and renders it with its own native components — React, Angular, SwiftUI, Flutter. Three properties fall out of this design:
- Security — the agent sends data (JSON), never executable HTML or JavaScript, so there’s no UI injection and no arbitrary remote code.
- Consistency — the client controls the final render, so the UI matches the host app’s design system.
- Portability — one agent can drive web, mobile, and desktop, because the payload is framework-agnostic.
Design principles
- Security first. The protocol is declarative: the agent can only request components from a catalog the client pre-approves. The host app keeps full control.
- LLM-friendly representation. The UI is a flat list of components with identifier references — easy for a model to generate, stream, and update incrementally, so interfaces can render progressively as the agent works.
- Framework-agnostic. The agent describes structure and data, not implementation. The client maps that description to its own native widgets.
How it works
- A user interacts with the agent.
- The agent’s LLM generates an A2UI response — JSON describing components, layout, and data bindings.
- The payload streams to the client.
- The client’s A2UI renderer parses it and maps each component to a native widget from its trusted catalog.
- The native UI displays.
- User actions (a button click) return to the agent as events, which can trigger further UI updates.
This is the interface layer for the full-stack agent pattern — the standardized way the back-end tells the front-end what to render. See Building Full-Stack Agent Applications.
Keep going
A2UI’s core move is to send description, not code — the same instinct that keeps tool calls structured and typed, applied to the interface itself.

