# A2UI (Agent to UI) Protocol A2UI

[8 · Present](/category/present/)

| A2UI (Agent to UI) Protocol |
| --- |
| Category | [Present](/category/present/) |
| Governed by | a2ui-project (Google-originated, open-source on GitHub; Apache-2.0) |
| Status | Early stage public preview: v0.9.1 is the 'Current' production release, v1.0 is a release 'Candidate', v0.8 is legacy |
| Phase | candidate |
| Implementation | multi-implementation |
| Adoption | observed |
| Version | v1.0 (Candidate); v0.9.1 (Current) (2026-06-08) |
| Specification | [https://a2ui.org/specification/v1.0-a2ui/](https://a2ui.org/specification/v1.0-a2ui/) |
| Found at | No fixed well-known path; renderer and agent capabilities (supported catalogs, custom components) are exchanged via transport-specific handshakes, e.g. A2A Agent Cards or MCP initialization metadata |
| Acronym collisions | AG-UI |
| Last checked | 2026-09-06 |

[Present](/category/present/) A2UI (Agent to UI) is a JSON message protocol that lets an agent describe and incrementally stream a declarative, framework-neutral user interface to a client renderer. Communication is a stream of JSON objects; the agent-to-renderer protocol defines four message types — createSurface, updateComponents, updateDataModel, and deleteSurface — and the renderer maps abstract component descriptions (Card, Button, TextField, etc.) onto its own native widgets (Flutter, Angular, Lit, React, SwiftUI, or plain web components) [[1]](#ref-1). The core design goal is safety: agents can only reference components from a client-defined, pre-approved 'catalog,' so a UI payload is 'safe like data, but expressive like code' rather than executable code [[2]](#ref-2).

## Overview
A2UI does not define its own transport. It is explicitly transport-agnostic and is documented with named bindings for three carriers: AG-UI (described as A2UI's 'standard transport binding'), the A2A protocol (via a dedicated A2A extension spec), and MCP (carried over tool calls, tool outputs, or resource subscriptions), plus generic support for SSE+JSON-RPC, WebSockets, and REST [[1]](#ref-1). It solves the problem of agents needing to present rich, interactive interfaces — especially remote agents or agents running across a trust boundary — without shipping arbitrary executable code to the client [[2]](#ref-2). It does not itself specify authentication, payment, or discovery of an agent's existence; those are left to whichever transport (AG-UI, A2A, MCP) carries it.

Current state (as of 2026-09-05): the project describes itself as an 'early stage public preview.' The production-recommended version is v0.9.1 (a patch on the stable v0.9 family); v1.0 is a release candidate adding bidirectional typed function calls and single-message UI instantiation; v0.8 is legacy [[2]](#ref-2). The canonical repository, github.com/a2ui-project/a2ui, carries an Apache-2.0 license and Google LLC copyright headers, and the spec site's own 'view source' link resolves to that same repository [[1]](#ref-1)[[2]](#ref-2). Reference renderers exist for Flutter and web frameworks (Lit, Angular, React), with a visual 'A2UI Composer' and a multi-renderer 'A2UI Theater' demo; the AG-UI project ships an a2ui-toolkit package and CopilotKit has added catalog-forwarding integration, indicating active cross-project use rather than a single-vendor demo [[3]](#ref-3).

What is disputed or unknown: whether A2UI should be classified as a single-vendor (Google) spec or something closer to a vendor-consortium is judgment-dependent — the code and copyright are Google's, but the working GitHub org name ('a2ui-project') and the AG-UI/CopilotKit integration suggest broader de facto involvement. AG-UI's own docs (fetched 2026-09-05) still point to github.com/google/A2UI rather than the current a2ui-project org, an unresolved naming/rename inconsistency. No independent adoption count exists; observed ecosystem activity (16.3k GitHub stars, AG-UI/CopilotKit integration, multiple demo renderers) has not been converted into a documented probe run, so adoption here is 'observed,' not 'measured.'

## Discovery and probe

No fixed well-known path; renderer and agent capabilities (supported catalogs, custom components) are exchanged via transport-specific handshakes, e.g. A2A Agent Cards or MCP initialization metadata

```
GET {endpoint} — the AG-UI, A2A, or MCP endpoint the agent exposes; inspect its handshake/Agent Card/initialization payload
parse:     Presence of an A2UI catalogId/capability declaration in the handshake metadata, or a createSurface/updateComponents/updateDataModel/deleteSurface message in the response stream
on absent: No A2UI capability declared; the agent returns only text or opaque structured JSON, not a declarative UI surface
```

Not probed live: no-fixed-path. A2UI is carried inside an AG-UI, A2A or MCP session; no fixed path.

## History
- 2026-09-05 — seeded from Exa Agent research run
- 2026-09-06 — verified against a2ui.org v1.0 spec and github.com/a2ui-project/a2ui

## Instances

- [AG-UI / CopilotKit (names AG-UI as A2UI's standard transport binding; ships an a2ui-toolkit package and catalog-forwarding integration)](https://docs.ag-ui.com/introduction) · Observed 2026-09-05 · service
- [A2UI Theater (Lit/React/Angular streaming demo renderers)](https://a2ui-composer.ag-ui.com/theater) · Observed 2026-09-05 · service
- [A2UI Composer (visual JSON editor)](https://a2ui-project.github.io/composer/) · Observed 2026-09-05 · service
- [Google Maps Agentic UI Toolkit (A2UI)](https://github.com/googlemaps/a2ui) · Observed 2026-05-14 · service
- [ANGULARarchitects A2UI/AG-UI integration](https://www.angulararchitects.io/en/blog/integrating-a2ui-with-ag-ui-in-angular/) · Observed 2026-05-01 · business
- [CopilotKit](https://www.copilotkit.ai/blog/a2ui-whats-new-in-google-generative-ui-spec) · Observed 2026-04-17 · service
- [Oracle Open Agent Spec](https://www.copilotkit.ai/blog/reusable-agents-meet-generative-uis) · Observed 2026-03-12 · business

Every instance with its source is listed on the [instances page](/instances/).

## See also

- Not to be confused with: AG-UI

## References

- A2UI Protocol v1.0 spec text (Status: Candidate, Created Nov 20 2025, Last Updated Jun 8 2026) defines a streaming JSON UI protocol with four agent-to-renderer message types (createSurface, updateComponents, updateDataModel, deleteSurface) and named transport bindings for AG-UI, A2A, and MCP. — [https://a2ui.org/specification/v1.0-a2ui/](https://a2ui.org/specification/v1.0-a2ui/) (2026-06-08) VERIFIED
- Canonical repo github.com/a2ui-project/a2ui: Apache-2.0 license, Google LLC copyright headers, README states current status 'Early stage public preview' with v0.9.1 as the current production release, v1.0 a release candidate, v0.8 legacy; renderers/host frameworks listed are Web and Flutter, with Lit/Angular/React renderer demos. — [https://github.com/a2ui-project/a2ui](https://github.com/a2ui-project/a2ui) (2026-09-05) VERIFIED
- AG-UI's own documentation lists A2UI as a supported 'Generative UI, declarative' spec and names AG-UI as A2UI's standard transport binding, but still links A2UI to github.com/google/A2UI rather than the current a2ui-project org. — [https://docs.ag-ui.com/introduction](https://docs.ag-ui.com/introduction) (2026-09-05) VERIFIED

Disputed: Two GitHub locations are both cited for A2UI: the canonical 'View source of this page' link on a2ui.org points to a2ui-project/a2ui, but AG-UI's own docs (fetched 2026-09-05) still link A2UI to github.com/google/A2UI. This looks like an org rename or fork that the AG-UI docs have not caught up with, not a governance dispute, but it is unresolved which is authoritative going forward.

[JSON](/data/protocols/a2ui.json) · [Markdown](/protocols/a2ui/index.md)
