Notes
Research
The open catalogs can draw a button. They do not yet treat “ask only when something is missing, name the handler, and confirm before acting” as components. That is the gap Latch fills.
A2UI v0.9.1 already puts agentDisplayName on a surface. AI Elements already has Confirmation and Sources. assistant-ui already has an approval card. Latch is not a claim that those screens do not exist. It is the combination, as a catalog an agent can address.
| Project | What it is | Confirm | Ask once | Misroute | Handler | Citation | Catalog |
|---|---|---|---|---|---|---|---|
| A2UI | Protocol. The client renders an agreed catalog from JSONL. | Button, Modal, CheckBox. No review that stays confirmed. | TextField and ChoicePicker. No single missing fact that collapses. | Not in the basic catalog. | agentDisplayName on the surface theme. Attribution, not a correction. | No source chip. | Yes. Custom catalogs are the point. |
| AI SDK + AI Elements | Streaming hooks, plus React you copy into the repo. | Confirmation, tied to tool approval. Approve or deny. | You build the question. | No. | No handler. | Sources, from message parts. | You own the files. Not an A2UI catalog. |
| CopilotKit | Agent runtime and generative UI over AG-UI. | useHumanInTheLoop pauses on a render you write. | The tool you register. | Whatever the app does. | Copilot chrome. | Whatever you render. | You own the render function. |
| assistant-ui | Headless chat primitives on shadcn. | ApprovalCard. Often allow once, always, or deny. | You build the question. | No. | The assistant message. | Varies. | You compose the primitives. |
| OpenAI Apps SDK | Optional UI inside ChatGPT, sandboxed over MCP. | The host, plus your widget. | Your widget. | No standard misroute. | The plugin. | No standard chip. | A sandboxed widget, not your system. |
| Thesys C1 | A generative UI API. The model streams components. | Forms and actions the model emits. | The model decides what to ask. | No misroute log. | No named, correctable handler. | No. | Their set, themed. |
| Latch | An A2UI catalog for the judgment around an action. | ConfirmCard. Facts, checks, a confirmed state. | ClarifyForm. One question, then a row. | HandoffCard logs a misroute. | Named handler, and a way to change it. | Citation on the claim. | latch://catalog/v1 |
What this catalog adds
- A wrong handoff is a logged misroute, not a silent swap.
- A clarify asks one missing fact and then gets out of the way.
- A confirm is a review of the facts, with a state after the person agrees.
- The handler is named, and the person can correct it.
- A citation sits on the claim, as a chip, not a footer of links.
Sources
- A2UI
- A2UI protocol v0.9.1
- A2UI protocol v0.8
- A2UI component gallery
- A2UI message reference
- google/A2UI
- AI Elements
- AI Elements Confirmation
- AI Elements Sources
- AI Elements Reasoning
- AI SDK human-in-the-loop
- CopilotKit human-in-the-loop
- assistant-ui Approval card
- assistant-ui
- OpenAI Apps SDK
- Thesys C1
The longer note, with the same table, is in docs/research.md in the repository.