Most Popular
CopilotKit's Built-in Agent in factory mode. The agent runs in-process inside the Next.js route handler — no separate agent server.
Copy-paste command to clone the canonical starter
npx copilotkit@latest init --framework built-in-agent
Vanilla CopilotChat with three starter-prompt suggestions — the minimum-viable surface for free-form chat
Default CopilotChat re-themed via CopilotKitCSSProperties
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
Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
Agent invokes client-side handlers registered with useFrontendTool
useFrontendTool with an async handler — agent awaits a client-side async operation (simulated notes DB query) and uses the returned result
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.
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
Custom per-tool renderers (WeatherCard, FlightListCard) plus a wildcard catch-all for every other tool
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.
Agent uses tools to trigger UI generation
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.
Per-token state delta streaming from agent to UI
Bidirectional shared state — UI writes preferences via agent.setState; agent writes notes via a Command-returning tool
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).
Multiple agents with visible task delegation
Docked sidebar chat via <CopilotSidebar />
Floating popup chat via <CopilotPopup />
Customize CopilotChat via its slot system
Minimum viable headless chat — useAgent + useCopilotKit dressed in shadcn/ui primitives. No tool rendering, no generative UI, just text in / text out.
Full headless surface — hand-rolled CopilotChat replacement that wires every render hook (useRenderTool, useDefaultRenderTool, useComponent, useRenderToolCall, useRenderActivityMessage, useSuggestions, useAttachments) on top of shadcn primitives.
Built-in CopilotChatReasoningMessage rendering with no slot override.
Visible reasoning/thinking chain alongside the final answer
Interactive component rendered inline in the chat via the lower-level `useInterrupt` primitive — direct control over the LangGraph interrupt lifecycle
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).
Canonical A2UI BYOC — custom catalog (Card/StatusBadge/Metric/InfoRow/PrimaryButton) wired via a2ui.catalog on the provider
Render an A2UI tree from a fixed, server-side schema — the agent streams data into a pre-authored component tree
Makes the A2UI validate->retry recovery loop visible — an invalid first render heals to a valid one, and an always-invalid render shows a graceful recovery-exhausted fallback. Backend-owned via get_a2ui_tools (injectA2UITool=false); reuses the declarative-gen-ui catalog.
MCP server-driven UI via activity renderers
Frontend provides read-only context to the agent via useAgentContext
Streaming hierarchical JSON UI spec rendered via @json-render/react, with a Zod-validated catalog (MetricCard + PieChart + BarChart)
Canonical polished starter chat — brand fonts, theme tokens, suggestion pills
Image and PDF uploads via CopilotChat attachments, processed by a vision-capable agent
Bearer-token gate via runtime onRequest hook with unauthenticated / authenticated states
Streaming structured output via @hashbrownai/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
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.
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).
Speech-to-text via @copilotkit/voice with a bundled sample audio button
Forward a typed config object (tone / expertise / response length) from the provider to the agent's dynamic system prompt