Files
Sam Julien 933d37150b chore(showcase): introduce agent_config_pattern + auth_pattern manifest flags
Adds two new manifest pattern flags (matching the existing
`interrupt_pattern` / `a2ui_pattern` convention) so the canonical
`/agent-config` and `/auth` shell-docs pages can gate their per-pattern
sections via `<WhenFrameworkHas>` and only render the implementation that
applies to the framework the user has selected.

- `agent_config_pattern: shared-state | runtime-properties | null`
  - `runtime-properties` (1 fw): built-in-agent
  - `shared-state` (17 fws): everything else that wires agent-config

- `auth_pattern: langgraph | ag2-context-variables | microsoft-agent-framework | runtime-onrequest | null`
  - `langgraph` (3 fws): langgraph-python, langgraph-typescript, langgraph-fastapi
  - `ag2-context-variables` (1 fw): ag2
  - `microsoft-agent-framework` (2 fws): ms-agent-python, ms-agent-dotnet
  - `runtime-onrequest` (12 fws): everything else

Also fills in the previously-missing `a2ui_pattern` flag on 6 frameworks
that have wired demos but were rendering near-empty doc pages because
none of the existing `<WhenFrameworkHas>` gates matched. Audit-driven:
ag2/agno/claude-sdk-{python,typescript}/langroid use schema-loading;
built-in-agent uses schema-inline.
2026-04-29 13:25:02 -07:00

566 lines
21 KiB
YAML

name: LangGraph (Python)
slug: langgraph-python
category: popular
language: python
logo: /logos/langgraph-python.svg
description: >-
The most feature-complete CopilotKit integration. LangGraph provides a flexible
graph-based framework for building agents with Python. Supports the full range of
CopilotKit features including generative UI, shared state, human-in-the-loop,
sub-agents, and streaming.
partner_docs: https://docs.copilotkit.ai/integrations/langgraph
repo: https://github.com/CopilotKit/CopilotKit/tree/main/showcase/integrations/langgraph-python
copilotkit_version: 2.0.0
backend_url: https://showcase-langgraph-python-production.up.railway.app
deployed: true
sort_order: 10
generative_ui:
- constrained-explicit
- a2ui-fixed-schema
- a2ui-dynamic-schema
interaction_modalities:
- sidebar
- embedded
- chat
managed_platform:
name: LangGraph Platform
url: https://langsmith.com
features:
- beautiful-chat
- cli-start
- agentic-chat
- prebuilt-sidebar
- prebuilt-popup
- chat-slots
- chat-customization-css
- headless-simple
- headless-complete
- agentic-chat-reasoning
- reasoning-default-render
- frontend-tools
- frontend-tools-async
- gen-ui-tool-based
- hitl
- hitl-in-app
- hitl-in-chat
- hitl-in-chat-booking
- gen-ui-interrupt
- interrupt-headless
- declarative-gen-ui
- a2ui-fixed-schema
- mcp-apps
- gen-ui-agent
- tool-rendering-default-catchall
- tool-rendering-custom-catchall
- tool-rendering
- tool-rendering-reasoning-chain
- shared-state-read-write
- shared-state-streaming
- readonly-state-agent-context
- subagents
- multimodal
- auth
- byoc-hashbrown
- byoc-json-render
- open-gen-ui
- open-gen-ui-advanced
- voice
- agent-config
a2ui_pattern: schema-loading
interrupt_pattern: native
agent_config_pattern: shared-state
auth_pattern: langgraph
demos:
- id: cli-start
name: CLI Start Command
description: Copy-paste command to clone the canonical starter
tags:
- chat-ui
command: "npx copilotkit@latest init --framework langgraph-python"
- id: agentic-chat
name: Agentic Chat
description: Natural conversation with frontend tool execution
tags:
- chat-ui
route: /demos/agentic-chat
animated_preview_url:
highlight:
- src/agents/agentic_chat.py
- src/app/demos/agentic-chat/page.tsx
- src/app/api/copilotkit/route.ts
- id: chat-customization-css
name: Chat Customization (CSS)
description: Default CopilotChat re-themed via CopilotKitCSSProperties
tags:
- chat-ui
route: /demos/chat-customization-css
animated_preview_url:
highlight:
- src/agents/main.py
- src/app/demos/chat-customization-css/page.tsx
- src/app/demos/chat-customization-css/theme.css
- src/app/api/copilotkit/route.ts
- id: tool-rendering-default-catchall
name: Tool Rendering (Default Catch-all)
description: 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
tags:
- generative-ui
route: /demos/tool-rendering-default-catchall
animated_preview_url:
highlight:
- src/app/demos/tool-rendering-default-catchall/page.tsx
- src/agents/tool_rendering_agent.py
- src/app/api/copilotkit/route.ts
- id: tool-rendering-custom-catchall
name: Tool Rendering (Custom Catch-all)
description: Single branded wildcard renderer via useDefaultRenderTool — the same app-designed card paints every tool call
tags:
- generative-ui
route: /demos/tool-rendering-custom-catchall
animated_preview_url:
highlight:
- src/app/demos/tool-rendering-custom-catchall/page.tsx
- src/app/demos/tool-rendering-custom-catchall/custom-catchall-renderer.tsx
- src/agents/tool_rendering_agent.py
- src/app/api/copilotkit/route.ts
- id: frontend-tools
name: Frontend Tools (In-App Actions)
description: Agent invokes client-side handlers registered with useFrontendTool
tags:
- interactivity
route: /demos/frontend-tools
animated_preview_url:
highlight:
- src/agents/frontend_tools.py
- src/app/demos/frontend-tools/page.tsx
- src/app/api/copilotkit/route.ts
- id: frontend-tools-async
name: Frontend Tools (Async)
description: useFrontendTool with an async handler — agent awaits a client-side async operation (simulated notes DB query) and uses the returned result
tags:
- interactivity
route: /demos/frontend-tools-async
animated_preview_url:
highlight:
- src/agents/frontend_tools_async.py
- src/app/demos/frontend-tools-async/page.tsx
- src/app/demos/frontend-tools-async/notes-card.tsx
- src/app/api/copilotkit/route.ts
- id: hitl
name: Human in the Loop (Step Selection)
description: Interactive step-selection surface rendered inline in the chat via `useHumanInTheLoop` and `useLangGraphInterrupt` hooks
tags:
- interactivity
route: /demos/hitl
animated_preview_url:
highlight:
- src/app/demos/hitl/page.tsx
- src/app/api/copilotkit/route.ts
- id: hitl-in-app
name: In-App Human in the Loop (Frontend Tools + async HITL)
description: 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
tags:
- interactivity
route: /demos/hitl-in-app
animated_preview_url:
highlight:
- src/agents/hitl_in_app.py
- src/app/demos/hitl-in-app/page.tsx
- src/app/demos/hitl-in-app/approval-dialog.tsx
- src/app/api/copilotkit/route.ts
- id: hitl-in-chat
name: In-Chat HITL (useHumanInTheLoop — ergonomic API)
description: Interactive approval/decision surface rendered inline in the chat via the high-level `useHumanInTheLoop` hook
tags:
- interactivity
route: /demos/hitl-in-chat
animated_preview_url:
highlight:
- src/agents/hitl_in_chat_agent.py
- src/app/demos/hitl-in-chat/page.tsx
- src/app/demos/hitl-in-chat/time-picker-card.tsx
- src/app/api/copilotkit/route.ts
- id: hitl-in-chat-booking
name: In-Chat HITL (Booking)
description: Time-picker card rendered inline via useHumanInTheLoop for a booking flow
tags:
- interactivity
route: /demos/hitl-in-chat
animated_preview_url:
highlight:
- src/agents/hitl_in_chat_agent.py
- src/app/demos/hitl-in-chat/page.tsx
- src/app/demos/hitl-in-chat/time-picker-card.tsx
- src/app/api/copilotkit/route.ts
- id: tool-rendering
name: Tool Rendering
description: Custom per-tool renderers (WeatherCard, FlightListCard) plus a wildcard catch-all for every other tool
tags:
- agent-capabilities
route: /demos/tool-rendering
animated_preview_url:
highlight:
- src/agents/tool_rendering_agent.py
- src/app/demos/tool-rendering/page.tsx
- src/app/demos/tool-rendering/weather-card.tsx
- src/app/demos/tool-rendering/flight-list-card.tsx
- src/app/api/copilotkit/route.ts
- id: gen-ui-tool-based
name: Tool-Based Generative UI
description: Agent uses tools to trigger UI generation
tags:
- generative-ui
route: /demos/gen-ui-tool-based
animated_preview_url:
highlight:
- src/agents/gen_ui_tool_based.py
- src/app/demos/gen-ui-tool-based/page.tsx
- src/app/demos/gen-ui-tool-based/bar-chart.tsx
- src/app/api/copilotkit/route.ts
- id: gen-ui-agent
name: Agentic Generative UI
description: "Canonical agent-state-driven Gen UI — the agent plans a live step list and emits it via copilotkit_emit_state; the frontend renders it with the v1 useCoAgentStateRender hook"
tags:
- generative-ui
route: /demos/gen-ui-agent
animated_preview_url:
highlight:
- src/agents/gen_ui_agent.py
- src/app/demos/gen-ui-agent/page.tsx
- src/app/demos/gen-ui-agent/InlineAgentStateCard.tsx
- src/app/api/copilotkit/route.ts
- id: shared-state-streaming
name: State Streaming
description: Per-token state delta streaming from agent to UI
tags:
- agent-state
route: /demos/shared-state-streaming
animated_preview_url:
highlight:
- src/agents/shared_state_streaming.py
- src/app/demos/shared-state-streaming/page.tsx
- src/app/demos/shared-state-streaming/document-view.tsx
- src/app/api/copilotkit/route.ts
- id: shared-state-read-write
name: Shared State (Read + Write)
description: Bidirectional shared state — UI writes preferences via agent.setState; agent writes notes via a Command-returning tool
tags:
- agent-state
route: /demos/shared-state-read-write
animated_preview_url:
highlight:
- src/agents/shared_state_read_write.py
- src/app/demos/shared-state-read-write/page.tsx
- src/app/demos/shared-state-read-write/preferences-card.tsx
- src/app/demos/shared-state-read-write/notes-card.tsx
- src/app/api/copilotkit/route.ts
- id: subagents
name: Sub-Agents
description: Multiple agents with visible task delegation
tags:
- multi-agent
route: /demos/subagents
animated_preview_url:
highlight:
- src/agents/subagents.py
- src/app/demos/subagents/page.tsx
- src/app/demos/subagents/delegation-log.tsx
- src/app/api/copilotkit/route.ts
- id: prebuilt-sidebar
name: "Pre-Built: Sidebar"
description: Docked sidebar chat via <CopilotSidebar />
tags:
- chat-ui
route: /demos/prebuilt-sidebar
animated_preview_url:
highlight:
- src/agents/main.py
- src/app/demos/prebuilt-sidebar/page.tsx
- src/app/api/copilotkit/route.ts
- id: prebuilt-popup
name: "Pre-Built: Popup"
description: Floating popup chat via <CopilotPopup />
tags:
- chat-ui
route: /demos/prebuilt-popup
animated_preview_url:
highlight:
- src/agents/main.py
- src/app/demos/prebuilt-popup/page.tsx
- src/app/api/copilotkit/route.ts
- id: chat-slots
name: Chat Customization (Slots)
description: Customize CopilotChat via its slot system
tags:
- chat-ui
route: /demos/chat-slots
animated_preview_url:
highlight:
- src/agents/main.py
- src/app/demos/chat-slots/page.tsx
- src/app/demos/chat-slots/custom-welcome-screen.tsx
- src/app/api/copilotkit/route.ts
- id: headless-simple
name: Headless Chat (Simple)
description: Minimal custom chat surface built on useAgent
tags:
- chat-ui
route: /demos/headless-simple
animated_preview_url:
highlight:
- src/agents/main.py
- src/app/demos/headless-simple/page.tsx
- src/app/api/copilotkit/route.ts
- id: headless-complete
name: Headless Chat (Complete)
description: Full chat implementation built from scratch on useAgent
tags:
- chat-ui
route: /demos/headless-complete
animated_preview_url:
highlight:
- src/agents/headless_complete.py
- src/app/demos/headless-complete/page.tsx
- src/app/demos/headless-complete/message-list.tsx
- src/app/demos/headless-complete/use-rendered-messages.tsx
- src/app/api/copilotkit-mcp-apps/route.ts
- id: agentic-chat-reasoning
name: Reasoning
description: Visible reasoning/thinking chain alongside the final answer
tags:
- generative-ui
route: /demos/agentic-chat-reasoning
animated_preview_url:
highlight:
- src/app/demos/agentic-chat-reasoning/page.tsx
- src/app/demos/agentic-chat-reasoning/reasoning-block.tsx
- src/agents/reasoning_agent.py
- src/app/api/copilotkit/route.ts
- id: gen-ui-interrupt
name: In-Chat HITL (useInterrupt — low-level primitive)
description: Interactive component rendered inline in the chat via the lower-level `useInterrupt` primitive — direct control over the LangGraph interrupt lifecycle
tags:
- generative-ui
route: /demos/gen-ui-interrupt
animated_preview_url:
highlight:
- src/agents/interrupt_agent.py
- src/app/demos/gen-ui-interrupt/page.tsx
- src/app/demos/gen-ui-interrupt/time-picker-card.tsx
- src/app/api/copilotkit/route.ts
- id: declarative-gen-ui
name: Declarative Generative UI (A2UI)
description: Canonical A2UI BYOC — custom catalog (Card/StatusBadge/Metric/InfoRow/PrimaryButton) wired via a2ui.catalog on the provider; runtime injects the render_a2ui tool automatically
tags:
- generative-ui
route: /demos/declarative-gen-ui
animated_preview_url:
highlight:
- src/agents/a2ui_dynamic.py
- src/app/demos/declarative-gen-ui/page.tsx
- src/app/demos/declarative-gen-ui/a2ui/catalog.ts
- src/app/demos/declarative-gen-ui/a2ui/definitions.ts
- src/app/demos/declarative-gen-ui/a2ui/renderers.tsx
- src/app/api/copilotkit/route.ts
- id: a2ui-fixed-schema
name: Declarative Generative UI (A2UI — Fixed Schema)
description: A2UI rendering against a known client-side schema
tags:
- generative-ui
route: /demos/a2ui-fixed-schema
animated_preview_url:
highlight:
- src/agents/a2ui_fixed.py
- src/agents/a2ui_schemas/flight_schema.json
- src/agents/a2ui_schemas/booked_schema.json
- src/app/demos/a2ui-fixed-schema/page.tsx
- src/app/demos/a2ui-fixed-schema/a2ui/catalog.ts
- src/app/demos/a2ui-fixed-schema/a2ui/definitions.ts
- src/app/demos/a2ui-fixed-schema/a2ui/renderers.tsx
- src/app/api/copilotkit/route.ts
- id: mcp-apps
name: MCP Apps
description: MCP server-driven UI via activity renderers
tags:
- generative-ui
route: /demos/mcp-apps
animated_preview_url:
highlight:
- src/agents/mcp_apps_agent.py
- src/app/demos/mcp-apps/page.tsx
- src/app/api/copilotkit-mcp-apps/route.ts
- id: interrupt-headless
name: Headless Interrupt (testing)
description: Resolve langgraph interrupts from a plain button grid — no chat, no useInterrupt render prop
tags:
- interactivity
route: /demos/interrupt-headless
animated_preview_url:
highlight:
- src/agents/interrupt_agent.py
- src/app/demos/interrupt-headless/page.tsx
- src/app/api/copilotkit/route.ts
- id: readonly-state-agent-context
name: Readonly State (Agent Context)
description: Frontend provides read-only context to the agent via useAgentContext
tags:
- agent-state
route: /demos/readonly-state-agent-context
animated_preview_url:
highlight:
- src/agents/readonly_state_agent_context.py
- src/app/demos/readonly-state-agent-context/page.tsx
- src/app/api/copilotkit/route.ts
- id: reasoning-default-render
name: Reasoning (Default Render)
description: Built-in CopilotChatReasoningMessage renders without a custom slot
tags:
- generative-ui
route: /demos/reasoning-default-render
animated_preview_url:
highlight:
- src/agents/reasoning_agent.py
- src/app/demos/reasoning-default-render/page.tsx
- src/app/api/copilotkit/route.ts
- id: tool-rendering-reasoning-chain
name: Tool Rendering + Reasoning Chain (testing)
description: Sequential tool calls with reasoning tokens rendered side-by-side
tags:
- generative-ui
route: /demos/tool-rendering-reasoning-chain
animated_preview_url:
highlight:
- src/agents/tool_rendering_reasoning_chain_agent.py
- src/app/demos/tool-rendering-reasoning-chain/page.tsx
- src/app/demos/tool-rendering-reasoning-chain/weather-card.tsx
- src/app/demos/tool-rendering-reasoning-chain/flight-list-card.tsx
- src/app/api/copilotkit/route.ts
- id: byoc-json-render
name: BYOC json-render
description: Streaming hierarchical JSON UI spec rendered via @json-render/react, with a Zod-validated catalog (MetricCard + PieChart + BarChart)
tags:
- generative-ui
route: /demos/byoc-json-render
animated_preview_url:
highlight:
- src/agents/byoc_json_render_agent.py
- src/app/demos/byoc-json-render/page.tsx
- src/app/demos/byoc-json-render/json-render-renderer.tsx
- src/app/demos/byoc-json-render/registry.tsx
- src/app/demos/byoc-json-render/catalog.ts
- src/app/demos/byoc-json-render/metric-card.tsx
- src/app/demos/byoc-json-render/charts/bar-chart.tsx
- src/app/demos/byoc-json-render/charts/pie-chart.tsx
- src/app/demos/byoc-json-render/types.ts
- src/app/demos/byoc-json-render/suggestions.ts
- src/app/api/copilotkit-byoc-json-render/route.ts
- id: beautiful-chat
name: Beautiful Chat
description: Canonical polished starter chat — brand fonts, theme tokens, suggestion pills
tags:
- chat-ui
route: /demos/beautiful-chat
animated_preview_url:
highlight:
- src/agents/beautiful_chat.py
- src/app/demos/beautiful-chat/page.tsx
- src/app/demos/beautiful-chat/components/example-layout/index.tsx
- src/app/demos/beautiful-chat/components/example-canvas/index.tsx
- src/app/demos/beautiful-chat/components/generative-ui/charts/bar-chart.tsx
- src/app/demos/beautiful-chat/components/generative-ui/charts/pie-chart.tsx
- src/app/demos/beautiful-chat/hooks/use-example-suggestions.tsx
- src/app/demos/beautiful-chat/hooks/use-generative-ui-examples.tsx
- src/app/api/copilotkit-beautiful-chat/route.ts
- id: multimodal
name: Multimodal Attachments
description: Image and PDF uploads via CopilotChat attachments, processed by a vision-capable agent
tags:
- chat-ui
route: /demos/multimodal
animated_preview_url:
highlight:
- src/agents/multimodal_agent.py
- src/app/demos/multimodal/page.tsx
- src/app/demos/multimodal/sample-attachment-buttons.tsx
- src/app/api/copilotkit-multimodal/route.ts
- id: auth
name: Authentication
description: Bearer-token gate via runtime onRequest hook with unauthenticated / authenticated states
tags:
- chat-ui
route: /demos/auth
animated_preview_url:
highlight:
- src/app/demos/auth/page.tsx
- src/app/demos/auth/auth-banner.tsx
- src/app/demos/auth/use-demo-auth.ts
- src/app/demos/auth/demo-token.ts
- src/app/api/copilotkit-auth/[[...slug]]/route.ts
- id: byoc-hashbrown
name: BYOC Hashbrown
description: Streaming structured output via @hashbrownai/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
tags:
- generative-ui
route: /demos/byoc-hashbrown
animated_preview_url:
highlight:
- src/agents/byoc_hashbrown_agent.py
- src/app/demos/byoc-hashbrown/page.tsx
- src/app/demos/byoc-hashbrown/hashbrown-renderer.tsx
- src/app/demos/byoc-hashbrown/metric-card.tsx
- src/app/demos/byoc-hashbrown/charts/bar-chart.tsx
- src/app/demos/byoc-hashbrown/charts/pie-chart.tsx
- src/app/demos/byoc-hashbrown/types.ts
- src/app/demos/byoc-hashbrown/suggestions.ts
- src/app/api/copilotkit-byoc-hashbrown/route.ts
- id: open-gen-ui
name: Fully Open-Ended Generative UI
description: Agent generates UI from an arbitrary component library
tags:
- generative-ui
route: /demos/open-gen-ui
animated_preview_url:
highlight:
- src/agents/open_gen_ui_agent.py
- src/app/demos/open-gen-ui/page.tsx
- src/app/api/copilotkit-ogui/route.ts
- id: open-gen-ui-advanced
name: "Open-Ended Gen UI (Advanced: with frontend function calling)"
description: Agent-authored UI that can invoke frontend sandbox functions from inside the iframe
tags:
- generative-ui
route: /demos/open-gen-ui-advanced
animated_preview_url:
highlight:
- src/agents/open_gen_ui_advanced_agent.py
- src/app/demos/open-gen-ui-advanced/page.tsx
- src/app/demos/open-gen-ui-advanced/sandbox-functions.ts
- src/app/demos/open-gen-ui-advanced/suggestions.ts
- src/app/api/copilotkit-ogui/route.ts
- id: voice
name: Voice Input
description: Speech-to-text via @copilotkit/voice with a bundled sample audio button
tags:
- chat-ui
route: /demos/voice
animated_preview_url:
highlight:
- src/agents/main.py
- src/app/demos/voice/page.tsx
- src/app/demos/voice/sample-audio-button.tsx
- src/app/api/copilotkit-voice/[[...slug]]/route.ts
- id: agent-config
name: Agent Config Object
description: Forward a typed config object (tone / expertise / response length) from the provider to the agent's dynamic system prompt
tags:
- platform
route: /demos/agent-config
animated_preview_url:
highlight:
- src/agents/agent_config_agent.py
- src/app/demos/agent-config/page.tsx
- src/app/demos/agent-config/config-card.tsx
- src/app/demos/agent-config/use-agent-config.ts
- src/app/demos/agent-config/config-types.ts
- src/app/api/copilotkit-agent-config/route.ts