Looking for the chatbot template? It's now here.

Introduction

A unified SDK for building chat bots across Slack, Microsoft Teams, Google Chat, Discord, and more.

Chat SDK is a TypeScript library for building chat bots that work across multiple platforms with a single codebase. Write your bot logic once and deploy it to Slack, Microsoft Teams, Google Chat, Discord, GitHub, and Linear.

Why Chat SDK?

Building a chat bot that works across multiple platforms typically means maintaining separate codebases, learning different APIs, and handling platform-specific quirks individually. Chat SDK abstracts these differences behind a unified interface.

  • Single codebase for all platforms
  • Type-safe adapters and event handlers with full TypeScript support
  • Event-driven architecture with handlers for mentions, messages, reactions, button clicks, slash commands, and modals
  • Thread subscriptions for multi-turn conversations
  • Rich UI with JSX cards, buttons, and modals that render natively on each platform
  • AI streaming with first-class support for streaming LLM responses
  • Serverless-ready with distributed state via Redis and message deduplication

How it works

Chat SDK has three core concepts:

  1. Chat — the main entry point that coordinates adapters and routes events to your handlers
  2. Adapters — platform-specific implementations that handle webhook parsing, message formatting, and API calls
  3. State — a pluggable persistence layer for thread subscriptions and distributed locking
lib/bot.ts
import { Chat } from "chat";
import { createSlackAdapter } from "@chat-adapter/slack";
import { createRedisState } from "@chat-adapter/state-redis";

const bot = new Chat({
  userName: "mybot",
  adapters: {
    slack: createSlackAdapter(),
  },
  state: createRedisState(),
});

bot.onNewMention(async (thread) => {
  await thread.subscribe();
  await thread.post("Hello! I'm listening to this thread.");
});

Each adapter factory auto-detects credentials from environment variables (SLACK_BOT_TOKEN, SLACK_SIGNING_SECRET, REDIS_URL, etc.), so you can get started with zero config. Pass explicit values to override.

Supported platforms

PlatformPackageMentionsReactionsCardsModalsStreamingDMs
Slack@chat-adapter/slackYesYesYesYesNativeYes
Microsoft Teams@chat-adapter/teamsYesRead-onlyYesNoPost+EditYes
Google Chat@chat-adapter/gchatYesYesYesNoPost+EditYes
Discord@chat-adapter/discordYesYesYesNoPost+EditYes
GitHub@chat-adapter/githubYesYesNoNoNoNo
Linear@chat-adapter/linearYesYesNoNoNoNo

AI coding agent support

If you use an AI coding agent like Claude Code, you can teach it about Chat SDK by installing the skill:

npx skills add vercel/chat

This gives your agent access to Chat SDK's documentation, patterns, and best practices so it can help you build bots more effectively.

Packages

The SDK is distributed as a set of packages you install based on your needs:

PackageDescription
chatCore SDK with Chat class, types, JSX runtime, and utilities
@chat-adapter/slackSlack adapter
@chat-adapter/teamsMicrosoft Teams adapter
@chat-adapter/gchatGoogle Chat adapter
@chat-adapter/discordDiscord adapter
@chat-adapter/githubGitHub Issues adapter
@chat-adapter/linearLinear Issues adapter
@chat-adapter/state-redisRedis state adapter (production)
@chat-adapter/state-ioredisioredis state adapter (alternative)
@chat-adapter/state-memoryIn-memory state adapter (development)

On this page

GitHubEdit this page on GitHub