CopilotChat

Inline chat component you can place anywhere and size as needed.

What is this?

<CopilotChat> is the base prebuilt chat surface — drop it in wherever you want the chat to render and size it to fit your layout. <CopilotSidebar> and <CopilotPopup> are both thin wrappers over the same primitives; if you need a dedicated chat page or an inline pane alongside other content, this is the component you want.

When should I use this?

Use <CopilotChat> when you want:

  • A full-bleed chat that fills its container
  • An inline chat pane as part of a larger page
  • A dedicated /chat route
  • Maximum layout freedom (no docked chrome or launcher)

For a collapsible docked chat, use CopilotSidebar. For a floating bubble that overlays content, use CopilotPopup.

Live Demo: LangGraph (Python)agentic-chatOpen full demo →
CopilotChat example

Basic setup

Wrap your app in <CopilotKit> once — the provider wires the runtime, session, and agent registry — then render <CopilotChat> inside the layout of your choosing:

Code example

// [!code word:CopilotChat]
import { CopilotChat } from "@copilotkit/react-core/v2";

export default function YourComponent() {
  return (
    <CopilotChat
      labels={{
        modalHeaderTitle: "Your Assistant",
        welcomeMessageText: "Hi! How can I assist you today?",
      }}
    />
  );
}

Common props

<CopilotChat> is the root primitive — <CopilotSidebar> and <CopilotPopup> accept the same slots and labels, plus a few wrapper-specific props.

PropDescription
agentIdAgent slug the chat should talk to (must match an agent configured on the runtime).
labelsUser-facing copy — header title, placeholder, welcome, disclaimer.
messageViewSlot for the message list — see slots.
inputSlot for the composer area (text area, send button, disclaimer).
scrollViewSlot for the scroll container (e.g. custom feather/gradient).
suggestionViewSlot for the suggestion pills shown below messages.
welcomeScreenSlot for the empty-state. Pass false to disable.

Styling

<CopilotChat> is fully themable:

<CopilotChat
  agentId="my-agent"
  labels={{
    modalHeaderTitle: "Your Assistant",
    welcomeMessageText: "Hi! How can I assist you today?",
  }}
  messageView={{
    assistantMessage: {
      className: "bg-gray-50 rounded-xl p-4",
    },
  }}
/>