Show HN: The Channels SDK – Bring Any Agent to Any Channel (Slack, MS Teams)
Show HN: The Channels SDK – Deploy Any Agent to Any Chat Platform
The Channels SDK is an open-source toolkit designed to bridge the gap between your AI agents and the communication hubs where professional work actually happens—specifically Slack, Microsoft Teams, Discord, and Telegram. It doesn't just send text; it provides a native, interactive UI.
The Core Value: Your agent retains its original business logic, specific model, and toolset, but gains the ability to live where your users already are.
🚀 Why Use Channels?
Channels acts as the connective tissue between an AG-UI-compatible agent and your team's preferred chat software. This allows the agent to:
- Analyze ongoing conversations.
- Stream responses in real-time.
- Execute tool calls and manage files.
- Render platform-specific interactive elements.
- .
Compatibility & UI Mapping
The SDK ensures that a single interaction is translated perfectly across different surfaces.
| Feature | Slack | MS Teams | Discord/Telegram |
|---|---|---|---|
| UI Framework | Block Kit | Adaptive Cards | Platform Native |
| Interactivity | Buttons/Menus | Choice Inputs | Native UI |
| Connection | Managed via Intelligence | Managed via Intelligence | Coming Soon |
Supported Agent Frameworks:
- LangGraph & CrewAI
- Mastra & Pydantic AI
- Google ADK
- CopilotKit's built-in agent
🛠️ Architecture Overview
The following diagram illustrates how the Channels SDK mediates between your logic and the end-user:
🏁 Getting Started
1. The "Zero-Config" Trial
You don't need to configure a runtime or provider credentials to see it in action. You can experience a live Channels agent immediately.
[Try Channels ] (Join a platform and test context handling and native UI).
2. Building Your Own
Your application logic remains on your infrastructure. CopilotKit Intelligence simply handles the platform handshake and delivers turns to your process.
The "Agent-Driven" Setup (Fastest Path)
Setting up a channel involves several moving parts: the project, the agent, the managed channel, the provider app, and the runtime. To simplify this, you can let a coding agent do the heavy lifting:
npx copilotkit@latest channels setup
How it works:
- This installs the
channels-setupskill. - It provides a prompt that you can copy to your clipboard.
- The skill dynamically fetches the latest workflow from
copilotkit.ai/channels-guide.mdto ensure instructions are never outdated. - Your agent then interacts with the Slack/Intelligence consoles using your own session.
- Note: If your agent lacks browser/computer-use tools, it will prompt you to add them first.
The Manual/Direct Path
If you prefer to skip the hosted guide and install the Slack workflow directly into your current coding agent:
npx copilotkit@latest skills install --skill setup-slack-channel -y
CLI Tooling Reference:
copilotkit channels add --adapter slack: Declares the channel and links the adapter.copilotkit channels status: Validates the alignment between your code, configuration, and the server.
[!IMPORTANT] Avoid Cache Issues: Always use the
@latesttag. If you have an older version ofcopilotkitglobally installed, it may shadow the current CLI.
💻 Technical Implementation
Setup Checklist
- Node.js version
- Long-running Node process or container
- CopilotKit Intelligence API Key
- Channel Code (from Intelligence Console)
Installation
# Install core dependencies
npm install @copilotkit/channels @copilotkit/runtime
# Install development dependencies
npm install --save-dev tsx typescript @types/node
# Set module type
npm pkg set type=module
Implementation Example
The Channels and Runtime packages are designed to work as a synchronized pair. Below is a basic listener implementation:
// channel.ts
import { createServer } from "node:http";
import { createChannel } from "@copilotkit/channels";
import {
BuiltInAgent,
CopilotKitIntelligence,
CopilotRuntime
} from "@copilotkit/runtime/v2";
import { createCopilotNodeListener } from "@copilotkit/runtime/v2/node";
function required(name: string): string {
const value = process.env[name];
if (!value) throw new Error(`Missing required environment variable: ${name}`);
return value;
}
function makeAgent(threadId: string) {
const agent = new BuiltInAgent({
model: "openai:gpt-5.4-mini"
});
agent.threadId = threadId;
return agent;
}
const channel = createChannel({
name: required("CHANNEL_CODE"),
identifyUser: "platform",
agent: makeAgent,
});
channel.onMessage(async ({ thread, message }) => {
await thread.sendMessage({
text: `Hello! I received your message.`,
context: [
{ description: "Originating platform", value: message.platform }
],
});
});
const intelligence = new CopilotKitIntelligence({
apiKey: required("COPILOTKIT_API_KEY"),
});
Security Note
To maintain security, no CLI flags accept credential values. Your bot tokens and signing secrets must reside exclusively in your .env file.
Complexity Analysis
The efficiency of the agent's response time can be modeled as: Where represents the latency of each hop in the communication chain.