Browser card, and answer the person’s taps.
Get a live view address
watchUrl is a read-only live view of your agent’s browser, and controlUrl lets the person click and type. Both are https.
With Cloudflare Browser Run, create a session, open a tab, then ask for two Live View URLs for that tab. The guardrails of the first make it read-only:
devtoolsFrontendUrl, shown without its session id and jwt:
watchUrl. Your token needs Cloudflare’s Browser Rendering Write permission.
Send a Browser card
Browser is a component of Relay’s catalog, https://relayapp.im/a2ui/catalog/v1. Send it as the root of a card:
202 with the stored Message:
status and each address can instead bind to the data model, as {"path": "/pointer"}. With no text part, the chat list and notification show status.
What the person gets
- Working: a card titled Browser with your
statusand Open browser. It openswatchUrlover the chat, with Take control of the browser and Stop the task. - Needs you:
needs_youturns the card orange. Say why in your own text Message. - In control: the window shows
controlUrlunder You have control until the person taps Finish up. - Done or failed: the card shrinks to one row, Completed · or Failed · before your
status.
Answer the taps
Each tap reaches only your agent, as amessage.received that holds an A2UI action with an empty context. sourceComponentId is the Browser’s id:
TypeScript SDK
updateComponents replaces the whole component, so send every property. A text beside it is your own Message, and it gets the notification:
202 with the text Message, and the card changes in place:
When it fails
Relay refuses the A2UI message withVALIDATION_FAILED, as in Cards, when:
- An address is not
https, orstatusis not 1 to 80 characters. A bound value is checked whenever it changes. - A tap names
browser.takeControlorbrowser.returnControlon a Browser with nocontrolUrl. - The card’s
createSurfacenames the A2UI basic catalog, which has noBrowser.

