CopilotKit

    CopilotKit/CopilotKit

    #987 this week

    The Frontend Stack for Agents & Generative UI. React + Angular. Makers of the AG-UI Protocol

    ai-agents
    ai
    llm
    web
    frontend
    agent
    agent-native
    agentic-ai
    agents
    ai-agent
    ai-assistant
    assistant
    assistant-chat-bots
    copilot
    copilot-chat
    generative-ui
    js
    nextjs
    open-source
    react
    reactjs
    ts
    typescript
    TypeScript
    MIT
    30.6K stars
    4.0K forks
    30.6K watching
    Updated 5/4/2026
    View on GitHub

    Scale data-heavy AI workloads

    while keeping costs low with S3-compatible storage.

    BackblazeLearn more

    Loading star history...

    Health Score

    65

    Activity
    100
    Community
    75
    Maintenance
    40
    Last release3d ago

    Weekly Growth

    +0

    +0.0% this week

    Contributors

    155

    Total contributors

    Open Issues

    447

    Use Cases & Benefits

    About CopilotKit

    header

    ⚡️ Quick Install

      npx copilotkit@latest init
    

    Read the Docs →    Try Copilot Cloud →    Join our Discord →

    🚀 Getting Started

    1. Install: Run a simple CLI command
    2. Configure: Add CopilotKit provider to your app
    3. Customize: Use headless UI or the customizable pre-built components
    4. Deploy: You're done!

    Complete getting started guide →

    Best in class support across the ecosystem

    ✨ Why CopilotKit?

    • Minutes to integrate - Get started quickly with our CLI
    • Framework agnostic - Works with React, Next.js, AGUI and more
    • Production-ready UI - Use customizable components or build with headless UI
    • Built-in security - Prompt injection protection
    • Open source - Full transparency and community-driven

    🧑‍💻 Real life use cases

    Deploy deeply-integrated AI assistants & agents that work alongside your users inside your applications.

    Headless UI

    🖥️ Code Samples

    Drop in these building blocks and tailor them to your needs.

    Build with Headless APIs and Pre-Built Components

    // Headless UI with full control
    const { visibleMessages, appendMessage, setMessages, ... } = useCopilotChat();
    
    // Pre-built components with deep customization options (CSS + pass custom sub-components)
    <CopilotPopup 
      instructions={"You are assisting the user as best as you can. Answer in the best way possible given the data you have."} 
      labels={{ title: "Popup Assistant", initial: "Need any help?" }} 
    />
    
    // Frontend actions + generative UI, with full streaming support
    useCopilotAction({
      name: "appendToSpreadsheet",
      description: "Append rows to the current spreadsheet",
      parameters: [
        { name: "rows", type: "object[]", attributes: [{ name: "cells", type: "object[]", attributes: [{ name: "value", type: "string" }] }] }
      ],
      render: ({ status, args }) => <Spreadsheet data={canonicalSpreadsheetData(args.rows)} />,
      handler: ({ rows }) => setSpreadsheet({ ...spreadsheet, rows: [...spreadsheet.rows, ...canonicalSpreadsheetData(rows)] }),
    });
    

    Integrate In-App CoAgents with LangGraph

    // Share state between app and agent
    const { agentState } = useCoAgent({ 
      name: "basic_agent", 
      initialState: { input: "NYC" } 
    });![banner](https://github.com/user-attachments/assets/b4d76fab-7439-4010-9319-a5b16546b569)
    ![class-support-ecosystem](https://github.com/user-attachments/assets/65de96b7-dc12-4c3d-a704-30c2d3b0ea3c)
    ![form-filling-copilot](https://github.com/user-attachments/assets/46b0ad80-33dc-4a49-94ba-f270a32fc123)
    ![chat-with-your-data](https://github.com/user-attachments/assets/4ffd9b7a-86d9-4b22-9c17-148de581e7c6)
    ![state-machine-copilot](https://github.com/user-attachments/assets/65581290-f4bd-4486-840b-27d3d0c77bc8)
    
    
    // agentic generative UI
    useCoAgentStateRender({
      name: "basic_agent",
      render: ({ state }) => <WeatherDisplay {...state.final_response} />,
    });
    
    // Human in the Loop (Approval)
    useCopilotAction({
      name: "email_tool",
      parameters: [
        {
          name: "email_draft",
          type: "string",
          description: "The email content",
          required: true,
        },
      ],
      renderAndWaitForResponse: ({ args, status, respond }) => {
        return (
          <EmailConfirmation
            emailContent={args.email_draft || ""}
            isExecuting={status === "executing"}
            onCancel={() => respond?.({ approved: false })}
            onSend={() =>
              respond?.({
                approved: true,
                metadata: { sentAt: new Date().toISOString() },
              })
            }
          />
        );
      },
    });
    
    // intermediate agent state streaming (supports both LangGraph.js + LangGraph python)
    const modifiedConfig = copilotKitCustomizeConfig(config, {
      emitIntermediateState: [{ 
        stateKey: "outline", 
        tool: "set_outline", 
        toolArgument: "outline" 
      }],
    });
    const response = await ChatOpenAI({ model: "gpt-4o" }).invoke(messages, modifiedConfig);
    

    Banner 2 A Banner 2 A-1 Banner 2 A-2

    🖥️ AG-UI: The Agent–User Interaction Protocol

    Connect agent workflow to user-facing apps, with deep partnerships and 1st-party integrations across the agentic stack—including LangGraph, CrewAI, and more.

    Learn more in the AG-UI README →

    🤝 Community

    Have questions or need help?

    Join our Discord →
    Read the Docs →
    Try Copilot Cloud →

    Stay up to date with our latest releases!

    Follow us on LinkedIn →
    Follow us on X →

    🙋🏽‍♂️ Contributing

    Thanks for your interest in contributing to CopilotKit! 💜

    We value all contributions, whether it's through code, documentation, creating demo apps, or just spreading the word.

    Here are a few useful resources to help you get started:

    📄 License

    This repository's source code is available under the MIT License.

    Discover Repositories

    Search across tracked repositories by name or description