CopilotKit Open Sources Channels SDK: An MIT Licensed Library That Runs Any AG-UI Agent Inside Slack And Microsoft Teams
CopilotKit has just released the Channels SDK .

Open Sources Channels SDK: An MIT Licensed Library That Runs Any AG-UI Agent Inside Slack And Microsoft Teams">
CopilotKit has just released the Channels SDK . It is an open source library that puts an existing agent inside a messaging platform. The core assumption is focused and verifiable. You already have an agent. It already has a model, tools and business logic. Channels gives it a place to work with people, without a rewrite per platform.
It runs on Slack and Microsoft Teams as early access surfaces. Discord and Google Chat are named as planned.
The connection to your agent is AG-UI , the agent-user interaction protocol CopilotKit maintains. Anything that speaks AG-UI works. That includes LangGraph, CrewAI, Mastra, Pydantic AI, Google ADK, and a plain HTTP agent you wrote yourself. Your model and orchestration layer stay where they are.
The distinction that matters is what a channel is not . It is not a second agent. It is a transport along with a rendering target. You write a message once, and the adapter lowers it into each platform’s native format. That means Block Kit in Slack and Adaptive Cards in Teams. Not a text blob pushed through a webhook.
Yes. The SDK is published, MIT licensed, and has a documented runtime contract.
The split of responsibility follows from that. You run your agent, model credentials, tools and business logic. You run the long-running Channels listener, plus application state, deployment and logs. Intelligence manages the Slack and Teams platform credentials. It also owns platform ingress, credentialed delivery, runtime registration, health and reconnects.
Rendering is worth one more sentence. Messages are authored as JSX and lowered to a serializable intermediate representation. The adapter translates that into the platform's native format, and interactive handlers are bound through an action store.
The lifecycle is the part worth understanding. There is no channel.start(). The runtime owns activation.
Creating the listener starts the channel connection. Awaiting channels.ready() makes a broken configuration fail startup loudly instead of silently. channels.status() returns an overall state you can gate on, and channels.stop() tears the channel down for graceful shutdown.
The runtime exposes listeners for Node, Hono and Express through the @copilotkit/runtime/v2/* subpaths.
Source: MarkTechPost