← Back to news

Show HN: The Channels SDK – Bring Any Agent to Any Channel (Slack, MS Teams)

github.com|45 points|13 comments|by davidmckayv|Aug 6, 2026

Show HN: The Channels SDK – Deploy Any Agent to Any Chat Platform

npm License: MIT

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.
  • PauseWait for Human ApprovalExecute\text{Pause} \rightarrow \text{Wait for Human Approval} \rightarrow \text{Execute}.

Compatibility & UI Mapping

The SDK ensures that a single interaction is translated perfectly across different surfaces.

FeatureSlackMS TeamsDiscord/Telegram
UI FrameworkBlock KitAdaptive CardsPlatform Native
InteractivityButtons/MenusChoice InputsNative UI
ConnectionManaged via IntelligenceManaged via IntelligenceComing 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 \rightarrow] (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:

  1. This installs the channels-setup skill.
  2. It provides a prompt that you can copy to your clipboard.
  3. The skill dynamically fetches the latest workflow from copilotkit.ai/channels-guide.md to ensure instructions are never outdated.
  4. 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 @latest tag. If you have an older version of copilotkit globally installed, it may shadow the current CLI.


💻 Technical Implementation

Setup Checklist

  • Node.js version 22\ge 22
  • 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: Ttotal=Tplatform+Tintelligence+Tagent_logicT_{total} = T_{platform} + T_{intelligence} + T_{agent\_logic} Where TT represents the latency of each hop in the communication chain.