Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ If you need help, consider asking for advice on the [discussion board].
[CHANGELOG]: ../CHANGELOG.md
[CLA]: https://cla.developers.google.com/
[Contributors Guide]: ../CONTRIBUTING.md
[discussion board]: https://github.com/google/A2UI/discussions
[discussion board]: https://github.com/a2ui-project/a2ui/discussions
[Style Guide]: ../CONTRIBUTING.md#coding-style
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
contents: write
actions: read

if: github.repository == 'google/A2UI'
if: github.repository == 'a2ui-project/a2ui'

steps:
- name: Checkout Code
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
e2e_test:
# Do not run on forked branches,
# because the test does not have access to secrets in forks.
if: github.repository == 'google/a2ui'
Comment thread
gspencergoog marked this conversation as resolved.
if: github.repository == 'a2ui-project/a2ui'
runs-on: ubuntu-latest
permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ Pick the path that matches where you want to start:
Prerequisites: Node.js 18+, [uv](https://docs.astral.sh/uv/), and a [Gemini API key](https://aistudio.google.com/apikey).

```bash
git clone https://github.com/google/A2UI.git
cd A2UI
git clone https://github.com/a2ui-project/a2ui.git
cd a2ui
export GEMINI_API_KEY="your_gemini_api_key"
cd samples/client/lit
npm run demo:restaurant
Expand Down
2 changes: 1 addition & 1 deletion agent_sdks/agent_sdk_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ Create the helper utilities to wrap JSON in transport Parts (if needed for your

### Step 5: Sample Applications

Create a simple sample (like a command-line agent or local server) to verify that the SDK works end-to-end. Refer to the reference Python samples (e.g., `samples/agent/adk/contact_lookup`) for inspiration.
Create a simple sample (like a command-line agent or local server) to verify that the SDK works end-to-end. Refer to the reference Python samples (e.g., `samples/agent/adk/restaurant_finder`) for inspiration.

> [!IMPORTANT]
> Keep the SDK idiomatic to your language. Don't force Python-isms if it doesn't make sense (e.g., use builder patterns in Java/Kotlin or macros in C++ if they are more ergonomic).
Expand Down
13 changes: 4 additions & 9 deletions docs/ecosystem/a2ui-in-the-world.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ ADK integrated the A2UI v0.8 basic catalog to automatically render spec-complian

- **Built-in rendering**: ADK Web renders A2UI components natively in the dev UI.
- **A2A integration**: A2UI messages are converted between A2A DataPart metadata and ADK events.
- **Agent SDK**: The [A2UI Python agent SDK](https://github.com/google/A2UI/tree/main/agent_sdks/python) provides an ADK extension for generating A2UI from agents.
- **Agent SDK**: The [A2UI Python agent SDK](https://github.com/a2ui-project/a2ui/tree/main/agent_sdks/python) provides an ADK extension for generating A2UI from agents.

**Try it:**

Expand Down Expand Up @@ -165,17 +165,12 @@ The A2UI community is building exciting projects:

### Open Source Examples

- **Restaurant Finder** ([samples/agent/adk/restaurant_finder](https://github.com/google/A2UI/tree/main/samples/agent/adk/restaurant_finder))
- **Restaurant Finder** ([samples/agent/adk/restaurant_finder](https://github.com/a2ui-project/a2ui/tree/main/samples/agent/adk/restaurant_finder))
- Table reservation with dynamic forms
- Gemini-powered agent
- Full source code available

- **Contact Lookup** ([samples/agent/adk/contact_lookup](https://github.com/google/A2UI/tree/main/samples/agent/adk/contact_lookup))
- Search interface with results list
- A2A agent example
- Demonstrates data binding

- **Component Gallery** ([samples/client/angular - gallery mode](https://github.com/google/A2UI/tree/main/samples/client/angular))
- **Component Gallery** ([samples/client/angular - gallery mode](https://github.com/a2ui-project/a2ui/tree/main/samples/client/angular))
- Interactive showcase of all components
- Live examples with code
- Great for learning
Expand All @@ -202,4 +197,4 @@ For more information, see the following resources:

---

**Using A2UI in production?** Share your story on [GitHub Discussions](https://github.com/google/A2UI/discussions).
**Using A2UI in production?** Share your story on [GitHub Discussions](https://github.com/a2ui-project/a2ui/discussions).
19 changes: 9 additions & 10 deletions docs/ecosystem/community.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,15 @@ A2UI is an open-source project licensed under Apache 2.0. Contributions are welc

Built something with A2UI? Show it off!

The best way to share your work is to **post in [GitHub Discussions](https://github.com/google/A2UI/discussions)** with a short description, a link to your code, and a demo video (4 minutes or less). Notable projects are featured in the docs and release notes.
The best way to share your work is to **post in [GitHub Discussions](https://github.com/a2ui-project/a2ui/discussions)** with a short description, a link to your code, and a demo video (4 minutes or less). Notable projects are featured in the docs and release notes.

**Community-built renderers** are listed on the [Ecosystem Renderers](renderers.md) page — check there for community implementations and instructions for adding your own.

**Official samples** in the repo are a great reference for what good A2UI projects look like:

- [Restaurant Finder](https://github.com/google/A2UI/tree/main/samples/agent/adk/restaurant_finder) — ADK agent with dynamic forms.
- [Contact Lookup](https://github.com/google/A2UI/tree/main/samples/agent/adk/contact_lookup) — search UI with data binding.
- [Angular client](https://github.com/google/A2UI/tree/main/samples/client/angular) — gallery + restaurant client.
- [Lit shell](https://github.com/google/A2UI/tree/main/samples/client/lit/shell) — minimal web component client.
- [Restaurant Finder](https://github.com/a2ui-project/a2ui/tree/main/samples/agent/adk/restaurant_finder) — ADK agent with dynamic forms.
- [Angular client](https://github.com/a2ui-project/a2ui/tree/main/samples/client/angular) — gallery + restaurant client.
- [Lit shell](https://github.com/a2ui-project/a2ui/tree/main/samples/client/lit/shell) — minimal web component client.

## Project Partners

Expand Down Expand Up @@ -58,19 +57,19 @@ To stay informed about project updates:

## Ways to Contribute

**[github.com/google/A2UI](https://github.com/google/A2UI)**
**[github.com/a2ui-project/a2ui](https://github.com/a2ui-project/a2ui)**

- **Report Issues**: Found a bug? [Open an issue](https://github.com/google/A2UI/issues).
- **Report Issues**: Found a bug? [Open an issue](https://github.com/a2ui-project/a2ui/issues).
- **Build Renderers**: See the [roadmap](../roadmap.md) for planned frameworks.
- **Share Examples**: Post with `#A2UI` on X/LinkedIn, start a [discussion](https://github.com/google/A2UI/discussions).
- **Share Examples**: Post with `#A2UI` on X/LinkedIn, start a [discussion](https://github.com/a2ui-project/a2ui/discussions).
- **Improve Docs**: PRs welcome in the `docs/` directory.

## Questions?

If you have questions:

- Check the [documentation](../introduction/what-is-a2ui.md).
- Search [GitHub Discussions](https://github.com/google/A2UI/discussions).
- Ask in [GitHub Issues](https://github.com/google/A2UI/issues).
- Search [GitHub Discussions](https://github.com/a2ui-project/a2ui/discussions).
- Ask in [GitHub Issues](https://github.com/a2ui-project/a2ui/issues).

Thank you for being part of the A2UI community!
10 changes: 5 additions & 5 deletions docs/ecosystem/renderers.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ These projects are not directly A2UI renderers but are closely related and do su

### Highlights

**easyops-cn/a2ui-sdk** (`@a2ui-sdk/react`) is the most fully-featured community React renderer, with 11 published versions, Radix UI primitives, Tailwind CSS styling, and a dedicated docs site. It was [announced on the A2UI discussions](https://github.com/google/A2UI/discussions/489). For the official A2UI React renderer, see [`@a2ui/react`](https://www.npmjs.com/package/@a2ui/react).
**easyops-cn/a2ui-sdk** (`@a2ui-sdk/react`) is the most fully-featured community React renderer, with 11 published versions, Radix UI primitives, Tailwind CSS styling, and a dedicated docs site. It was [announced on the A2UI discussions](https://github.com/a2ui-project/a2ui/discussions/489). For the official A2UI React renderer, see [`@a2ui/react`](https://www.npmjs.com/package/@a2ui/react).

**lmee/A2UI-Android** fills an important gap — it's currently the only Jetpack Compose renderer, covering Android 5.0+ with 20+ components, data binding, and accessibility support.

Expand All @@ -61,12 +61,12 @@ If you have built an A2UI renderer, submit it to be listed here.

To submit a renderer, follow these steps:

1. **Fork** the [google/A2UI](https://github.com/google/A2UI) repository
1. **Fork** the [a2ui-project/a2ui](https://github.com/a2ui-project/a2ui) repository
2. **Edit** this file (`docs/ecosystem/renderers.md`) — add a row to the Community Renderers table with your renderer's name, platform, npm package (if any), version support, and a link to the source
3. **Open a PR** against `google/A2UI` with a short description of your renderer
4. **Post in [GitHub Discussions](https://github.com/google/A2UI/discussions)** — let the community know what you built! A short demo video goes a long way.
3. **Open a PR** against `a2ui-project/a2ui` with a short description of your renderer
4. **Post in [GitHub Discussions](https://github.com/a2ui-project/a2ui/discussions)** — let the community know what you built! A short demo video goes a long way.

Need inspiration? Browse the **[community samples](https://github.com/google/A2UI/tree/main/samples)** in the repo — these cover Angular, Lit, and ADK-based agents and are a good starting point.
Need inspiration? Browse the **[community samples](https://github.com/a2ui-project/a2ui/tree/main/samples)** in the repo — these cover Angular, Lit, and ADK-based agents and are a good starting point.

### What makes a good community renderer?

Expand Down
8 changes: 4 additions & 4 deletions docs/guides/a2ui-in-mcp-apps.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ This guide shows you how to serve rich, interactive A2UI interfaces within [MCP

## Quick Start: Run the Sample

For detailed instructions on how to run this sample, please refer to the [README.md](https://github.com/google/A2UI/blob/main/samples/mcp/a2ui-in-mcpapps/README.md).
For detailed instructions on how to run this sample, please refer to the [README.md](https://github.com/a2ui-project/a2ui/blob/main/samples/mcp/a2ui-in-mcpapps/README.md).

## Architecture Overview

Expand Down Expand Up @@ -153,7 +153,7 @@ To build your own MCP App with A2UI capabilities, follow these steps:
MCP Apps are typically delivered as a single HTML resource from the MCP Server. To achieve this with a modern framework like Angular or React:

1. Build your application normally to produce static assets (`index.html`, `.js`, `.css`).
2. Use a post-build script (like the [`inline.js`](https://github.com/google/A2UI/blob/main/samples/mcp/a2ui-in-mcpapps/server/apps/src/inline.js) script in the sample) to read the `index.html` and replace external `<script src="...">` and `<link rel="stylesheet" href="...">` tags with inline `<script>` and `<style>` tags containing the actual file contents.
2. Use a post-build script (like the [`inline.js`](https://github.com/a2ui-project/a2ui/blob/main/samples/mcp/a2ui-in-mcpapps/server/apps/src/inline.js) script in the sample) to read the `index.html` and replace external `<script src="...">` and `<link rel="stylesheet" href="...">` tags with inline `<script>` and `<style>` tags containing the actual file contents.
3. This produces a self-contained HTML file that can be safely loaded via `srcdoc` in the restricted iframe.

> [!TIP]
Expand Down Expand Up @@ -189,7 +189,7 @@ Your inlined app is now running in the sandbox. To leverage A2UI:
1. **Include the A2UI Angular/Lit libraries** in your app's bundle.
2. **Define a communication contract** with your Host to interact with the MCP Server.
3. When you receive the response from the Host, look for the `application/a2ui+json` mimeType in the content.
4. Parse the JSON text and pass it to the A2UI [`MessageProcessor`](https://github.com/google/A2UI/blob/main/renderers/angular/src/v0_8/data/processor.ts).
4. Parse the JSON text and pass it to the A2UI [`MessageProcessor`](https://github.com/a2ui-project/a2ui/blob/main/renderers/angular/src/v0_8/data/processor.ts).

**Example: Fetching and Rendering A2UI**

Expand Down Expand Up @@ -245,7 +245,7 @@ To handle interactivity within the rendered A2UI surface, your MCP App must capt
**Example: Handling User Actions**

```typescript
// Subscribing to A2UI events in the MCP App ([main.ts](https://github.com/google/A2UI/blob/main/samples/mcp/a2ui-in-mcpapps/server/apps/src/src/main.ts))
// Subscribing to A2UI events in the MCP App ([main.ts](https://github.com/a2ui-project/a2ui/blob/main/samples/mcp/a2ui-in-mcpapps/server/apps/src/src/main.ts))
this.processor.events.subscribe(async event => {
if (!event.message.userAction) return;

Expand Down
8 changes: 4 additions & 4 deletions docs/guides/a2ui_over_mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
This guide shows you how to serve **rich, interactive A2UI interfaces** from an **MCP server** using Tools and Embedded Resources. By the end, you'll have a working MCP server that returns A2UI components to any MCP-compatible client.

<video width="100%" height="auto" controls playsinline style="display: block; aspect-ratio: 16/9; object-fit: cover; border-radius: 8px; margin-bottom: 24px;">
<source src="https://raw.githubusercontent.com/google/A2UI/main/docs/assets/guides-a2ui-over-mcp-tour.mp4" type="video/mp4">
<source src="https://raw.githubusercontent.com/a2ui-project/a2ui/main/docs/assets/guides-a2ui-over-mcp-tour.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>

Expand All @@ -21,8 +21,8 @@ Before diving into the protocol details, let's get a working example running. Th

```bash
# Clone the repo (if you haven't already)
git clone https://github.com/google/A2UI.git
cd A2UI/samples/mcp/a2ui-over-mcp-recipe
git clone https://github.com/a2ui-project/a2ui.git
cd a2ui/samples/mcp/a2ui-over-mcp-recipe

# Start the MCP server (SSE transport on port 8000)
uv run .
Expand Down Expand Up @@ -75,7 +75,7 @@ You will see a premium, responsive dual-column interface where the left column r

![Dynamic Recipe Studio demo showing selection form on the left and dynamic recipe card generation on the right](../assets/recipe_sample.gif)

See all samples at [`samples/mcp/`](https://github.com/google/A2UI/tree/main/samples/mcp).
See all samples at [`samples/mcp/`](https://github.com/a2ui-project/a2ui/tree/main/samples/mcp).

## How It Works

Expand Down
26 changes: 13 additions & 13 deletions docs/guides/client-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ Integrate A2UI into your application using the renderer for your platform.

## Renderers

| Renderer | Platform | v0.8 | v0.9 | Status |
| ---------------------------------------------------------------------------------- | ------------------ | ---- | ---- | ------------------ |
| **[React](https://github.com/google/A2UI/tree/main/renderers/react)** | Web | ✅ | ✅ | ✅ Stable |
| **[Lit (Web Components)](https://github.com/google/A2UI/tree/main/renderers/lit)** | Web | ✅ | ✅ | ✅ Stable |
| **[Angular](https://github.com/google/A2UI/tree/main/renderers/angular)** | Web | ✅ | ✅ | ✅ Stable |
| **[Flutter (GenUI SDK)](https://docs.flutter.dev/ai/genui)** | Mobile/Desktop/Web | ✅ | ✅ | ✅ Stable |
| **Jetpack Compose** | Android | — | — | 🚧 Planned Q2 2026 |
| Renderer | Platform | v0.8 | v0.9 | Status |
| ---------------------------------------------------------------------------------------- | ------------------ | ---- | ---- | ------------------ |
| **[React](https://github.com/a2ui-project/a2ui/tree/main/renderers/react)** | Web | ✅ | ✅ | ✅ Stable |
| **[Lit (Web Components)](https://github.com/a2ui-project/a2ui/tree/main/renderers/lit)** | Web | ✅ | ✅ | ✅ Stable |
| **[Angular](https://github.com/a2ui-project/a2ui/tree/main/renderers/angular)** | Web | ✅ | ✅ | ✅ Stable |
| **[Flutter (GenUI SDK)](https://docs.flutter.dev/ai/genui)** | Mobile/Desktop/Web | ✅ | ✅ | ✅ Stable |
| **Jetpack Compose** | Android | — | — | 🚧 Planned Q2 2026 |

For more see all [A2UI Renderers](../reference/renderers.md) and [Community A2UI Renderers](../ecosystem/renderers.md).

Expand Down Expand Up @@ -44,7 +44,7 @@ Once installed, you can use the renderer in your app. The Lit renderer uses:
- **`<a2ui-surface>` component**: Renders surfaces in your app.
- **Lit Signals**: Provides reactive state management for automatic UI updates.

**See working example:** [Lit shell sample](https://github.com/google/a2ui/tree/main/samples/client/lit/shell) — Check its README for detailed run instructions.
**See working example:** [Lit shell sample](https://github.com/a2ui-project/a2ui/tree/main/samples/client/lit/shell) — Check its README for detailed run instructions.

## Angular

Expand Down Expand Up @@ -82,7 +82,7 @@ export const appConfig: ApplicationConfig = {
};
```

**See working example:** [Angular samples](https://github.com/google/a2ui/tree/main/samples/client/angular)
**See working example:** [Angular samples](https://github.com/a2ui-project/a2ui/tree/main/samples/client/angular)

### Streaming

Expand All @@ -105,7 +105,7 @@ The React renderer provides:
- **`<A2UISurface>` component**: Renders A2UI surfaces in your React app
- **`useA2UI()` hook**: Accesses the message processor from any component

**See working example:** [React shell](https://github.com/google/A2UI/tree/main/samples/client/react/shell)
**See working example:** [React shell](https://github.com/a2ui-project/a2ui/tree/main/samples/client/react/shell)

## Flutter (GenUI SDK)

Expand All @@ -131,7 +131,7 @@ Common transport options:
- **WebSockets**: Bidirectional real-time communication
- **A2A Protocol**: Standardized agent-to-agent communication with A2UI support

See [samples/client/lit/shell/client.ts](https://github.com/google/a2ui/tree/main/samples/client/lit/shell/client.ts) for an example of using the A2A protocol client.
See [samples/client/lit/shell/client.ts](https://github.com/a2ui-project/a2ui/tree/main/samples/client/lit/shell/client.ts) for an example of using the A2A protocol client.

**See:** [Transports guide](../concepts/transports.md)

Expand All @@ -144,7 +144,7 @@ When users interact with A2UI components (clicking buttons, submitting forms, et
3. Sends the action to the agent
4. Processes the agent's response messages

See the `@a2uiaction` event handler in `#maybeRenderData` in [samples/client/lit/shell/app.ts](https://github.com/google/a2ui/tree/main/samples/client/lit/shell/app.ts) for an example of handling button clicks and form submissions.
See the `@a2uiaction` event handler in `#maybeRenderData` in [samples/client/lit/shell/app.ts](https://github.com/a2ui-project/a2ui/tree/main/samples/client/lit/shell/app.ts) for an example of handling button clicks and form submissions.

## Error Handling

Expand All @@ -155,7 +155,7 @@ Common errors to handle:
- **Invalid Data Path**: Check data model structure and JSON Pointer syntax.
- **Schema Validation Failed**: Verify message format matches A2UI specification.

See `try...catch` blocks in `#sendMessage` in [samples/client/lit/shell/app.ts](https://github.com/google/a2ui/tree/main/samples/client/lit/shell/app.ts) for examples of handling communication errors.
See `try...catch` blocks in `#sendMessage` in [samples/client/lit/shell/app.ts](https://github.com/a2ui-project/a2ui/tree/main/samples/client/lit/shell/app.ts) for examples of handling communication errors.

## Next Steps

Expand Down
Loading
Loading