Demos
715 resultsMost Popular
CLI Start Command
Copy-paste command to clone the canonical starter
Beautiful Chat
Polished starter chat with two-pane layout and pre-wired suggestions
Agentic Chat
Natural conversation with frontend tool execution
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Headless Chat (Complete)
Full chat implementation built from scratch on useAgent
In-Chat Human in the Loop
User approves agent actions before execution
Tool Rendering
Backend agent tools rendered as UI components
Tool-Based Generative UI
Agent uses tools to trigger UI generation
Agentic Generative UI
Long-running agent tasks with generated UI
Shared State (Read + Write)
Bidirectional agent state — UI writes preferences, agent writes notes back
State Streaming
Per-token state delta streaming from agent to UI
Sub-Agents
Multiple agents with visible task delegation
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
MCP Apps
MCP server-driven UI via activity renderers
Fully Open-Ended Generative UI
Agent generates UI from an arbitrary component library
Open-Ended Generative UI (Advanced)
Sandboxed iframe UI calls back into host-defined functions
Tool Rendering: Default Catch-all
Built-in DefaultToolCallRenderer wired with no config
Tool Rendering: Custom Catch-all
Single branded wildcard renderer for every tool call
Frontend Tools
Tool defined in React, executed in the browser, invoked by the agent
Frontend Tools (Async)
Async frontend-tool handler with branded per-tool render
In-App Human in the Loop
Async frontend-tool handler resolved by an app-level approval modal
Readonly Agent Context
Frontend publishes structured read-only context to the agent via useAgentContext
Authentication
Bearer-token gate on the runtime via the V2 onRequest hook
Agent Config Object
Typed config (tone / expertise / responseLength) forwarded via provider properties
Voice Input
Speech-to-text via @copilotkit/voice with sample-audio button
Multimodal Attachments
Image and PDF uploads answered by the vision-capable gpt-4o agent
BYOC: Hashbrown
Streaming structured output via @hashbrownai/react
BYOC: json-render
Streaming structured output via @json-render/react
Agentic Chat (Reasoning)
Visible chain-of-thought during normal conversation, rendered via a custom reasoningMessage slot
Reasoning (Default Render)
Zero-config rendering of the agent's reasoning chain via CopilotKit's built-in reasoning message
Tool Rendering: Reasoning Chain
Sequential tool calls interleaved with the agent's visible reasoning chain
Declarative Generative UI (A2UI Dynamic)
Agent designs an A2UI component tree at runtime from a registered catalog
A2UI Fixed Schema (Flight Card)
Frontend owns the component tree; the agent only streams data
Gen UI Interrupt (Frontend Tool)
In-chat time-picker via useFrontendTool with an async handler that blocks until the user picks a slot — Strategy B adaptation of the LangGraph interrupt primitive
Headless Interrupt (Frontend Tool)
Time-picker popup rendered outside the chat in the app surface — headless variant of the Strategy B interrupt adaptation
CLI Start Command
Copy-paste command to clone the canonical starter
Pre-Built: CopilotChat
Vanilla CopilotChat with three starter-prompt suggestions — the minimum-viable surface for free-form chat
Chat Customization: CSS
Default CopilotChat re-themed via CopilotKitCSSProperties
Generative UI: Tool Rendering (Default)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Generative UI: Tool Rendering (Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Frontend Tools: In-app Actions
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools: Async
useFrontendTool with an async handler — agent awaits a client-side async operation (simulated notes DB query) and uses the returned result
Human In the Loop: In-chat
Time-slot picker rendered inline in the chat via `useHumanInTheLoop` — the agent requests user input, the frontend renders a TimePickerCard, and the user's choice resumes the agent.
Human in the Loop: In-app
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat, and a completion callback resolves the pending tool Promise with the user's decision
Generative UI: Tool Rendering (Custom)
Custom per-tool renderers (WeatherCard, FlightListCard) plus a wildcard catch-all for every other tool
Generative UI: Tool calls + reasoning
Per-tool renderers (WeatherCard, FlightListCard, custom catchall) interleaved with a reasoningMessage slot rendering the agent's reasoning tokens — combines reasoning-display + tool-rendering in one chat surface.
Generative UI: useComponent
Agent uses tools to trigger UI generation
Generative UI: Agent State
Agent-state-driven Gen UI — the agent plans a live step list via Command(update={steps}); the frontend subscribes through useAgent and renders the steps inside CopilotChat's messageView.children slot.
Shared State: Streaming
Per-token state delta streaming from agent to UI
Shared State: Read + Write
Bidirectional shared state — UI writes preferences via agent.setState; agent writes notes via a Command-returning tool
Shared State: Read-only
Recipe editor publishes form state via agent.setState; the agent reads the recipe context but does not mutate it (no backend tool — neutral default agent).
Sub-Agents
Multiple agents with visible task delegation
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization: Slots
Customize CopilotChat via its slot system
Headless UI: Simple
Minimum viable headless chat — useAgent + useCopilotKit dressed in shadcn/ui primitives. No tool rendering, no generative UI, just text in / text out.
Headless UI: Complete
Full headless surface — hand-rolled CopilotChat replacement that wires every render hook (useRenderTool, useDefaultRenderTool, useComponent, useRenderToolCall, useRenderActivityMessage, useSuggestions, useAttachments) on top of shadcn primitives.
Reasoning: Default
Built-in CopilotChatReasoningMessage rendering with no slot override.
Reasoning: Custom
Visible reasoning/thinking chain alongside the final answer
Human in the Loop: Interrupts
Interactive component rendered inline in the chat via the lower-level `useInterrupt` primitive — direct control over the LangGraph interrupt lifecycle
Human in the Loop: Headless Interrupts
Same interrupt(...) backend pattern as gen-ui-interrupt, but the time-picker mounts in a separate app-surface pane (left) instead of inline inside the chat — uses useHeadlessInterrupt (custom-event subscribe + manual runAgent forwardedProps.command.resume).
Declarative UI: Dynamic A2UI
Canonical A2UI BYOC — custom catalog (Card/StatusBadge/Metric/InfoRow/PrimaryButton) wired via a2ui.catalog on the provider; runtime injects the render_a2ui tool automatically
Declarative UI: Fixed A2UI
Render an A2UI tree from a fixed, server-side schema — the agent streams data into a pre-authored component tree
MCP Apps
MCP server-driven UI via activity renderers
Shared State: Frontend Context
Frontend provides read-only context to the agent via useAgentContext
Declarative UI: json-render
Streaming hierarchical JSON UI spec rendered via @json-render/react, with a Zod-validated catalog (MetricCard + PieChart + BarChart)
Beautiful Chat
Canonical polished starter chat — brand fonts, theme tokens, suggestion pills
Attachments
Image and PDF uploads via CopilotChat attachments, processed by a vision-capable agent
Authentication
Bearer-token gate via runtime onRequest hook with unauthenticated / authenticated states
Declarative UI: Hashbrown
Streaming structured output via @hashbrownai/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
Open Generative UI: Default
Agent composes UI from a registered component library — distinct from Tool Rendering, which attaches a custom renderer to a *named* backend tool. Use Open Generative UI when you want the agent to assemble UI freely from a palette you control.
Open Generative UI: Custom
Same Open Generative UI surface, with the iframe-rendered components able to call back into frontend sandbox functions (e.g., a Calculator app whose buttons trigger handlers in the host page).
Voice
Speech-to-text via @copilotkit/voice with a bundled sample audio button
Agent Config Object
Forward a typed config object (tone / expertise / response length) from the provider to the agent's dynamic system prompt
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
In-Chat Human in the Loop (Original)
User approves agent actions before execution
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat, and a completion callback resolves the pending tool Promise with the user's decision
In-Chat HITL (useHumanInTheLoop — ergonomic API)
Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
Tool Rendering
Backend agent tools rendered as UI components
Tool-Based Generative UI
Agent uses tools to trigger UI generation
Agentic Generative UI
Long-running agent tasks with generated UI
State Streaming
Per-token state delta streaming from agent to UI
Shared State (Read + Write)
Bidirectional shared state — UI writes preferences via agent.setState; agent writes notes via a Command-returning tool
Sub-Agents
Supervisor delegates to research / writing / critique sub-agents exposed as tools — each delegation appended to a live log in shared state
Beautiful Chat
Canonical polished starter chat — brand fonts, theme tokens, suggestion pills
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Headless Chat (Complete)
Full chat implementation built from scratch on useAgent
Authentication
Bearer-token gate via runtime onRequest hook with unauthenticated / authenticated states
Multimodal Attachments
Image and PDF uploads via CopilotChat attachments, processed by a vision-capable agent
Agent Config Object
Forward a typed config object (tone / expertise / response length) from the provider to the agent's dynamic system prompt
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Tool Rendering + Reasoning Chain (testing)
Sequential tool calls with reasoning tokens rendered side-by-side
Reasoning
Visible reasoning/thinking chain alongside the final answer
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage renders without a custom slot
In-Chat HITL (useInterrupt — low-level primitive)
Interactive component rendered inline in the chat via the lower-level `useInterrupt` primitive — direct control over the LangGraph interrupt lifecycle
Headless Interrupt (testing)
Resolve langgraph interrupts from a plain button grid — no chat, no useInterrupt render prop
Declarative Generative UI (A2UI)
Canonical A2UI BYOC — custom catalog (Card/StatusBadge/Metric/InfoRow/PrimaryButton) wired via a2ui.catalog on the provider; backend agent owns the generate_a2ui tool
Declarative Generative UI (A2UI — Fixed Schema)
A2UI rendering against a known client-side schema
MCP Apps
MCP server-driven UI via activity renderers
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation (simulated notes DB query) and uses the returned result
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Voice Input
Speech-to-text via @copilotkit/voice with a bundled sample audio button
BYOC Hashbrown
Streaming structured output via @hashbrownai/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
BYOC json-render
Streaming hierarchical JSON UI spec rendered via @json-render/react, with a Zod-validated catalog (MetricCard + PieChart + BarChart)
Fully Open-Ended Generative UI
Agent generates UI from an arbitrary component library
Open-Ended Gen UI (Advanced: with frontend function calling)
Agent-authored UI that can invoke frontend sandbox functions from inside the iframe
CLI Start Command
Copy-paste command to scaffold the canonical Mastra starter
Agentic Chat
Natural conversation with frontend tool execution
In-Chat HITL (useHumanInTheLoop — ergonomic API)
Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat
Tool Rendering
Custom per-tool renderers plus a wildcard catch-all for every other tool
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines tools; frontend adds zero custom renderers
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool
Agentic Generative UI
Long-running agent tasks with generated UI
State Streaming
Per-token state delta streaming from agent to UI
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation and uses the returned result
Reasoning
Visible reasoning/thinking chain alongside the final answer (via custom reasoningMessage slot)
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage renders without a custom slot
Agent Config Object
Forward a typed config object (tone / expertise / response length) from the provider to the agent via useAgentContext
Declarative Generative UI (A2UI — Dynamic Schema)
Dynamic A2UI surfaces generated by the `generate_a2ui` tool; frontend supplies a typed catalog (Card, Metric, PieChart, BarChart, …)
A2UI Fixed Schema
Frontend-owned component tree; agent streams data into the data model (flight card built from Card > Column > Title/Airport/Arrow/AirlineBadge/PriceTag/Button)
Headless Chat (Complete)
Full chat-from-scratch on useAgent — custom bubbles, manual generative-UI composition via useRenderToolCall / useRenderActivityMessage / useRenderCustomMessages
Authentication
Bearer-token gate enforced by the V2 runtime's onRequest hook — unauthenticated requests 401 before reaching the agent
Shared State (Read + Write)
Bidirectional shared state — UI writes preferences via agent.setState; backend reads them every turn and writes notes back via the set_notes tool
Sub-Agents
Supervisor Mastra Agent delegates to research / writing / critique sub-agents; every delegation appended to a live UI log via shared state
Beautiful Chat (Flagship)
Flagship CopilotKit showcase combining A2UI, Open Generative UI, and MCP Apps in one cell
BYOC — Hashbrown
Bring-your-own-component dashboard rendered via @hashbrownai/react useUiKit + useJsonParser
BYOC — JSON Render
Bring-your-own-component dashboard rendered from a streamed JSON envelope into a frontend-owned catalog
Multimodal Attachments
Image + PDF uploads forwarded to a vision-capable Mastra agent (gpt-4o)
Open Generative UI
Agent-authored HTML + CSS streamed into a sandboxed iframe via the runtime's openGenerativeUI flag
Open Generative UI (Advanced)
Open Generative UI with host-side sandbox functions wired through the iframe bridge
Voice Input
Mic-to-text input via OpenAI Whisper, streamed into the chat composer
Tool-Based Generative UI
Agent uses a frontend tool to trigger rich generative UI inline in the chat
Human in the Loop (Step Selection)
Step-selection HITL surface rendered inline via `useHumanInTheLoop` (the LangGraph-specific `useLangGraphInterrupt` branch is a no-op on Mastra)
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow (alias of hitl-in-chat)
MCP Apps
MCP server-driven UI rendered inline via the runtime's mcpApps config and the built-in activity renderer
Tool Rendering + Reasoning Chain
Sequential tool calls rendered with per-tool components plus a reasoning chain rendered inline via a custom reasoningMessage slot
Gen UI Interrupt (Frontend Tool)
In-chat time-picker via useFrontendTool with an async handler that blocks until the user picks a slot — Strategy B adaptation of the LangGraph interrupt primitive
Headless Interrupt (Frontend Tool)
Time-picker popup rendered outside the chat in the app surface — headless variant of the Strategy B interrupt adaptation
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
Reasoning
Visible reasoning/thinking chain alongside the final answer
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage renders without a custom slot
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Headless Chat (Complete)
Full chat implementation built from scratch on useAgent
In-Chat Human in the Loop
User approves agent actions before execution
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
In-App Human in the Loop
Agent requests approval via useFrontendTool; the approval UI pops up as an app-level modal OUTSIDE the chat
In-Chat Human in the Loop (original)
Original CrewAI HITL demo — kept for backwards-compat
Tool Rendering
Custom per-tool renderers plus a wildcard catch-all for every other tool
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Tool Rendering + Reasoning Chain
Sequential tool calls with reasoning tokens side-by-side
Agentic Generative UI
Long-running agent tasks with generated UI
Tool-Based Generative UI
Agent uses tools to trigger UI generation
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler
State Streaming
Per-token state delta streaming from agent to UI
Shared State (Read + Write)
Bidirectional shared state - UI writes preferences, agent writes notes
Sub-Agents
Supervisor delegates to research / writing / critique CrewAI sub-crews with a live delegation log
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Fully Open-Ended Generative UI
Agent generates UI from an arbitrary component library
Open-Ended Gen UI (Advanced)
Agent-authored UI that invokes host sandbox functions from inside the iframe
Agent Config Object
Forward a typed config object (tone / expertise / response length) from the provider to the agent
Authentication
Runtime-level bearer-token auth via the V2 onRequest hook
Voice Input
Speech-to-text transcription via @copilotkit/voice mounted on a per-demo runtime
Multimodal Attachments
Image and PDF uploads routed through the AG-UI attachment pipeline
Declarative Generative UI (A2UI - Dynamic Schema)
Branded A2UI components generated by a secondary LLM against a custom catalog
A2UI Fixed-Schema
Pre-authored component tree; the agent streams only data into the data model
BYOC (Hashbrown)
Streaming structured output via @hashbrownai/react against a custom catalog
BYOC (json-render)
Flat {root, elements} spec rendered by @json-render/react against a Zod catalog
Beautiful Chat
Flagship showcase - polished brand-styled chat with A2UI, Open Generative UI, and shared-state todos
MCP Apps
MCP server-driven UI via activity renderers
Gen UI Interrupt (Strategy B)
Interrupt-style scheduling via useFrontendTool with an async Promise — time-picker card rendered inline in chat
Headless Interrupt (Strategy B)
Headless interrupt via useFrontendTool — time-picker popup appears in the app surface outside the chat
Agent Frameworks
CLI Start Command
Copy-paste command to clone the canonical starter
Pre-Built: CopilotChat
Vanilla CopilotChat with three starter-prompt suggestions — the minimum-viable surface for free-form chat
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation and uses the returned result
Human In the Loop: In-chat
Time-slot picker rendered inline in the chat via `useHumanInTheLoop` — the agent requests user input, the frontend renders a TimePickerCard, and the user's choice resumes the agent.
MCP Apps
Runtime mcpApps config wires an Excalidraw MCP server; the built-in MCPAppsActivityRenderer renders the sandboxed iframe inline in the chat with no app-side renderer
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via a frontend tool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat, and a completion callback resolves the pending tool Promise with the user's decision
Tool Rendering
Custom per-tool renderers (WeatherCard, FlightListCard) plus a wildcard catch-all for every other tool
Tool-Based Generative UI
Agent uses tools to trigger UI generation
Agentic Generative UI
Canonical agent-state-driven Gen UI — the agent plans a live step list and emits it via state["steps"]; the frontend renders it via useAgent
Shared State: Read-only
Recipe editor publishes form state via agent.setState; the agent reads the recipe context but does not mutate it (no backend tool — neutral default agent).
Shared State: Read + Write
Bidirectional shared state — UI writes preferences via agent.setState; agent writes notes via a Command-returning tool
State Streaming
Per-token state delta streaming from agent to UI via PredictStateMapping
Sub-Agents
Multiple agents with visible task delegation
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Headless Chat (Complete)
Full chat implementation built from scratch on useAgent
Reasoning: Custom
Visible reasoning/thinking chain alongside the final answer (Gemini 2.5 thinking mode)
Reasoning: Default
Built-in CopilotChatReasoningMessage rendering with no slot override.
Declarative Generative UI (A2UI)
Canonical A2UI BYOC — custom catalog (Card/StatusBadge/Metric/InfoRow/PrimaryButton) wired via a2ui.catalog on the provider; the runtime injects the render_a2ui tool automatically
Declarative Generative UI (A2UI — Fixed Schema)
A2UI rendering against a known client-side schema
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Tool Rendering + Reasoning Chain (testing)
Sequential tool calls with reasoning tokens rendered side-by-side
Declarative UI: json-render
Streaming hierarchical JSON UI spec rendered via @json-render/react, with a Zod-validated catalog (MetricCard + PieChart + BarChart)
Beautiful Chat
Canonical polished starter chat — brand fonts, theme tokens, suggestion pills
Multimodal Attachments
Image and PDF uploads via CopilotChat attachments, processed by a Gemini multimodal agent
Authentication
Bearer-token gate via runtime onRequest hook with unauthenticated / authenticated states
Declarative UI: Hashbrown
Streaming structured output via @hashbrownai/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
Fully Open-Ended Generative UI
Agent generates UI from an arbitrary component library
Open-Ended Gen UI (Advanced: with frontend function calling)
Agent-authored UI that can invoke frontend sandbox functions from inside the iframe
Voice Input
Speech-to-text via @copilotkit/voice with a bundled sample audio button
Agent Config Object
Forward a typed config object (tone / expertise / response length) from the provider to the agent's dynamic system prompt
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation (simulated notes DB query) and uses the returned result
In-Chat Human in the Loop
User approves agent actions before execution
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat, and a completion callback resolves the pending tool Promise with the user's decision
In-Chat HITL (useHumanInTheLoop — ergonomic API)
Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
Tool Rendering
Backend agent tools rendered as UI components
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Agentic Generative UI
Long-running agent tasks with generated UI
Tool-Based Generative UI
Frontend-registered chart components rendered by agent tool calls
State Streaming
Per-token state delta streaming from agent to UI
Shared State (Read + Write)
Bidirectional agent state — UI writes preferences, agent writes notes back
Sub-Agents
Multiple agents with visible task delegation
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Open Generative UI (Minimal)
Agent streams HTML/CSS into a sandboxed iframe via the runtime's openGenerativeUI middleware
Open Generative UI (Advanced)
Sandboxed UI invokes host-registered sandbox functions via Websandbox.connection.remote
Declarative Generative UI (A2UI Dynamic)
Agent generates dynamic A2UI surfaces from a frontend-registered component catalog
A2UI — Fixed Schema
Backend-authored JSON schema + frontend catalog renderers; agent streams only data
Headless Chat (Complete)
Full custom chat built from scratch on useAgent — no CopilotChat primitives
Beautiful Chat
Flagship showcase combining A2UI (fixed + dynamic), Open Generative UI, shared todos state, and HITL in a single polished cell
BYOC: json-render
BYOC (bring-your-own-components) demo rendering a streaming JSON spec via @json-render/react against a Zod-validated catalog
BYOC: Hashbrown
BYOC demo using @hashbrownai/react's useJsonParser + useUiKit for progressive streaming-JSON UI rendering
Multimodal Attachments
Image + PDF attachments via CopilotChat — images flow natively to GPT-4o vision; PDFs flatten to text via pypdf
Voice Input
Audio transcription via OpenAI Whisper — mic + bundled sample round-trip populate the chat composer
Agent Config Object
Forwarded provider properties (tone / expertise / responseLength) reshape the agent's system prompt per turn
Authentication
Bearer-token gated runtime route via the V2 onRequest hook — sign out exercises the 401 path without white-screening
Agentic Chat (Reasoning)
Reasoning chain rendered via a custom amber slot — backed by a gpt-5 reasoning model whose Responses-API reasoning items the AG-UI bridge translates to REASONING events
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage card rendering REASONING events emitted by a gpt-5 reasoning agent — zero-config frontend
Tool Rendering (Reasoning Chain)
Reasoning + sequential tool calls (get_weather, search_flights, get_stock_price, roll_dice) in a single cell — gpt-5 reasoning model emits REASONING events between each tool call
MCP Apps
No-tools agent + runtime mcpApps middleware pointing at the public Excalidraw MCP server — the built-in MCPAppsActivityRenderer paints sandboxed iframes inline
In-Chat HITL (useInterrupt — low-level primitive)
Interactive component rendered inline in the chat via the lower-level `useInterrupt` primitive — direct control over the interrupt lifecycle
Headless Interrupt (testing)
Resolve interrupts from a plain button grid — no chat, no useInterrupt render prop
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
Tool Rendering
Backend agent tools rendered as UI components
Agentic Generative UI
Long-running agent tasks with generated UI
State Streaming
Per-token state delta streaming from agent to UI
Shared State (Read + Write)
Bidirectional agent state — UI writes preferences, agent writes notes back
Sub-Agents
Multiple agents with visible task delegation
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Headless Chat (Complete)
Full chat implementation built from scratch on useAgent
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation (simulated notes DB query) and uses the returned result
In-Chat Human in the Loop
User approves agent actions before execution
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat, and a completion callback resolves the pending tool Promise with the user's decision
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Fully Open-Ended Generative UI
Agent generates UI from an arbitrary component library
Open-Ended Gen UI (Advanced: with frontend function calling)
Agent-authored UI that can invoke frontend sandbox functions from inside the iframe
BYOC: json-render
Agent emits a JSON spec; `@json-render/react` renders it against a Zod catalog of MetricCard, BarChart, PieChart
BYOC: Hashbrown
Streaming structured output via `@hashbrownai/react` — agent emits a catalog-constrained JSON envelope that renders progressively
Multimodal Attachments
Image + PDF attachments routed through Claude's native vision + pypdf text flattening
Voice Input
Audio transcription wired on a per-demo runtime with a guarded OpenAI Whisper service that maps missing keys to 401
Agent Config Object
Forwarded props (tone / expertise / responseLength) flow from the provider into the agent's system prompt via `forwardedProps.config.configurable.properties`
Agentic Chat (Reasoning)
Visible reasoning / thinking chain rendered via a custom messageView slot
Reasoning (Default Render)
Reasoning rendered via CopilotKit's built-in collapsible card with zero custom config
Tool Rendering (Reasoning Chain)
Sequential tool calls combined with visible reasoning steps
Authentication
Framework-native request auth via the V2 runtime's `onRequest` hook; missing bearer token returns 401
MCP Apps
MCP server-driven UI via activity renderers — the agent calls a tool on a remote MCP server (Excalidraw) and the runtime middleware renders the returned UI resource as a sandboxed iframe inline in the chat
Beautiful Chat
Polished brand-themed chat surface over the Claude Agent SDK backend with seeded suggestion pills and a glanceable decorative side panel — pure frontend dressing, no extra runtime config
Tool-Based Generative UI
Agent uses tools to trigger UI generation (haiku generator via useFrontendTool + useRenderTool)
In-Chat HITL (useHumanInTheLoop — ergonomic API)
Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
In-Chat HITL (useInterrupt — low-level primitive)
Interactive time-picker component rendered inline in the chat via useFrontendTool with an async handler — the Promise resolves only when the user picks a slot or cancels
Headless Interrupt (testing)
Resolve interrupts from a plain button grid — no chat, no useInterrupt render prop; the time-picker popup appears in the app surface outside the chat
Declarative Generative UI (A2UI)
Canonical A2UI BYOC — custom catalog (Card/StatusBadge/Metric/InfoRow/PrimaryButton/PieChart/BarChart) wired via a2ui.catalog on the provider; backend agent owns the `generate_a2ui` tool with injectA2UITool false
Declarative Generative UI (A2UI — Fixed Schema)
A2UI rendering against a known client-side schema; the backend ships flight_schema.json and only streams data via display_flight
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation (simulated notes DB query) and uses the returned result
In-Chat Human in the Loop
User approves agent actions before execution
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat, and a completion callback resolves the pending tool Promise with the user's decision
Tool Rendering
Backend agent tools rendered as UI components
Declarative Generative UI (A2UI)
Canonical A2UI BYOC — custom catalog wired via a2ui.catalog on the provider; runtime injects the render_a2ui tool automatically
Agentic Generative UI
Long-running agent tasks with generated UI
Tool-Based Generative UI
Agent uses frontend tools to trigger UI generation — useFrontendTool with a render function paints structured haiku output as a styled card alongside the chat
State Streaming
Per-token state delta streaming from agent to UI
Shared State (Read + Write)
Bidirectional shared state — UI writes preferences via agent.setState, agent reads them every turn and writes notes back via a set_notes tool
Sub-Agents
Supervisor delegates to research / writing / critique sub-agents (each a single secondary Anthropic Messages call); every delegation appears in a live log via shared state
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Fully Open-Ended Generative UI
Agent generates UI from an arbitrary component library
Open-Ended Gen UI (Advanced: with frontend function calling)
Agent-authored UI that can invoke frontend sandbox functions from inside the iframe
BYOC: json-render
Bring-your-own-catalog generative UI via @json-render/react
BYOC: hashbrown
Bring-your-own-catalog streaming UI via @hashbrownai/react useJsonParser
MCP Apps
MCP server-driven UI via activity renderers — runtime auto-applies the MCP Apps middleware and the built-in MCPAppsActivityRenderer paints sandboxed iframes inline in the chat
Multimodal Attachments
Image and PDF attachments forwarded to Claude's vision-capable model
Voice Input
Mic + sample audio transcription via a guarded OpenAI Whisper service
Agent Config Object
forwardedProps route provider-configured tone/expertise/length into the Claude system prompt per turn
Authentication
Bearer-token gate via the V2 runtime onRequest hook with typed 401 surface
Tool Rendering: Default Catch-all
Zero-config wildcard renderer via useDefaultRenderTool — built-in tool-call card paints every tool
Tool Rendering: Custom Catch-all
Single branded wildcard renderer registered via useDefaultRenderTool({ render })
Agentic Chat (Reasoning)
Custom reasoningMessage slot renders Claude extended-thinking deltas as AG-UI REASONING_MESSAGE_* events
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage card paints Claude extended-thinking output — zero custom slots
Tool Rendering: Reasoning Chain
Reasoning slot + per-tool renderers + wildcard catch-all in one cell
Beautiful Chat
Polished brand-themed chat surface over the shared Claude SDK agent with seeded suggestion pills
In-Chat HITL (useHumanInTheLoop — ergonomic API)
Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
In-Chat HITL (useInterrupt — low-level primitive)
Interactive time-picker component rendered inline in the chat via useFrontendTool with an async handler — the Promise resolves only when the user picks a slot or cancels
Headless Interrupt (testing)
Resolve interrupts from a plain button grid — no chat, no useInterrupt render prop; the time-picker popup appears in the app surface outside the chat
Headless Chat (Complete)
Full custom chat surface built on `useAgent` — exercises the full rendering stack (text, per-tool renderers, frontend components) with backend get_weather / get_stock_price tools and a frontend highlight_note tool
A2UI (Fixed Schema)
Fixed-schema A2UI — backend display_flight tool emits an a2ui_operations container that ships a JSON component tree plus per-call data; frontend catalog binds component names to React renderers
Enterprise
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation (simulated notes DB query) and uses the returned result
In-Chat Human in the Loop
User approves agent actions before execution
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat, and a completion callback resolves the pending tool Promise with the user's decision
In-Chat HITL (useHumanInTheLoop — ergonomic API)
Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
Tool-Based Generative UI
Agent uses tools to trigger UI generation
Tool Rendering
Backend agent tools rendered as UI components
Agentic Generative UI
Long-running agent tasks with generated UI
Shared State (Read + Write)
Bidirectional agent state — UI writes preferences, agent writes notes back via state_update
Sub-Agents
Supervisor delegates to research / writing / critique sub-agents with a live delegation log
State Streaming
Per-token state delta streaming from agent to UI
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Headless Chat (Complete)
Full chat implementation built from scratch on useAgent
Reasoning
Visible reasoning/thinking chain alongside the final answer
In-Chat HITL (useInterrupt — low-level primitive)
Interactive component rendered inline in the chat via the lower-level `useInterrupt` primitive — direct control over the interrupt lifecycle
Declarative Generative UI (A2UI)
Canonical A2UI BYOC — custom catalog (Card/StatusBadge/Metric/InfoRow/PrimaryButton) wired via a2ui.catalog on the provider; runtime injects the render_a2ui tool automatically
Declarative Generative UI (A2UI — Fixed Schema)
A2UI rendering against a known client-side schema
MCP Apps
MCP server-driven UI via activity renderers
Headless Interrupt (testing)
Resolve interrupts from a plain button grid — no chat, no useInterrupt render prop
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage renders without a custom slot
Tool Rendering + Reasoning Chain (testing)
Sequential tool calls with reasoning tokens rendered side-by-side
BYOC json-render
Streaming hierarchical JSON UI spec rendered via @json-render/react, with a Zod-validated catalog (MetricCard + PieChart + BarChart)
Beautiful Chat
Canonical polished starter chat — brand fonts, theme tokens, suggestion pills
Multimodal Attachments
Image and PDF uploads via CopilotChat attachments, processed by a vision-capable agent
Authentication
Bearer-token gate via runtime onRequest hook with unauthenticated / authenticated states
BYOC Hashbrown
Streaming structured output via @hashbrownai/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
Fully Open-Ended Generative UI
Agent generates UI from an arbitrary component library
Open-Ended Gen UI (Advanced: with frontend function calling)
Agent-authored UI that can invoke frontend sandbox functions from inside the iframe
Voice Input
Speech-to-text via @copilotkit/voice with a bundled sample audio button
Agent Config Object
Forward a typed config object (tone / expertise / response length) from the provider to the agent's dynamic system prompt
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation (simulated notes DB query) and uses the returned result
In-Chat Human in the Loop (Original)
User approves agent actions before execution
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat, and a completion callback resolves the pending tool Promise with the user's decision
In-Chat HITL (useHumanInTheLoop — ergonomic API)
Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
Tool-Based Generative UI
Agent uses tools to trigger UI generation
Tool Rendering
Backend agent tools rendered as UI components
Agentic Generative UI
Long-running agent tasks with generated UI
State Streaming
Per-token state delta streaming from agent to UI
Shared State (Read + Write)
Bidirectional agent state — UI writes preferences, agent writes notes back via a set_notes tool
Sub-Agents
Supervisor delegates to research / writing / critique sub-agents with a live delegation log
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Headless Chat (Complete)
Full chat implementation built from scratch on useAgent
Reasoning
Visible reasoning/thinking chain alongside the final answer
In-Chat HITL (useInterrupt — low-level primitive)
Interactive component rendered inline in the chat via the lower-level `useInterrupt` primitive — direct control over the interrupt lifecycle
Declarative Generative UI (A2UI)
Canonical A2UI BYOC — custom catalog (Card/StatusBadge/Metric/InfoRow/PrimaryButton) wired via a2ui.catalog on the provider; runtime injects the render_a2ui tool automatically
Declarative Generative UI (A2UI — Fixed Schema)
A2UI rendering against a known client-side schema
MCP Apps
MCP server-driven UI via activity renderers
Headless Interrupt (testing)
Resolve interrupts from a plain button grid — no chat, no useInterrupt render prop
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage renders without a custom slot
Tool Rendering + Reasoning Chain (testing)
Sequential tool calls with reasoning tokens rendered side-by-side
BYOC json-render
Streaming hierarchical JSON UI spec rendered via @json-render/react, with a Zod-validated catalog (MetricCard + PieChart + BarChart)
Beautiful Chat
Canonical polished starter chat — brand fonts, theme tokens, suggestion pills
Multimodal Attachments
Image and PDF uploads via CopilotChat attachments, processed by a vision-capable agent
Authentication
Bearer-token gate via runtime onRequest hook with unauthenticated / authenticated states
BYOC Hashbrown
Streaming structured output via @hashbrownai/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
Fully Open-Ended Generative UI
Agent generates UI from an arbitrary component library
Open-Ended Gen UI (Advanced: with frontend function calling)
Agent-authored UI that can invoke frontend sandbox functions from inside the iframe
Voice Input
Speech-to-text via @copilotkit/voice with a bundled sample audio button
Agent Config Object
Forward a typed config object (tone / expertise / response length) from the provider to the agent's dynamic system prompt
Agentic Chat
Natural conversation with frontend tool execution
Chat Customization (CSS)
Default CopilotChat re-themed via scoped CSS overrides
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation and uses the returned result
Agentic Generative UI
Long-running agent tasks with generated UI
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Authentication
Bearer-token gate via runtime onRequest hook with unauthenticated / authenticated states
Open Generative UI (Minimal)
Agent streams HTML + CSS into a sandboxed iframe via the built-in OpenGenerativeUIActivityRenderer
Open Generative UI (Advanced)
Sandboxed UI can call host-side functions (evaluateExpression, notifyHost) via the provider's sandboxFunctions registration
Voice
CopilotChat mic button via a runtime mounted with TranscriptionServiceOpenAI; transcribed text is forwarded to the Spring AI backend
Agent Config Object
Frontend forwards typed config (tone, expertise, responseLength) to Spring, which rebuilds the system prompt per request
A2UI Fixed Schema
Dedicated Spring tool emits a fixed flight-card component tree plus a data model; frontend catalog renders each component
Headless Chat (Complete)
Full chat built from scratch on useAgent plus low-level render hooks (useRenderToolCall, useRenderActivityMessage, useRenderCustomMessages)
Beautiful Chat
Polished brand-themed chat surface over the Spring AI agent with seeded suggestion pills
Agentic Chat (Reasoning)
Custom reasoningMessage slot renders the agent's thinking chain as a tagged amber banner (renders when the adapter emits REASONING_MESSAGE_* events)
Reasoning (Default Render)
Zero-config reasoning — CopilotChatReasoningMessage renders the built-in collapsible card when REASONING_MESSAGE_* events are emitted
Tool Rendering (Reasoning Chain)
Per-tool renderers (WeatherCard, FlightListCard) plus custom reasoningMessage slot composed in a single chat
Declarative Generative UI
A2UI dynamic-schema against a branded catalog; backend owns the `generate_a2ui` tool
Shared State (Read + Write)
Bidirectional shared state — UI writes preferences into agent state; the agent's set_notes tool mutates state.notes and emits a STATE_SNAPSHOT back to the UI
Shared State Streaming
Per-token state streaming — the agent's write_document tool streams content into state.document via STATE_SNAPSHOT events; the frontend renders the growing document live
Sub-Agents
Supervisor delegates to research / writing / critique sub-agents (each its own ChatClient call). Every delegation appends a Delegation entry to state.delegations and emits a STATE_SNAPSHOT for a live UI log
Multimodal Attachments
CopilotChat AttachmentsConfig for images + PDFs; sample files inject through the same pipeline as the paperclip upload
In-Chat Human in the Loop
User approves agent actions before execution via text input inside the chat
In-App Human in the Loop
Agent requests approval via useFrontendTool; the approval UI pops up as an app-level modal OUTSIDE the chat
Human in the Loop (Steps)
Multi-step HITL flow where the agent pauses for user confirmation at each step
Tool Rendering
Backend agent tools rendered as UI components
CLI Start Command
Copy-paste command to clone the canonical Spring AI starter
Tool-Based Generative UI
Frontend registers per-tool component renderers via useComponent; the Spring agent calls render tools that paint chart components inline in the chat
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — the Spring backend defines tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every Spring tool call
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow against the Spring AI agent
MCP Apps
MCP server-driven UI via the runtime mcpApps middleware; sandboxed iframe rendered via the built-in MCPAppsActivityRenderer
BYOC Hashbrown
Streaming hashbrown UI kit (MetricCard + PieChart + BarChart + DealCard) rendered by @hashbrownai/react against the Spring AI ChatClient stream
Generative UI (Interrupt)
Time-picker card rendered inline via useFrontendTool with an async handler that blocks until the user picks a slot — Strategy B adaptation of LangGraph's interrupt() primitive
Headless Interrupt
Time-picker popup rendered in the app surface (outside the chat) via useFrontendTool with an async handler — headless variant of the interrupt-adapted pattern
BYOC JSON Render
Zero-tool agent emits a flat-spec JSON object rendered by @json-render/react against a Zod-validated catalog of MetricCard, BarChart, and PieChart components
Emerging
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
Tool Rendering
Backend agent tools rendered as UI components
In-Chat Human in the Loop (Original)
User approves agent actions before execution
Agentic Generative UI
Long-running agent tasks with generated UI
Tool-Based Generative UI
Agent uses tools to trigger UI generation
State Streaming
Per-token state delta streaming from agent to UI
Shared State (Read + Write)
Bidirectional shared state — UI writes preferences, agent writes notes
Sub-Agents
Multiple agents with visible task delegation
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Beautiful Chat
Canonical polished starter chat — brand fonts, theme tokens, suggestion pills
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Headless Chat (Complete)
Full chat implementation built from scratch on useAgent
Authentication
Bearer-token gate via runtime onRequest hook with unauthenticated / authenticated states
Multimodal Attachments
Image and PDF uploads via CopilotChat attachments, processed by a vision-capable agent
Agent Config Object
Forward a typed config object (tone / expertise / response length) from the provider to the agent's dynamic system prompt
Reasoning
Visible reasoning/thinking chain alongside the final answer
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage renders without a custom slot
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Tool Rendering + Reasoning Chain (testing)
Sequential tool calls with reasoning tokens rendered side-by-side
In-Chat HITL (useInterrupt — low-level primitive)
Interactive component rendered inline in the chat via the lower-level `useInterrupt` primitive — direct control over the LangGraph interrupt lifecycle
Headless Interrupt (testing)
Resolve langgraph interrupts from a plain button grid — no chat, no useInterrupt render prop
Declarative Generative UI (A2UI)
Canonical A2UI BYOC — custom catalog (Card/StatusBadge/Metric/InfoRow/PrimaryButton) wired via a2ui.catalog on the provider; runtime injects the render_a2ui tool automatically
Declarative Generative UI (A2UI — Fixed Schema)
A2UI rendering against a known client-side schema
MCP Apps
MCP server-driven UI via activity renderers
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation (simulated notes DB query) and uses the returned result
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat, and a completion callback resolves the pending tool Promise with the user's decision
In-Chat HITL (useHumanInTheLoop — ergonomic API)
Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Voice Input
Speech-to-text via @copilotkit/voice with a bundled sample audio button
BYOC Hashbrown
Streaming structured output via @hashbrownai/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
BYOC json-render
Streaming hierarchical JSON UI spec rendered via @json-render/react, with a Zod-validated catalog (MetricCard + PieChart + BarChart)
Fully Open-Ended Generative UI
Agent generates UI from an arbitrary component library
Open-Ended Gen UI (Advanced: with frontend function calling)
Agent-authored UI that can invoke frontend sandbox functions from inside the iframe
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
Tool Rendering
Backend agent tools rendered as UI components
Agentic Generative UI
Long-running agent tasks with generated UI
State Streaming
Per-token state delta streaming from agent to UI
Shared State (Read + Write)
Bidirectional agent state — UI writes preferences, agent writes notes back
Sub-Agents
Multiple agents with visible task delegation
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKit CSS variables
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
In-Chat Human in the Loop
User approves agent actions before execution
In-Chat Human in the Loop (Time Picker)
Agent proposes a meeting time; user confirms or adjusts via an in-chat card before the agent proceeds
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Tool Rendering (Default Catch-all)
Out-of-the-box default tool-call card via useDefaultRenderTool()
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side notes-DB query and uses the returned result
Agentic Chat (Reasoning)
Visible reasoning chain via a custom ReasoningBlock slot — Agno reasoning agent emits AG-UI REASONING_MESSAGE_* events
Reasoning (Default Render)
Zero-config reasoning rendering — CopilotKit's built-in CopilotChatReasoningMessage handles the AGUI reasoning events
Tool Rendering (Reasoning Chain)
Reasoning card + sequential tool-call renderers (per-tool + catch-all) on the same reasoning-enabled Agno agent
Headless Chat (Complete)
Full chat built from scratch on useAgent — custom bubbles, input bar, and manual generative-UI composition via useRenderToolCall
Gen UI Interrupt (Frontend Tool + async Promise)
In-chat time-picker card via useFrontendTool with an async handler that blocks until the user picks a slot — Agno adaptation of the LangGraph interrupt() primitive
Headless Interrupt (Frontend Tool + async Promise)
Time-picker popup rendered outside the chat in the app surface via useFrontendTool with an async handler — Agno adaptation of the LangGraph headless interrupt pattern
Authentication
Bearer-token gate via the V2 runtime onRequest hook — dedicated /api/copilotkit-auth route rejects unauthenticated requests
Tool-Based Generative UI
Agent uses tools to trigger UI generation — frontend renders a haiku card from a generate_haiku tool call
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow — same surface as hitl-in-chat, branded for the booking scenario
MCP Apps
MCP-provided tools rendered inline as sandboxed UI via the runtime's mcpApps middleware
Open Generative UI
Agent-authored HTML + CSS streamed into a sandboxed iframe via the runtime's openGenerativeUI middleware
Open Generative UI (Advanced)
Sandboxed iframe with host-side sandbox functions the agent's UI can call back into via Websandbox.connection.remote
Agent Config Object
Frontend forwards a typed config object (tone, expertise, response length) the Agno agent reads per turn to compose its system prompt
Voice Input
Microphone + sample-audio button → /transcribe endpoint → text injected into the chat composer
Multimodal Attachments
Image + PDF attachments forwarded to a vision-capable Agno agent via CopilotChat's attachments config
BYOC: Hashbrown
Streaming structured output rendered progressively via @hashbrownai/react useUiKit + useJsonParser
BYOC: JSON Render
Agent emits a json-render spec; the page renders it against a Zod-validated catalog (MetricCard, BarChart, PieChart)
Beautiful Chat
Polished landing-style chat shell over the shared Agno agent — gradient background, suggestion pills, and an example dashboard surface
Declarative Generative UI (A2UI Dynamic)
Agent dynamically composes UI per turn from a registered frontend catalog — secondary LLM call inside the backend `generate_a2ui` tool emits an a2ui_operations container that the A2UI middleware forwards to the catalog renderer
A2UI Fixed Schema
Schema is authored ahead of time as JSON; the agent only streams data into the data model. `display_flight` emits an a2ui_operations container directly with no secondary LLM call
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
In-Chat HITL (useHumanInTheLoop)
Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow — same surface as hitl-in-chat with a booking-focused framing
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat
In-Chat Human in the Loop (Original)
User approves agent actions before execution
Tool Rendering
Backend agent tools rendered as UI components
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Agentic Generative UI
Long-running agent tasks with generated UI
Tool-Based Generative UI
Agent uses tools to trigger UI generation
State Streaming
Per-token state delta streaming from agent to UI
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Headless Chat (Complete)
Full chat implementation built from scratch on useAgent
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage renders without a custom slot
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation and uses the returned result
Shared State (Read + Write)
Bidirectional agent state — UI writes preferences, agent writes notes back via AG2 ContextVariables
Sub-Agents
Supervisor delegates tasks to research, writing, and critique sub-agents with a live delegation log
Gen UI Interrupt (Frontend Tool + async Promise)
In-chat time-picker card via useFrontendTool with an async handler that blocks until the user picks a slot — AG2 adaptation of the LangGraph interrupt() primitive
Headless Interrupt (Frontend Tool + async Promise)
Time-picker popup rendered outside the chat in the app surface via useFrontendTool with an async handler — AG2 adaptation of the LangGraph headless interrupt pattern
Declarative Generative UI (A2UI Dynamic Schema)
Agent dynamically composes UI from a registered catalog of branded components via the A2UI middleware
A2UI (Fixed Schema)
Agent streams data into a frontend-authored fixed component schema; backend ships JSON, agent fills in values
MCP Apps
Runtime mcpApps middleware injects an MCP server's tools and renders associated UI resources inline
Open Generative UI (Minimal)
Agent streams a single generateSandboxedUi tool call; the runtime renders agent-authored HTML/CSS in a sandboxed iframe
Open Generative UI (Advanced)
Sandboxed iframe UIs invoke host-page sandbox functions via Websandbox.connection.remote
Agentic Chat (Reasoning)
Custom reasoningMessage slot renders the agent's thinking chain visibly above each answer
Tool Rendering (Reasoning Chain)
Sequential tool calls combined with a custom reasoningMessage slot — weather, flights, custom catch-all
Authentication
Bearer-token gate via runtime onRequest hook with unauthenticated / authenticated states
Agent Config Object
Forward a typed config object (tone / expertise / response length) from the provider to the agent's dynamic system prompt
Voice Input
Speech-to-text via @copilotkit/voice with a bundled sample audio button
Multimodal Attachments
Image and PDF uploads via CopilotChat attachments, processed by a vision-capable agent
BYOC Hashbrown
Streaming structured output via @hashbrownai/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
BYOC json-render
Streaming hierarchical JSON UI spec rendered via @json-render/react, with a Zod-validated catalog (MetricCard + PieChart + BarChart)
Beautiful Chat
Simplified flagship cell that combines A2UI Dynamic + Open Generative UI on a single dedicated runtime — agent picks branded catalog components for structured visuals and free-form sandboxed UI for everything else
CLI Start Command
Copy-paste command to clone the canonical starter
Beautiful Chat
Polished starter chat with brand-styled CopilotChat surface
Tool-Based Generative UI
Agent uses tools to trigger UI generation (bar / pie chart components)
MCP Apps
MCP server-driven UI via activity renderers
Agentic Chat
Natural conversation with frontend tool execution
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a simulated client-side notes DB query and uses the returned result
In-Chat HITL (useHumanInTheLoop)
Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
In-App Human in the Loop (Frontend Tools + async HITL)
Agent requests approval via useFrontendTool with an async handler; the approval UI pops up as an app-level modal OUTSIDE the chat
In-Chat Human in the Loop (Original)
User approves agent actions before execution
Tool Rendering
Backend agent tools rendered as UI components
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines tools; frontend adds zero custom renderers and uses CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Agentic Generative UI
Long-running agent tasks with generated UI
State Streaming
Per-token state delta streaming from agent to UI
Shared State (Read + Write)
Bidirectional shared state — UI writes preferences via agent.setState; agent writes notes via the set_notes tool. Backend reads preferences from state every turn through LlamaIndex's <state> prelude
Sub-Agents
Supervisor delegates to research / writing / critique sub-agents (each a stand-alone LlamaIndex FunctionAgent). Every delegation appends to a live log in shared agent state
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Headless Chat (Complete)
Full chat implementation built from scratch on useAgent
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Reasoning
Visible reasoning/thinking chain alongside the final answer via a custom reasoningMessage slot
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage renders without a custom slot
Tool Rendering + Reasoning Chain (testing)
Sequential tool calls with reasoning tokens rendered side-by-side
Declarative Generative UI (A2UI)
Canonical A2UI BYOC — custom catalog (Card/StatusBadge/Metric/InfoRow/PrimaryButton/PieChart/BarChart) wired via a2ui.catalog on the provider; agent owns the generate_a2ui tool
Declarative Generative UI (A2UI — Fixed Schema)
A2UI rendering against a known client-side schema; the agent streams flight data into a pre-authored component tree
BYOC json-render
Streaming hierarchical JSON UI spec rendered via @json-render/react, with a Zod-validated catalog (MetricCard + PieChart + BarChart)
BYOC Hashbrown
Streaming structured output via @hashbrownai/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
Authentication
Bearer-token gate via runtime onRequest hook with unauthenticated / authenticated states
Voice Input
Speech-to-text via @copilotkit/voice with a bundled sample audio button
Agent Config Object
Forward a typed config object (tone / expertise / response length) from the provider to the agent
Multimodal Attachments
Image and PDF uploads via CopilotChat attachments, processed by a vision-capable agent (gpt-4o)
Fully Open-Ended Generative UI
Agent generates UI from an arbitrary component library inside a sandboxed iframe
Open-Ended Gen UI (Advanced: with frontend function calling)
Agent-authored UI that can invoke frontend sandbox functions from inside the iframe
In-Chat HITL (useInterrupt — low-level primitive)
Interactive component rendered inline in the chat via the lower-level `useInterrupt` primitive — direct control over the interrupt lifecycle
Headless Interrupt (testing)
Resolve interrupts from a plain button grid — no chat, no useInterrupt render prop
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Headless Chat (Complete)
Full chat implementation built from scratch on useAgent
Reasoning
Visible reasoning/thinking chain alongside the final answer
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage renders without a custom slot
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler
In-Chat HITL (useHumanInTheLoop)
Inline approval/decision surface via the ergonomic useHumanInTheLoop hook
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
In-App Human in the Loop
Agent requests approval via async useFrontendTool; UI pops as an app-level modal
In-Chat HITL (Steps)
Agent pauses for user approval via step-based human-in-the-loop
Tool Rendering
Custom render for tool calls inline in the chat stream
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Tool Rendering + Reasoning Chain
Sequential tool calls with reasoning tokens rendered side-by-side
Agentic Generative UI
Long-running agent tasks with generated UI
Tool-Based Generative UI
Agent uses tools to trigger UI generation
Declarative Generative UI (A2UI)
Dynamic A2UI BYOC via a custom catalog
Declarative Generative UI (A2UI — Fixed Schema)
A2UI rendering against a known client-side schema
Shared State (Read + Write)
Bidirectional agent state — UI writes preferences, agent writes notes back
Sub-Agents
Multiple agents with visible task delegation
State Streaming
Per-token state delta streaming from agent to UI
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Multimodal Attachments
Image and PDF uploads via CopilotChat attachments
Voice Input
Speech-to-text via @copilotkit/voice with a bundled sample audio button
Authentication
Bearer-token gate via runtime onRequest hook
Agent Config Object
Forward a typed config object (tone / expertise / response length) from provider to agent
BYOC: Hashbrown
Streaming structured output rendered via @hashbrownai/react's useUiKit + useJsonParser
BYOC: json-render
JSON spec rendered via @json-render/react against a Zod catalog
Open Generative UI (Minimal)
Agent-authored HTML/CSS/SVG in a sandboxed iframe, minimal variant
Open Generative UI (Advanced)
Sandboxed iframe that invokes host-registered sandbox functions via Websandbox.connection.remote
MCP Apps
MCP server-driven UI via activity renderers
Beautiful Chat
Polished landing-style chat surface with brand theming and suggestion pills
In-Chat HITL (useInterrupt — low-level primitive)
Interactive component rendered inline in the chat via the lower-level `useInterrupt` primitive — direct control over the interrupt lifecycle
Headless Interrupt (testing)
Resolve interrupts from a plain button grid — no chat, no useInterrupt render prop
CLI Start Command
Copy-paste command to clone the canonical starter
Agentic Chat
Natural conversation with frontend tool execution
In-Chat Human in the Loop
User approves agent actions before execution
In-Chat HITL (useHumanInTheLoop — ergonomic API)
Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
In-Chat HITL (Booking)
Time-picker card rendered inline via useHumanInTheLoop for a booking flow
In-App Human in the Loop
Agent requests approval via async useFrontendTool; UI pops as an app-level modal
Tool Rendering
Custom render for tool calls inline in the chat stream
Tool-Based Generative UI
Agent uses tools to trigger UI generation
Agentic Generative UI
Long-running agent tasks with generated UI
State Streaming
Per-token state delta streaming from agent to UI
Shared State (Read + Write)
Bidirectional shared state — UI writes preferences via agent.setState, agent writes notes via the set_notes tool
Sub-Agents
Supervisor LLM delegates to research / writing / critique sub-agents; live delegation log streams running -> completed transitions
Chat Customization (CSS)
Default CopilotChat re-themed via CopilotKitCSSProperties
Pre-Built: Sidebar
Docked sidebar chat via <CopilotSidebar />
Pre-Built: Popup
Floating popup chat via <CopilotPopup />
Chat Customization (Slots)
Customize CopilotChat via its slot system (welcomeScreen, disclaimer, assistantMessage)
Headless Chat (Simple)
Minimal custom chat surface built on useAgent
Frontend Tools (In-App Actions)
Agent invokes client-side handlers registered with useFrontendTool
Frontend Tools (Async)
useFrontendTool with an async handler — agent awaits a client-side async operation (simulated notes DB query) and uses the returned result
Reasoning
Custom reasoning slot render (placeholder until Langroid exposes reasoning events)
Reasoning (Default Render)
Built-in CopilotChatReasoningMessage renders without a custom slot (placeholder until Langroid exposes reasoning events)
Readonly State (Agent Context)
Frontend provides read-only context to the agent via useAgentContext
Declarative Generative UI
A2UI dynamic-schema rendering — agent emits operations against a client-declared catalog
Authentication
Bearer-token gate via the V2 runtime's onRequest hook; unauth requests are rejected with 401
Headless Chat (Complete)
A full chat surface built from scratch on useAgent — no CopilotChat, hand-rolled message list + bubbles
Agent Config Object
Typed config forwarded via CopilotKit provider properties; the agent reads tone/expertise/responseLength per turn
Tool Rendering (Default Catch-all)
Out-of-the-box tool rendering — backend defines the tools; the frontend adds zero custom renderers and relies on CopilotKit's built-in default UI
Tool Rendering (Custom Catch-all)
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Tool Rendering + Reasoning Chain (testing)
Sequential tool calls with reasoning tokens rendered side-by-side. NOTE — Langroid does not yet emit native reasoning AG-UI events; the slot wires up only when reasoning content arrives over the wire
Fully Open-Ended Generative UI
Agent generates UI from an arbitrary component library via the runtime's openGenerativeUI middleware
Open-Ended Gen UI (Advanced: with frontend function calling)
Agent-authored UI that can invoke frontend sandbox functions from inside the iframe
Voice Input
Speech-to-text via @copilotkit/voice — mic button or sample audio populates the chat composer
Multimodal Attachments
Image + PDF uploads forwarded to a vision-capable agent (gpt-4o); PDFs are flattened to text server-side
BYOC: Hashbrown
Frontend BYOC via @hashbrownai/react — agent emits a JSON envelope that streams progressively into a sales dashboard
BYOC: json-render
Frontend BYOC via @json-render/react — agent emits a flat element-map spec rendered against a Zod-validated catalog
MCP Apps
MCP servers with UI resources rendered inline as sandboxed iframes via the runtime's mcpApps middleware
Beautiful Chat
Polished landing-style chat shell over the shared Langroid agent — gradient background, suggestion pills, and an example dashboard surface
A2UI (Fixed Schema)
Agent streams data into a frontend-authored fixed component schema; backend ships JSON, agent fills in values
In-Chat HITL (useInterrupt — low-level primitive)
Interactive component rendered inline in the chat via the lower-level `useInterrupt` primitive — direct control over the interrupt lifecycle
Headless Interrupt (testing)
Resolve interrupts from a plain button grid — no chat, no useInterrupt render prop