The Basic Catalog that ships with A2UI is intentionally minimal — it is designed to be quickly implementable across many different renderers. Most production applications will outgrow it fast and benefit from defining a catalog that reflects their own design system. When you control the catalog, the agent generates UI from exactly the components you already trust, with no translation layer in between.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/a2ui-project/a2ui/llms.txt
Use this file to discover all available pages before exploring further.
Why Define Your Own Catalog?
Every A2UI surface is driven by a Catalog: a JSON Schema file that tells the agent which components, functions, and themes it is allowed to use. Replacing or extending the Basic Catalog with your own offers three concrete benefits:Design System Alignment
Restrict the agent to your application’s exact visual language — your buttons, your typography, your spacing — rather than generic placeholders.
Security and Type Safety
You register entire catalogs with your client application. Only trusted, validated components can ever be rendered.
No Mappers Needed
Build catalogs that directly reflect your client’s design system. You never need an adapter that maps a generic catalog to your components.
Agent Precision
A narrower, well-described catalog gives the agent better signal about when and how to use each component, improving output quality.
The Basic Catalog is just one example implementation. It is intentionally sparse so that it is easy to support across many renderers and platforms.
How It Works
The lifecycle from catalog definition to rendered UI has five stages:Define the Catalog
Create a catalog definition — a JSON Schema listing the components, functions, and themes your application supports. This is the contract between the agent and your renderer.
Register the Catalog
Register the catalog and its corresponding component implementations (renderers) with your client application via the renderer’s configuration API (e.g.,
A2UI_RENDERER_CONFIG in Angular, or the provider catalog prop in React/CopilotKit).Announce Support
The client informs the agent which catalogs it supports via the
supportedCatalogIds field in the initial handshake. The agent will only generate components from catalogs it knows the client can render.Agent Selects Catalog
For each UI surface, the agent chooses one of the announced catalogs and declares it via the
catalogId field inside the surface-creation message (e.g., createSurface in v0.9).Catalog JSON Schema Structure
A catalog definition is a JSON Schema document. At minimum it contains a stable identifier, a list of component definitions, optional function definitions, and optional theme fields.| Field | Required | Description |
|---|---|---|
catalogId | ✅ | A stable, unique handle the agent uses to target this catalog. |
components | ✅ | Map of component names to their JSON Schema definitions. |
functions | Optional | Client-side functions the agent can invoke (e.g., open a panel, trigger navigation). |
| Theme fields | Optional | Arbitrary theme data passed through createSurface. See Theming. |
Implementation Guide
- Web (Lit / Angular / React)
- Flutter
To implement your own catalog on the web:React (
- Create a JSON Schema containing your component definitions (see structure above).
- Create
Componentobjects — one per component definition — that map the schema name to a framework-specific renderer (a Lit element, an Angular component, or a React component). - Create a
Catalogobject that groups the component objects, the schema, and any action handlers together. - Register the catalog with the renderer’s configuration:
@a2ui/angular/v0_9):@a2ui/react/v0_9) with CopilotKit:Detailed per-framework implementation guides for standalone (non-CopilotKit) usage are coming soon. For CopilotKit-based React flows, see the A2UI with Any Agent Framework guide.
Security Considerations
Because the agent produces the component names and properties that your renderer will mount, treat catalog registration as a security boundary. Follow these three practices:Allowlist components
Register only the components your application explicitly supports. Do not expose components that offer dangerous capabilities (for example, components that execute arbitrary scripts or make unauthenticated network requests) unless strictly controlled.
Validate properties
Always validate component properties from agent messages against expected type constraints before passing them to your renderer. The Zod schemas generated from your catalog definition are a natural place to do this.
Next Steps
Theming & Styling
Customize the look and feel of your catalog’s components.
Component Reference
Explore standard component types available for reuse in the Basic Catalog.
A2UI with Any Agent Framework
Wire your catalog to an agent using CopilotKit and AG-UI.
Client Setup
Install and configure the renderer for your platform.