Skip to content
Dashboard

Chat SDK brings agents to your users

Copy 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.

Copy 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}`);
});

Copy 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"],
]}
/>
);

Copy link to headingWhy Chat SDK matters even for single platforms

Copy 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);
});

Copy 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(),
});

Copy 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!");
});

Copy 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 platforms.

Read the guide

Ready to deploy?