Copilotkit Agui

CopilotKit/skills/skills/copilotkit-agui

by CopilotKit8d78cf908844a30d2909f7da4eb8cb6f51fa02adNo license38 starsListed Oct 9, 2026Updated Oct 9, 2026Repository updated 4 months ago

Use when building custom agent backends, implementing the AG-UI protocol, debugging streaming issues, or understanding how agents communicate with frontends. Covers event types, SSE transport, AbstractAgent/HttpAgent patterns, state synchronization, tool calls, and human-in-the-loop flows.

ArchivedInstructions onlySoftware DevelopmentAI & Agents
AI-generated overview

Reference for the AG-UI protocol covering event types, SSE transport, agent backends, and state sync.

What it does
This skill provides reference material on CopilotKit's AG-UI protocol for agent-to-UI communication. It documents event families, SSE wire format, package roles, protocol rules, and a workflow for building an AG-UI backend. It also points to bundled reference files on the protocol spec, backend construction, event flow diagrams, and the client SDK.
When to use it
Use it when building a custom agent backend that speaks AG-UI, implementing AbstractAgent.run(), or debugging streaming and event-ordering problems. It is also meant for work on state synchronization and human-in-the-loop interrupt/resume flows.
Requirements
No scripts; instructions and reference documents only. Working with the described packages (@ag-ui/core, @ag-ui/client, @ag-ui/encoder) would require a JavaScript/Node environment and network access for npm installation.

AG-UI Protocol Skill

Overview

AG-UI (Agent-User Interaction) is CopilotKit's open event-based protocol for agent-to-UI communication. All agent-frontend interaction flows through typed events streamed over SSE (Server-Sent Events) or binary protobuf transport. Agents implement AbstractAgent.run() returning an RxJS Observable<BaseEvent>, and the client SDK handles event application, state management, and message history.

When to Use

  • Building a custom agent backend that needs to speak AG-UI
  • Implementing AbstractAgent.run() for a new framework integration
  • Debugging why events aren't reaching the frontend or arriving malformed
  • Understanding event ordering (lifecycle, text, tool calls, state)
  • Working with state synchronization (snapshots vs JSON Patch deltas)
  • Implementing human-in-the-loop interrupt/resume flows
  • Troubleshooting SSE streaming or encoding issues

When NOT to Use

  • For CopilotKit React hooks and frontend components, use copilotkit-develop
  • For CopilotKit runtime setup and configuration, use copilotkit-setup
  • For framework-specific integration guides (LangGraph, Mastra, CrewAI), use copilotkit-integrations

Quick Reference

Event Families

FamilyEventsPurpose
LifecycleRUN_STARTED, RUN_FINISHED, RUN_ERROR, STEP_STARTED, STEP_FINISHEDRun boundaries and progress
TextTEXT_MESSAGE_START, TEXT_MESSAGE_CONTENT, TEXT_MESSAGE_ENDStreaming text messages
Tool CallsTOOL_CALL_START, TOOL_CALL_ARGS, TOOL_CALL_END, TOOL_CALL_RESULTAgent tool invocations
StateSTATE_SNAPSHOT, STATE_DELTA, MESSAGES_SNAPSHOTState synchronization
ReasoningREASONING_START, REASONING_MESSAGE_START/CONTENT/END, REASONING_END, REASONING_ENCRYPTED_VALUEChain-of-thought visibility
ActivityACTIVITY_SNAPSHOT, ACTIVITY_DELTAStructured progress updates
CustomRAW, CUSTOMExtension points

Convenience Chunk Events

TEXT_MESSAGE_CHUNK and TOOL_CALL_CHUNK auto-expand into Start/Content/End triads via the client's transformChunks pipeline. Use these for simpler backend implementations.

SSE Wire Format

Each event is a JSON object sent as an SSE data line:

data: {"type":"RUN_STARTED","threadId":"t1","runId":"r1"}\n\ndata: {"type":"TEXT_MESSAGE_START","messageId":"m1","role":"assistant"}\n\ndata: {"type":"TEXT_MESSAGE_CONTENT","messageId":"m1","delta":"Hello"}\n\ndata: {"type":"TEXT_MESSAGE_END","messageId":"m1"}\n\ndata: {"type":"RUN_FINISHED","threadId":"t1","runId":"r1"}\n\n

Packages

PackagenpmPurpose
@ag-ui/coreEvents, types, schemasProtocol definition
@ag-ui/clientAbstractAgent, HttpAgent, middleware, event applicationClient SDK
@ag-ui/encoderEventEncoder (SSE + protobuf)Server-side encoding

Workflow: Building an AG-UI Backend

  1. Define your endpoint -- Accept POST with RunAgentInput body, respond with text/event-stream
  2. Parse input -- Extract threadId, runId, messages, tools, state, context from the request body
  3. Emit events in order -- RUN_STARTED first, then content events, then RUN_FINISHED or RUN_ERROR
  4. Encode as SSE -- Use @ag-ui/encoder's EventEncoder.encode() or manually write data: JSON\n\n
  5. Handle tool results -- Client sends TOOL_CALL_RESULT back; agent processes and continues

See references/building-agents.md for a complete working example.

Key Protocol Rules

  • Every run MUST start with RUN_STARTED and end with RUN_FINISHED or RUN_ERROR
  • TEXT_MESSAGE_CONTENT.delta must be non-empty
  • Tool call events are linked by toolCallId
  • STATE_DELTA uses RFC 6902 JSON Patch operations
  • Multiple sequential runs are supported -- each must complete before the next starts
  • Messages accumulate across runs; state continues unless reset by STATE_SNAPSHOT

References

  • references/protocol-spec.md -- Complete event type reference with schemas and examples
  • references/building-agents.md -- Step-by-step guide to building AG-UI backends
  • references/event-flow-diagrams.md -- ASCII sequence diagrams for common flows
  • references/client-sdk.md -- @ag-ui/client API reference

Source and attribution

Source:CopilotKit/skillsinskills/copilotkit-aguiat commit8d78cf9

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal