Comes with OpenDesigner
Answers that show your interface
Smart UI makes your assistant answer by rendering your own components instead of plain text. Ask it for flights and get a list you can book, drawn with your tokens and checked before it shows.
It comes with OpenDesigner. Nothing separate to install, and it stays off until you ask for it or say yes when OpenDesigner offers it.
Add it to your assistantHow it works
26
parts an answer can use, from the component library.
6
jobs they're sorted into: answer, data, choose, act, confirm and media.
69
shared test cases. The Python and browser validators must answer each one the same way.
3
design systems in this demo. Same answers, different tokens.
Counted from the repository when this page was built.
01How it works
From a message to a screen, in six steps.
The model picks a part and fills in words and numbers. It never picks a colour, a size or a link.
- 01
Scope
It reads your repo: what the product is, who uses it, where the assistant lives, your framework, your tokens, and the actions your API can take. It proposes what the assistant should answer with (for a travel app: flight results, a fare comparison, a booking confirmation) and you confirm the list. What it can't find says "not known".
- 02
Catalog
Your confirmed parts become a catalog the model reads. It holds words and numbers, and looks only from your token names.
- 03
Select
For each message, only the two or three parts that fit go to the model. A short question gets a text answer.
- 04
Check
The answer is validated before it renders. A mistake comes back to the model as an error it can fix.
- 05
Show
<od-surface>, a plain HTML element, draws the part from your library and yourtokens.css. It works in React, Vue, Svelte or plain HTML. - 06
Audit
Every part is rendered in every state at phone and desktop sizes, at 200% text, in dark mode and right to left, and checked against the accessibility floors.
02The parts
26 parts, each one a library component.
They work in your product with or without the assistant. Your scope step keeps only the ones you need.
03The rules
What every answer has to pass.
A mistake goes back to the model as an error it can fix. Nothing half-checked reaches the screen.
Text when text is enough
"When does check-in open?" gets a sentence, not a card.
One part per answer
Unless the person asked for more.
Changes wait for a tap
Book, pay, send and delete are buttons. Pressing one asks first. The model can't press it.
Nothing off-system
No colours, sizes, styles, HTML or links outside your allow-list. Unknown parts are refused, not dropped.
Accessibility floors
AA contrast, 24 px targets (44 px for actions that change data), visible focus, one polite announcement, reduced motion, and no two buttons with the same name.
Honest numbers
A number shown must be in the data the assistant was given. Missing stays missing.
Your look wins
Inside Claude or ChatGPT, the host's look applies only if you turn it on.
04Where it runs
What we ran, and what we haven't yet.
Your own product, any framework
- How
<od-surface>, a plain custom element- Tested
- Yes, in Chromium, in two systems
Agents that speak A2UI v1.0
- How
- The catalog and the renderer
- Tested
- Messages and catalog pass A2UI's own schemas. Not tried with another A2UI renderer yet
Claude, ChatGPT and other MCP Apps hosts
- How
show_uiin the OpenDesigner MCP server- Tested
- Against a simulated host. Not tried in Claude or ChatGPT yet
Anywhere with no interface
- How
- The same answer as plain text
- Tested
- Yes
Not tried yet
- Claude Desktop, claude.ai and ChatGPT with the MCP server. The view passes a simulated host; real hosts are known to differ.
- Other A2UI renderers (the Lit, React and Flutter ones) and CopilotKit.
- A real screen reader. The audit checks names, roles and the live region, which is what one reads, but not how it sounds.
05Read more
Try it on your own assistant.
It needs an OpenDesigner system first. The five-question sketch takes a few minutes.
Smart UI, explained
What it does, the rules it keeps and what you get.
Read the conceptAdd it to your assistant
Scope your repo, confirm the parts, write the catalog and check each answer.
Open the quickstartWhere it runs
Your own product, A2UI v1.0, and MCP Apps hosts, with what was tested in each.
See the adapters