A live Claude agent composing A2UI surfaces at runtime, rendered to a screen
and to speech at the same time. It needs your Anthropic API key.
The key is stored in this browser's localStorage and sent directly to
api.anthropic.com. There is no backend here — it goes nowhere else.
That also means anyone with access to this browser can read it, so use a key you
can rotate, and never ship this pattern to production: there, the call belongs
behind your own server.
Without a Deepgram key it falls back to the browser's own speech,
which has no voices on some machines and no recognition at all in Firefox.
Ask for something. Every hop shows up here with real values and where it ran.
browser
anthropic
deepgram
cloudflare
What to try
Say anything. The agent composes a surface from a catalog it was
handed — and it cannot emit a component that isn't in it, because the catalog
is compiled into the model's output schema. Not checked afterwards; ungeneratable.
Tap a row while it's still speaking. Speech stops mid-word and the
same action fires that "the second one" would have sent.
Ask for a seat. The agent picks SeatMap, which carries
requiresVisual. Switch off Screen available first and the renderer
declines to describe it rather than inventing a cabin layout.
Say "book it".PaymentConfirm carries
stakes: readback, so the amount is read back and an explicit yes is
required — whether you tapped or spoke.
Ask what card is on file. It renders and is never spoken:
spokenSensitive.