Skip to main content
A2UI lets an agent return rich, interactive UI — cards, forms, row/column layouts — rendered natively by the frontend, instead of plain text only. It suits naturally visual answers: status cards, summaries, option lists, and small forms.
A2UI needs the optional component package: pip install "veadk-python[a2ui]".

Project setup

Complete model configuration and use a tool-capable model with the ADK runtime. Create the files below; use the next example for agent.py and put from . import agent in __init__.py

Enable

Set enable_a2ui=True when creating the agent, and it can reply with UI when appropriate. It uses a built-in basic component set by default (card, text, button, divider, and other common components):
agent.py
The model decides whether to return UI based on the instruction — stating when to use UI works best.

See it rendered

Run from the parent directory of agents:
Select ui_agent and ask for three tasks displayed as cards. A successful response includes a structured card. If only text appears, check whether the model called the A2UI tool and whether the frontend recognized its components. Models do not guarantee UI output on every turn A2UI is rendered by the frontend. Launch VeADK Frontend and chat with the agent to see the returned cards and other components.

Custom components

Beyond the built-in set, you can add your own components (a revenue chart, an order card, …). A custom component has two parts:
  • Backend: declare a component catalog that tells the model which components are available;
  • Frontend: provide a renderer for each component.
Pass your catalog to the agent’s a2ui_catalog to enable it. For the frontend renderer, see VeADK Frontend · Add enterprise components.
Components without a renderer fall back to a collapsible JSON view, so a mismatch never breaks the UI.

Catalog example

Save this script as create_catalog.py and run it in agents/ui_agent. It adds RevenueChart to the basic catalog and writes catalog.json, which the agent discovers at startup
create_catalog.py
Replace the sample catalog ID with your own identifier. Register a matching RevenueChart renderer in Frontend and rebuild it. A catalog does not install frontend components; the JSON fallback for unknown components is diagnostic output, not successful component rendering
Last modified on September 19, 2026