• CopilotKit์€ ํ’€์Šคํƒ ์—์ด์ „ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ React ๊ธฐ๋ฐ˜ ํ”„๋ก ํŠธ์—”๋“œ SDK
  • AG-UI ํ”„๋กœํ† ์ฝœ์˜ ์ฐฝ์‹œ์ž์ด์ž 1st Party ํด๋ผ์ด์–ธํŠธ โ€” AG-UI๋ฅผ ์ง์ ‘ ๋งŒ๋“  ํšŒ์‚ฌ
  • Chat UI, Generative UI, Shared State, HITL ์›Œํฌํ”Œ๋กœ๋ฅผ React ํ›…/์ปดํฌ๋„ŒํŠธ๋กœ ์ถ”์ƒํ™”ํ•˜์—ฌ ์ œ๊ณต
  • LangGraph, CrewAI, Google ADK, AWS Strands ๋“ฑ ๋ชจ๋“  AG-UI ํ˜ธํ™˜ ๋ฐฑ์—”๋“œ์™€ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•œ MIT ์˜คํ”ˆ์†Œ์Šค

CopilotKit์ด ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ

์—์ด์ „ํŠธ ๋ฐฑ์—”๋“œ๋Š” ์žˆ๋Š”๋ฐ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์ด๋ฅผ โ€œ์ œ๋Œ€๋กœโ€ ๋ณด์—ฌ์ฃผ๊ณ  ์ œ์–ดํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ ๋ณต์žกํ•˜๋‹ค:

  • ์ŠคํŠธ๋ฆฌ๋ฐ ์ฑ„ํŒ… UI, ๋„๊ตฌ ํ˜ธ์ถœ ์‹œ๊ฐํ™”, ์ƒํƒœ ๋™๊ธฐํ™”๋ฅผ ๋งค๋ฒˆ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ
  • ์—์ด์ „ํŠธ๊ฐ€ ์ƒ์„ฑํ•œ ๊ฒฐ๊ณผ๋ฅผ React ์ปดํฌ๋„ŒํŠธ๋กœ ๋ Œ๋”๋งํ•˜๋Š” ํ‘œ์ค€ ํŒจํ„ด์ด ์—†์Œ
  • ์—์ด์ „ํŠธ ์‹คํ–‰ ์ค‘ ์‚ฌ์šฉ์ž ์Šน์ธ/ํŽธ์ง‘์ด ํ•„์š”ํ•œ HITL ์›Œํฌํ”Œ๋กœ๊ฐ€ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๊นŒ๋‹ค๋กœ์›€
  • ๋ฐฑ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋งˆ๋‹ค ์—ฐ๊ฒฐ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ๋ฅผ ์žฌ์ž‘์„ฑํ•ด์•ผ ํ•จ

CopilotKit์€ ์ด ๋ฌธ์ œ๋ฅผ AG-UI ํ”„๋กœํ† ์ฝœ ์œ„์— React SDK๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•œ๋‹ค.

ํ•ด๋‹น ๊ฐœ๋…์ด ํ•„์š”ํ•œ ์ด์œ 

  • AG-UI๊ฐ€ ํ”„๋กœํ† ์ฝœ(์ด๋ฒคํŠธ ํ‘œ์ค€)์ด๋ผ๋ฉด, CopilotKit์€ ๊ทธ ํ”„๋กœํ† ์ฝœ ์œ„์— ๊ตฌ์ถ•๋œ ๊ตฌํ˜„์ฒด(React SDK + Runtime)
  • AG-UI๋งŒ์œผ๋กœ๋Š” ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์•ผ ํ•˜์ง€๋งŒ, CopilotKit์€ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์ปดํฌ๋„ŒํŠธ์™€ ํ›…์„ ์ œ๊ณต
  • ํ”„๋กœํ† ์ฝœ๊ณผ ๊ตฌํ˜„์ฒด์˜ ๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•ด์•ผ ์—์ด์ „ํŠธ ์•ฑ ์„ค๊ณ„ ์‹œ ์˜ฌ๋ฐ”๋ฅธ ๋ ˆ์ด์–ด๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ

AS-IS: AG-UI ํ”„๋กœํ† ์ฝœ๋งŒ์œผ๋กœ ์ง์ ‘ ๊ตฌํ˜„

sequenceDiagram
    autonumber
    participant Dev as ๊ฐœ๋ฐœ์ž
    participant FE as React Frontend
    participant AGUI as AG-UI Client
    participant Agent as AI Agent

    Dev->>FE: ์ฑ„ํŒ… UI ์ง์ ‘ ๊ตฌํ˜„
    Dev->>FE: ์ŠคํŠธ๋ฆฌ๋ฐ ํŒŒ์‹ฑ ๋กœ์ง ๊ตฌํ˜„
    Dev->>FE: ์ƒํƒœ ๋™๊ธฐํ™” ๋กœ์ง ๊ตฌํ˜„
    Dev->>FE: ๋„๊ตฌ ํ˜ธ์ถœ ๋ Œ๋”๋ง ๊ตฌํ˜„
    Dev->>FE: HITL ์Šน์ธ UI ๊ตฌํ˜„
    FE->>AGUI: HttpAgent ์ง์ ‘ ์—ฐ๊ฒฐ
    AGUI->>Agent: runAgent(input)
    Agent-->>AGUI: BaseEvent stream
    AGUI-->>FE: ์ด๋ฒคํŠธ ์ˆ˜๋™ ์ฒ˜๋ฆฌ
    Note over Dev,FE: ๋ชจ๋“  UI/๋กœ์ง์„<br/>๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ๊ตฌํ˜„

TO-BE: CopilotKit SDK ์‚ฌ์šฉ

sequenceDiagram
    autonumber
    participant Dev as ๊ฐœ๋ฐœ์ž
    participant CK as CopilotKit
    participant RT as Copilot Runtime
    participant Agent as AI Agent

    Dev->>CK: CopilotSidebar + useAgent
    Note over Dev,CK: 3์ค„๋กœ ์ฑ„ํŒ… UI ์™„์„ฑ
    CK->>RT: AG-UI ์ด๋ฒคํŠธ (์ž๋™)
    RT->>Agent: ๋ผ์šฐํŒ… + ์ธ์ฆ + ๋ฏธ๋“ค์›จ์–ด
    Agent-->>RT: ๋„ค์ดํ‹ฐ๋ธŒ ์ด๋ฒคํŠธ
    RT-->>CK: AG-UI ํ‘œ์ค€ ์ด๋ฒคํŠธ
    CK-->>CK: ์ž๋™ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ Œ๋”๋ง
    CK-->>CK: Generative UI ์ž๋™ ๋งˆ์šดํŠธ
    CK-->>CK: Shared State ๋™๊ธฐํ™”
    Note over Dev,CK: UI/์ƒํƒœ/์ธ์ฆ์„<br/>SDK๊ฐ€ ์ฒ˜๋ฆฌ

์•„ํ‚คํ…์ฒ˜

graph TB
    subgraph "Frontend - React"
        A["CopilotKit Provider"]
        B["CopilotSidebar / CopilotPopup"]
        C["useAgent / useCoAgent"]
        D["useCopilotAction (Frontend Tools)"]
        E["Generative UI Components"]
    end

    subgraph "Backend"
        F["Copilot Runtime"]
        G["AG-UI Middleware"]
        H["Agent Router"]
    end

    subgraph "Agent Backends"
        I["LangGraph"]
        J["CrewAI"]
        K["Google ADK"]
        L["Built-in Agent"]
    end

    A --> B
    A --> C
    A --> D
    A --> E
    B --> F
    C --> F
    F --> G
    G --> H
    H --> I
    H --> J
    H --> K
    H --> L

ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ

๋ ˆ์ด์–ด๊ตฌ์„ฑ ์š”์†Œ์—ญํ• 
Provider<CopilotKit>์ตœ์ƒ์œ„ ์ปจํ…์ŠคํŠธ. runtimeUrl๋กœ Runtime ์—ฐ๊ฒฐ
Prebuilt UI<CopilotSidebar>, <CopilotPopup>์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฑ„ํŒ… ์ปดํฌ๋„ŒํŠธ
HooksuseAgent, useCoAgent์—์ด์ „ํŠธ ์ƒํƒœ ์ ‘๊ทผยท์ œ์–ด. AG-UI ์œ„์— ์ง์ ‘ ์œ„์น˜
Frontend ToolsuseCopilotAction์—์ด์ „ํŠธ โ†’ ํ”„๋ก ํŠธ์—”๋“œ ์•ก์…˜ ํ•ธ๋“œ์˜คํ”„
Generative UITool Rendering, State Rendering์—์ด์ „ํŠธ ์ถœ๋ ฅ์„ React ์ปดํฌ๋„ŒํŠธ๋กœ ๋ Œ๋”๋ง
RuntimeCopilotRuntime์„œ๋ฒ„์‚ฌ์ด๋“œ ์—”๋“œํฌ์ธํŠธ. ์ธ์ฆ, ๋ผ์šฐํŒ…, ๋ฏธ๋“ค์›จ์–ด

์ฃผ์š” ๊ธฐ๋Šฅ

1. Chat UI (ํ”„๋ฆฌ๋นŒํŠธ ์ปดํฌ๋„ŒํŠธ)

import { CopilotKit } from "@copilotkit/react-core";
import { CopilotSidebar } from "@copilotkit/react-core/v2";
import "@copilotkit/react-ui/v2/styles.css";
 
export default function App() {
  return (
    <CopilotKit runtimeUrl="/api/copilotkit">
      <YourApp />
      <CopilotSidebar />
    </CopilotKit>
  );
}

์ŠคํŠธ๋ฆฌ๋ฐ, ๋„๊ตฌ ํ˜ธ์ถœ, ์—์ด์ „ํŠธ ์‘๋‹ต์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์™„์„ฑํ˜• ์ฑ„ํŒ… UI.

2. useAgent ํ›…

const { agent } = useAgent({ agentId: "my_agent" });
 
// ์—์ด์ „ํŠธ ์ƒํƒœ ์ฝ๊ธฐ/์“ฐ๊ธฐ
return (
  <div>
    <h1>{agent.state.city}</h1>
    <button onClick={() => agent.setState({ city: "NYC" })}>
      Set City
    </button>
  </div>
);

useCoAgent์˜ ์ƒ์œ„ ํ˜ธํ™˜. AG-UI ์œ„์— ์ง์ ‘ ์œ„์น˜ํ•˜์—ฌ ์—์ด์ „ํŠธ ์—ฐ๊ฒฐ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ œ์–ด.

3. Generative UI (3๊ฐ€์ง€ ํƒ€์ž…)

ํƒ€์ž…์„ค๋ช…ํ”„๋กœํ† ์ฝœ
Static์•ฑ์ด ์ œ์–ดํ•˜๋Š” ์•ˆ์ •์  ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋งAG-UI
Declarative์—์ด์ „ํŠธ๊ฐ€ UI ํŠธ๋ฆฌ ์ œ์•ˆ, ์•ฑ์ด ๊ฒ€์ฆยท๋งˆ์šดํŠธA2UI
Open-EndedMCP Apps, Open JSON UIMCP

4. Copilot Runtime

์„œ๋ฒ„์‚ฌ์ด๋“œ ๋ฐฑ์—”๋“œ ๋ ˆ์ด์–ด:

  • ์ธ์ฆ/๋ณด์•ˆ: API ํ‚ค๋ฅผ ์„œ๋ฒ„์— ๋ณด๊ด€, ํด๋ผ์ด์–ธํŠธ ๋…ธ์ถœ ๋ฐฉ์ง€
  • Agent Routing: ๋ณต์ˆ˜ ์—์ด์ „ํŠธ ์ž๋™ ํƒ์ƒ‰ยท๋ผ์šฐํŒ… ("default" ์—์ด์ „ํŠธ ์ง€์›)
  • AG-UI Middleware: ๋กœ๊น…, ๊ฐ€๋“œ๋ ˆ์ผ, ์š”์ฒญ ๋ณ€ํ™˜์„ ์„œ๋ฒ„์—์„œ ์‹คํ–‰
  • Built-in Middleware: A2UI, MCP Apps๋ฅผ ์„ค์ • ํ•œ ์ค„๋กœ ํ™œ์„ฑํ™”
const runtime = new CopilotRuntime({
  agents: {
    "default": new HttpAgent({ url: "https://my-agent.example.com" }),
  },
  a2ui: {},         // A2UI ์ž๋™ ํ™œ์„ฑํ™”
  mcpApps: {        // MCP ์„œ๋ฒ„ ์—ฐ๊ฒฐ
    servers: [
      { type: "http", url: "http://localhost:3108/mcp", serverId: "my-server" },
    ],
  },
});

AG-UI์™€์˜ ๊ด€๊ณ„

AG-UI Protocol (ํ‘œ์ค€)
  โ””โ”€โ”€ CopilotKit (๊ตฌํ˜„์ฒด, 1st Party Client)
        โ”œโ”€โ”€ React SDK (ํ”„๋ก ํŠธ์—”๋“œ ํ›…/์ปดํฌ๋„ŒํŠธ)
        โ”œโ”€โ”€ Copilot Runtime (๋ฐฑ์—”๋“œ ๋ฏธ๋“ค์›จ์–ด/๋ผ์šฐํŒ…)
        โ””โ”€โ”€ Copilot Cloud (ํ”„๋ฆฌ๋ฏธ์—„: observability, threads)
  • AG-UI๋Š” ํ”„๋กœํ† ์ฝœ ์ŠคํŽ™ โ€” ์ด๋ฒคํŠธ ํƒ€์ž…, ํ๋ฆ„ ํŒจํ„ด, ์ „์†ก ๊ทœ๊ฒฉ์„ ์ •์˜
  • CopilotKit์€ AG-UI ์œ„์˜ SDK โ€” ํ”„๋กœํ† ์ฝœ์„ React ์ปดํฌ๋„ŒํŠธ์™€ ์„œ๋ฒ„ ๋Ÿฐํƒ€์ž„์œผ๋กœ ๊ตฌํ˜„
  • AG-UI ํ”„๋กœํ† ์ฝœ ์ž์ฒด๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ(HttpAgent ์ง์ ‘ ์—ฐ๊ฒฐ), CopilotKit ์—†์ด๋Š” ์ธ์ฆ, ๋ผ์šฐํŒ…, UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ชจ๋‘ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ

์ง€์› ํ”„๋ ˆ์ž„์›Œํฌ

ํ”„๋ ˆ์ž„์›Œํฌ์ƒํƒœ
Built-in Agentโœ… (ํ”„๋ ˆ์ž„์›Œํฌ ๋ถˆํ•„์š”)
LangGraphโœ…
Google ADKโœ…
Microsoft Agent Frameworkโœ…
AWS Strandsโœ…
Mastraโœ…
Pydantic AIโœ…
CrewAI Flowsโœ…
Agno, AG2, LlamaIndexโœ…

์ฐธ๊ณ  ๋ฌธ์„œ