Skip to content
Dashboard

Chat SDK brings agents to your users

Link to headingChat needs integration abstraction

import { streamText } from "ai";
const result = await streamText({
model: "anthropic/claude-opus-4.6", // swap out the provider
prompt: "Hello world",
});

AI SDK abstracts away individual provider logic, making provider and model changes a simple string change.

Link to headingWrite once, deploy everywhere

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 now.");
});
bot.onSubscribedMessage(async (thread, message) => {
await thread.post(`You said: ${message.text}`);
});

Link to headingPlatform inconsistencies, handled

import { Table } from "chat";
await thread.post(
<Table
headers={["Name", "Status", "Region"]}
rows={[
["api-prod", "healthy", "iad1"],
["api-staging", "degraded", "sfo1"],
]}
/>
);

Link to headingWhy Chat SDK matters even for single platforms

Link to headingAI streaming, built in

import { streamText } from "ai";
bot.onNewMention(async (thread) => {
await thread.subscribe();
const result = await streamText({
model: "anthropic/claude-sonnet-4",
prompt: "Summarize what's happening in this thread.",
});
await thread.post(result.textStream);
});

Link to headingState that scales

import { createPostgresState } from "@chat-adapter/state-postgres";
import { createSlackAdapter } from "@chat-adapter/slack";
import { Chat } from "chat";
const bot = new Chat({
userName: "mybot",
adapters: {
slack: createSlackAdapter(),
},
state: createPostgresState(),
});

Link to headingWhatsApp, and beyond

import { createWhatsAppAdapter } from "@chat-adapter/whatsapp";
import { Chat } from "chat";
const bot = new Chat({
userName: "mybot",
adapters: {
whatsapp: createWhatsAppAdapter(),
},
state: createRedisState(),
});
bot.onNewMention(async (thread) => {
await thread.post("Hello from WhatsApp!");
});

Link to headingGetting started

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 against the SDK.

Migrate this agent to the Vercel Chat SDK, consolidating all platform-specific logic (Slack, Discord, GitHub, etc.) into a single unified implementation where core behavior is defined once and adapters handle platform differences. Remove duplicated integration logic and refactor to a clean “write once, deploy everywhere” architecture using Chat SDK as the abstraction layer. Use best practices from: npx skills add vercel/chat.

The Complete Guide to Chat SDK

Learn how Chat SDK works end-to-end: from core concepts to building your first bot to deploying it across Slack, Teams, and more.

Read the guide

Ready to deploy?