537 lines
19 KiB
YAML
537 lines
19 KiB
YAML
name: LangGraph (FastAPI)
|
|
slug: langgraph-fastapi
|
|
category: emerging
|
|
language: python
|
|
logo: /logos/langgraph-fastapi.svg
|
|
description: CopilotKit integration with LangGraph (FastAPI)
|
|
partner_docs: null
|
|
repo: https://github.com/CopilotKit/CopilotKit/tree/main/showcase/integrations/langgraph-fastapi
|
|
copilotkit_version: 2.0.0
|
|
deployed: true
|
|
docs_mode: generated
|
|
sort_order: 12
|
|
generative_ui:
|
|
- constrained-explicit
|
|
- a2ui-fixed-schema
|
|
- a2ui-dynamic-schema
|
|
interaction_modalities:
|
|
- sidebar
|
|
- embedded
|
|
- chat
|
|
managed_platform:
|
|
name: LangGraph Platform
|
|
url: https://langsmith.com
|
|
not_supported_features:
|
|
- shared-state-streaming
|
|
# QUARANTINED pending a @copilotkit/react-core release. gen-ui-interrupt /
|
|
# interrupt-headless fail turn-2 on a useInterrupt/useHeadlessInterrupt
|
|
# RESUME-PATH hook bug in @copilotkit/react-core/v2: backend resumes + streams
|
|
# (HTTP 200) but the frontend never appends the confirmation assistant bubble,
|
|
# so the harness DOM settle-check times out. Fix is a published-package change
|
|
# (out of scope here); honestly marked not-supported (skipped-incapable, not
|
|
# green, not red) rather than a regression. Demos remain wired below.
|
|
- gen-ui-interrupt
|
|
- interrupt-headless
|
|
features:
|
|
- cli-start
|
|
- agentic-chat
|
|
- tool-rendering
|
|
- tool-rendering-default-catchall
|
|
- tool-rendering-custom-catchall
|
|
- tool-rendering-reasoning-chain
|
|
- agentic-chat-reasoning
|
|
- reasoning-default-render
|
|
- hitl
|
|
- gen-ui-agent
|
|
- declarative-gen-ui
|
|
- a2ui-fixed-schema
|
|
- a2ui-recovery
|
|
- mcp-apps
|
|
- gen-ui-tool-based
|
|
- shared-state-read-write
|
|
- subagents
|
|
- beautiful-chat
|
|
- prebuilt-sidebar
|
|
- prebuilt-popup
|
|
- chat-slots
|
|
- chat-customization-css
|
|
- headless-simple
|
|
- headless-complete
|
|
- auth
|
|
- multimodal
|
|
- agent-config
|
|
- frontend-tools
|
|
- frontend-tools-async
|
|
- hitl-in-app
|
|
- hitl-in-chat
|
|
- hitl-in-chat-booking
|
|
- readonly-state-agent-context
|
|
- voice
|
|
- byoc-hashbrown
|
|
- byoc-json-render
|
|
- open-gen-ui
|
|
- open-gen-ui-advanced
|
|
a2ui_pattern: schema-loading
|
|
interrupt_pattern: native
|
|
thread_persistence_pattern: langgraph
|
|
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-fastapi"
|
|
- id: agentic-chat
|
|
name: Agentic Chat
|
|
description: Natural conversation with frontend tool execution
|
|
tags:
|
|
- chat-ui
|
|
route: /demos/agentic-chat
|
|
animated_preview_url:
|
|
- id: tool-rendering
|
|
name: Tool Rendering
|
|
description: Backend agent tools rendered as UI components
|
|
tags:
|
|
- agent-capabilities
|
|
route: /demos/tool-rendering
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/agents/src/tool_rendering_agent.py
|
|
- src/app/demos/tool-rendering/page.tsx
|
|
- id: hitl
|
|
name: In-Chat Human in the Loop (Original)
|
|
description: User approves agent actions before execution
|
|
tags:
|
|
- interactivity
|
|
route: /demos/hitl
|
|
animated_preview_url:
|
|
- id: gen-ui-agent
|
|
name: Agentic Generative UI
|
|
description: Long-running agent tasks with generated UI
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/gen-ui-agent
|
|
animated_preview_url:
|
|
- 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/app/demos/gen-ui-tool-based/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- src/app/demos/gen-ui-tool-based/bar-chart.tsx
|
|
- 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:
|
|
- id: shared-state-read-write
|
|
name: Shared State (Read + Write)
|
|
description: Bidirectional shared state — UI writes preferences, agent writes notes
|
|
tags:
|
|
- agent-state
|
|
route: /demos/shared-state-read-write
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/agents/src/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/src/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/src/agent.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/src/agent.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/src/agent.py
|
|
- src/app/demos/chat-slots/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- src/app/demos/chat-slots/slot-wrappers.tsx
|
|
- 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/src/agent.py
|
|
- src/app/demos/chat-customization-css/page.tsx
|
|
- src/app/demos/chat-customization-css/theme.css
|
|
- src/app/api/copilotkit/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/src/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: 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/src/agent.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/src/headless_complete.py
|
|
- src/app/demos/headless-complete/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- src/app/demos/headless-complete/chat/chat.tsx
|
|
- src/app/demos/headless-complete/hooks/use-tool-renderers.tsx
|
|
- src/app/demos/headless-complete/hooks/use-frontend-components.ts
|
|
- src/app/demos/headless-complete/hooks/use-headless-suggestions.ts
|
|
- src/app/demos/headless-complete/attachments/use-attachments-config.ts
|
|
- src/app/demos/headless-complete/tools/weather-card.tsx
|
|
- src/app/demos/headless-complete/tools/stock-card.tsx
|
|
- src/app/demos/headless-complete/tools/chart-card.tsx
|
|
- src/app/demos/headless-complete/tools/highlight-note.tsx
|
|
- 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: 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/src/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: 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/src/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
|
|
- 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/src/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/src/tool_rendering_agent.py
|
|
- 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/src/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: 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/src/interrupt_agent.py
|
|
- src/app/demos/gen-ui-interrupt/page.tsx
|
|
- src/app/demos/gen-ui-interrupt/_components/time-picker-card.tsx
|
|
- src/app/api/copilotkit/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/src/interrupt_agent.py
|
|
- src/app/demos/interrupt-headless/page.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
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/declarative-gen-ui
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/agents/src/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-declarative-gen-ui/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/src/a2ui_fixed.py
|
|
- src/agents/src/a2ui_schemas/flight_schema.json
|
|
- src/agents/src/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-a2ui-fixed-schema/route.ts
|
|
- id: a2ui-recovery
|
|
name: A2UI Error Recovery
|
|
description: 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.
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/a2ui-recovery
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/agents/src/recovery_agent.py
|
|
- src/app/demos/a2ui-recovery/page.tsx
|
|
- src/app/demos/a2ui-recovery/suggestions.ts
|
|
- src/app/api/copilotkit-a2ui-recovery/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/src/mcp_apps_agent.py
|
|
- src/app/demos/mcp-apps/page.tsx
|
|
- src/app/api/copilotkit-mcp-apps/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/src/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/src/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-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/src/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/src/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/src/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: 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/src/readonly_state_agent_context.py
|
|
- src/app/demos/readonly-state-agent-context/page.tsx
|
|
- src/app/api/copilotkit/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/src/agent.py
|
|
- src/app/demos/voice/page.tsx
|
|
- src/app/demos/voice/sample-audio-button.tsx
|
|
- src/app/api/copilotkit-voice/[[...slug]]/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/src/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/src/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
|