const ADAPTERS: { agentphone: { description: "Unified SMS, MMS, iMessage, and voice adapter for Chat SDK with HMAC-verified webhooks, iMessage reactions, and voice call transcripts via AgentPhone."; env: { config: readonly ["apiUrl", "userName"]; optional: readonly [EnvVar]; required: readonly [EnvVar, EnvVar] }; factoryExport: "createAgentPhoneAdapter"; group: "vendor-official"; name: "AgentPhone"; packageName: "@agentphone/chat-sdk-adapter"; peerDeps: readonly []; slug: "agentphone"; type: "platform" }; cloudflare-agents: { description: "Cloudflare Agents state adapter for Chat SDK. Stores subscriptions, locks, queues, and history in Durable Object SQLite via ChatSdkStateAgent sub-agents."; env: { config: readonly ["parent", "agent", "name", "shardKey", "keyShard"]; notes: "No environment variables are required. State is stored in Durable Object SQLite via ChatSdkStateAgent sub-agents; add the parent Agent to your Durable Object migration and re-export ChatSdkStateAgent from the Worker entry point." }; factoryExport: "createChatSdkState"; group: "vendor-official"; name: "Cloudflare Agents"; packageName: "agents"; peerDeps: readonly []; slug: "cloudflare-agents"; type: "state" }; dial: { description: "SMS, MMS, iMessage, and inbound voice-call transcripts for Chat SDK, built and maintained by Dial. One handler answers phone traffic the same way it answers Slack/Teams/Discord, with HMAC-signed webhooks and replies over @getdial/sdk."; env: { config: readonly ["apiBaseUrl", "botName", "logger"]; optional: readonly [EnvVar, EnvVar, EnvVar]; required: readonly [EnvVar, EnvVar] }; factoryExport: "createDialAdapter"; group: "vendor-official"; name: "Dial"; packageName: "@getdial/chat-sdk-adapter"; peerDeps: readonly []; slug: "dial"; type: "platform" }; discord: { description: "Create Discord bots with slash commands, threads, and rich embeds."; env: { optional: readonly [EnvVar, EnvVar, EnvVar]; required: readonly [EnvVar, EnvVar, EnvVar] }; factoryExport: "createDiscordAdapter"; group: "official"; name: "Discord"; packageName: "@chat-adapter/discord"; peerDeps: readonly ["discord-api-types", "discord-interactions", "discord.js"]; slug: "discord"; type: "platform" }; gchat: { description: "Integrate with Google Chat spaces for team collaboration and automated workflows."; env: { credentialModes: readonly [{ label: "Service account credentials"; vars: readonly [EnvVar] }, { label: "Application Default Credentials"; vars: readonly [EnvVar] }]; optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar] }; factoryExport: "createGoogleChatAdapter"; group: "official"; name: "Google Chat"; packageName: "@chat-adapter/gchat"; peerDeps: readonly ["@googleapis/chat", "@googleapis/workspaceevents"]; slug: "gchat"; type: "platform" }; github: { description: "Build bots that respond to pull request and issue comment threads."; env: { credentialModes: readonly [{ label: "Personal access token"; vars: readonly [EnvVar] }, { label: "GitHub App"; vars: readonly [EnvVar, EnvVar] }]; optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar]; required: readonly [EnvVar] }; factoryExport: "createGitHubAdapter"; group: "official"; name: "GitHub"; packageName: "@chat-adapter/github"; peerDeps: readonly ["@octokit/auth-app", "@octokit/rest"]; slug: "github"; type: "platform" }; gmail: { description: "Receive labelled emails and send threaded replies, or use standalone Gmail APIs without the Chat runtime."; env: { config: readonly ["fetch", "logger", "webhookVerifier"]; credentialModes: readonly [{ label: "OAuth refresh credentials"; vars: readonly [EnvVar, EnvVar, EnvVar] }, { label: "Access token"; vars: readonly [EnvVar] }]; notes: "A custom webhookVerifier replaces Pub/Sub JWT verification; audience and service account email are then optional. Deploy the webhook before calling watch(), renew daily and schedule periodic sync() with shared persistent state. The intake label is not an OAuth access boundary."; optional: readonly [EnvVar, EnvVar]; required: readonly [EnvVar, EnvVar, EnvVar, EnvVar, EnvVar] }; factoryExport: "createGmailAdapter"; group: "official"; name: "Gmail"; packageName: "@chat-adapter/gmail"; peerDeps: readonly ["html-to-text", "jose", "mimetext", "postal-mime", "zod"]; slug: "gmail"; type: "platform" }; instagram: { description: "Build bots for Instagram Direct with DMs, media, quick replies, reactions, and story replies."; env: { config: readonly ["apiVersion", "userName"]; optional: readonly [EnvVar]; required: readonly [EnvVar, EnvVar, EnvVar, EnvVar] }; factoryExport: "createInstagramAdapter"; group: "official"; name: "Instagram"; packageName: "@chat-adapter/instagram"; peerDeps: readonly []; slug: "instagram"; type: "platform" }; ioredis: { description: "Redis state adapter using ioredis with cluster and sentinel support."; env: { config: readonly ["url or client", "keyPrefix"]; notes: "Either a Redis URL or an existing ioredis client is required." }; factoryExport: "createIoRedisState"; group: "official"; name: "ioredis"; packageName: "@chat-adapter/state-ioredis"; peerDeps: readonly ["ioredis"]; slug: "ioredis"; type: "state" }; kapso: { description: "Kapso-first WhatsApp adapter for Chat SDK with signed Kapso webhooks, WhatsApp replies, buttons, media, reactions, and conversation history."; env: { config: readonly ["client", "verifyWebhookSignatures", "appSecret", "webhookVerifyToken", "historyFields", "cacheSize", "logger", "debug"]; optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar]; required: readonly [EnvVar] }; factoryExport: "createKapsoAdapter"; group: "vendor-official"; name: "Kapso"; packageName: "@kapso/chat-adapter"; peerDeps: readonly []; slug: "kapso"; type: "platform" }; lark: { description: "Lark / Feishu adapter for Chat SDK with native cardkit streaming, interactive cards, and reactions."; env: { optional: readonly [EnvVar]; required: readonly [EnvVar, EnvVar] }; factoryExport: "createLarkAdapter"; group: "vendor-official"; name: "Lark / Feishu"; packageName: "@larksuite/vercel-chat-adapter"; peerDeps: readonly []; slug: "lark"; type: "platform" }; linear: { description: "Automate Linear issue comment threads with bot responses and workflows."; env: { credentialModes: readonly [{ label: "Personal API key"; vars: readonly [EnvVar] }, { label: "Access token"; vars: readonly [EnvVar] }, { label: "Client credentials"; vars: readonly [EnvVar, EnvVar] }, { label: "OAuth app"; vars: readonly [EnvVar, EnvVar] }]; optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar]; required: readonly [EnvVar] }; factoryExport: "createLinearAdapter"; group: "official"; name: "Linear"; packageName: "@chat-adapter/linear"; peerDeps: readonly ["@linear/sdk"]; slug: "linear"; type: "platform" }; linq: { description: "iMessage and SMS adapter for Chat SDK, built and maintained by Linq."; env: { config: readonly ["baseURL"]; required: readonly [EnvVar, EnvVar] }; factoryExport: "createLinqAdapter"; group: "vendor-official"; name: "Linq"; packageName: "@linqapp/chat-sdk-adapter"; peerDeps: readonly []; slug: "linq"; type: "platform" }; liveblocks: { description: "Liveblocks Comments adapter for building conversational bots on top of Liveblocks rooms, threads, and comments."; env: { config: readonly ["botUserId", "botUserName", "resolveUsers", "resolveGroupsInfo"]; required: readonly [EnvVar, EnvVar] }; factoryExport: "createLiveblocksAdapter"; group: "vendor-official"; name: "Liveblocks"; packageName: "@liveblocks/chat-sdk-adapter"; peerDeps: readonly []; slug: "liveblocks"; type: "platform" }; matrix: { description: "Matrix adapter for Chat SDK, built and maintained by Beeper."; env: { config: readonly ["recoveryKey", "commandPrefix", "roomAllowlist", "inviteAutoJoin", "e2ee", "persistence"]; credentialModes: readonly [{ label: "Access token"; vars: readonly [EnvVar, EnvVar] }, { label: "Username and password"; vars: readonly [EnvVar, EnvVar, EnvVar] }]; optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar] }; factoryExport: "createMatrixAdapter"; group: "vendor-official"; name: "Beeper Matrix"; packageName: "@beeper/chat-adapter-matrix"; peerDeps: readonly []; slug: "matrix"; type: "platform" }; memory: { description: "In-memory state adapter for development and testing environments."; env: { notes: "No environment variables are required. State is kept in the current process." }; factoryExport: "createMemoryState"; group: "official"; name: "Memory"; packageName: "@chat-adapter/state-memory"; peerDeps: readonly []; slug: "memory"; type: "state" }; messenger: { description: "Build bots for Facebook Messenger with support for templates, buttons, reactions, and postbacks."; env: { config: readonly ["apiVersion", "userName"]; required: readonly [EnvVar, EnvVar, EnvVar] }; factoryExport: "createMessengerAdapter"; group: "official"; name: "Messenger"; packageName: "@chat-adapter/messenger"; peerDeps: readonly []; slug: "messenger"; type: "platform" }; notion: { description: "Participate in Notion page and block comment discussions via webhooks and the Comments API."; env: { config: readonly ["apiBaseUrl", "streamingEditIntervalMs", "externalUrlPollDelaysMs"]; optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar]; required: readonly [EnvVar, EnvVar] }; factoryExport: "createNotionAdapter"; group: "official"; name: "Notion"; packageName: "@chat-adapter/notion"; peerDeps: readonly []; slug: "notion"; type: "platform" }; novu: { description: "Multi-channel agents with one-click channel setup, identity and multi-tenancy"; env: { optional: readonly [EnvVar]; required: readonly [EnvVar, EnvVar] }; factoryExport: "createNovuAdapter"; group: "vendor-official"; name: "Novu"; packageName: "@novu/chat-sdk-adapter"; peerDeps: readonly []; slug: "novu"; type: "platform" }; photon: { description: "iMessage adapter for Chat SDK, built and maintained by Photon. Cloud, self-hosted, and on-device (macOS) iMessage over spectrum-ts."; env: { config: readonly ["clients", "logger"]; credentialModes: readonly [{ label: "Spectrum Cloud"; vars: readonly [EnvVar, EnvVar] }, { label: "Self-hosted"; vars: readonly [EnvVar, EnvVar] }]; optional: readonly [EnvVar, EnvVar, EnvVar] }; factoryExport: "createiMessageAdapter"; group: "vendor-official"; name: "Photon"; packageName: "@photon-ai/chat-adapter-imessage"; peerDeps: readonly []; slug: "photon"; type: "platform" }; postgres: { description: "Production state adapter using PostgreSQL for persistence and distributed locking."; env: { config: readonly ["client", "keyPrefix", "autoCreateSchema"]; credentialModes: readonly [{ label: "Connection URL"; vars: readonly [EnvVar] }, { label: "Existing client"; vars: readonly [] }] }; factoryExport: "createPostgresState"; group: "official"; name: "PostgreSQL"; packageName: "@chat-adapter/state-pg"; peerDeps: readonly ["pg"]; slug: "postgres"; type: "state" }; redis: { description: "Production-ready state adapter using Redis for persistence and distributed locking."; env: { config: readonly ["client", "keyPrefix"]; credentialModes: readonly [{ label: "Connection URL"; vars: readonly [EnvVar] }, { label: "Existing client"; vars: readonly [] }] }; factoryExport: "createRedisState"; group: "official"; name: "Redis"; packageName: "@chat-adapter/state-redis"; peerDeps: readonly ["redis"]; slug: "redis"; type: "state" }; resend: { description: "Bidirectional email adapter for Chat SDK with threading, rich HTML emails, and attachment support via Resend."; env: { config: readonly ["fromAddress", "fromName"]; required: readonly [EnvVar, EnvVar] }; factoryExport: "createResendAdapter"; group: "vendor-official"; name: "Resend"; packageName: "@resend/chat-sdk-adapter"; peerDeps: readonly ["@chat-adapter/shared"]; slug: "resend"; type: "platform" }; sendblue: { description: "iMessage, SMS, and RCS adapter for Chat SDK, built and maintained by Sendblue."; env: { config: readonly ["webhookSecretHeader", "allowedServices"]; optional: readonly [EnvVar, EnvVar]; required: readonly [EnvVar, EnvVar, EnvVar] }; factoryExport: "createSendblueAdapter"; group: "vendor-official"; name: "Sendblue"; packageName: "chat-adapter-sendblue"; peerDeps: readonly []; slug: "sendblue"; type: "platform" }; slack: { description: "Build bots for Slack workspaces with full support for threads, reactions, and interactive messages."; env: { credentialModes: readonly [{ label: "Single workspace bot token"; vars: readonly [EnvVar, EnvVar] }, { label: "Multi-workspace OAuth"; vars: readonly [EnvVar, EnvVar, EnvVar] }]; optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar] }; factoryExport: "createSlackAdapter"; group: "official"; name: "Slack"; packageName: "@chat-adapter/slack"; peerDeps: readonly ["@slack/socket-mode", "@slack/web-api"]; slug: "slack"; type: "platform" }; teams: { description: "Deploy bots to Microsoft Teams with adaptive cards, mentions, and conversation threading."; env: { credentialModes: readonly [{ label: "Bot Framework client secret"; vars: readonly [EnvVar, EnvVar] }]; optional: readonly [EnvVar, EnvVar] }; factoryExport: "createTeamsAdapter"; group: "official"; name: "Microsoft Teams"; packageName: "@chat-adapter/teams"; peerDeps: readonly ["@microsoft/teams.api", "@microsoft/teams.apps", "@microsoft/teams.cards", "@microsoft/teams.graph-endpoints"]; slug: "teams"; type: "platform" }; telegram: { description: "Connect to Telegram with support for groups, channels, and inline keyboards."; env: { config: readonly ["nativeStreaming", "streamingEditIntervalMs"]; optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar, EnvVar, EnvVar]; required: readonly [EnvVar] }; factoryExport: "createTelegramAdapter"; group: "official"; name: "Telegram"; packageName: "@chat-adapter/telegram"; peerDeps: readonly []; slug: "telegram"; type: "platform" }; twilio: { description: "Build SMS, MMS, and RCS bots with Twilio Messaging webhooks and the Messages API."; env: { config: readonly ["webhookUrl", "webhookVerifier", "statusCallbackUrl", "apiUrl", "contentApiUrl"]; credentialModes: readonly [{ label: "Account credentials"; vars: readonly [EnvVar, EnvVar] }]; optional: readonly [EnvVar, EnvVar, EnvVar] }; factoryExport: "createTwilioAdapter"; group: "official"; name: "Twilio"; packageName: "@chat-adapter/twilio"; peerDeps: readonly []; slug: "twilio"; type: "platform" }; velt: { description: "Velt Comments adapter for bots that read, reply, mention, and start threads in anchored comments across documents, rich-text editors, canvases, PDFs, and video. Includes per-comment document context and an AI streaming-reply sample app."; env: { config: readonly ["botUserId", "botUserName", "webhookVersion", "resolveUsers", "selfHostingConfig"]; optional: readonly [EnvVar, EnvVar]; required: readonly [EnvVar, EnvVar] }; factoryExport: "createVeltAdapter"; group: "vendor-official"; name: "Velt"; packageName: "@veltdev/chat-sdk-adapter"; peerDeps: readonly []; slug: "velt"; type: "platform" }; web: { description: "Serve a browser chat UI from the same bot using the AI SDK useChat protocol — works out of the box with @ai-sdk/react and ai-elements."; env: { config: readonly ["userName", "getUser", "persistMessageHistory", "threadIdFor"]; notes: "The Web adapter delegates browser request authentication to the getUser config function." }; factoryExport: "createWebAdapter"; group: "official"; name: "Web"; packageName: "@chat-adapter/web"; peerDeps: readonly []; slug: "web"; type: "platform" }; whatsapp: { description: "Connect to WhatsApp Business Cloud for customer messaging and automated conversations."; env: { optional: readonly [EnvVar, EnvVar]; required: readonly [EnvVar, EnvVar, EnvVar, EnvVar] }; factoryExport: "createWhatsAppAdapter"; group: "official"; name: "WhatsApp Business Cloud"; packageName: "@chat-adapter/whatsapp"; peerDeps: readonly []; slug: "whatsapp"; type: "platform" }; x: { description: "Reply to public mentions and hold direct message conversations on X (Twitter) with the X API v2."; env: { credentialModes: readonly [{ label: "Static access token"; vars: readonly [EnvVar] }, { label: "Managed OAuth refresh"; vars: readonly [EnvVar, EnvVar] }]; optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar, EnvVar]; required: readonly [EnvVar] }; factoryExport: "createXAdapter"; group: "official"; name: "X"; packageName: "@chat-adapter/x"; peerDeps: readonly []; slug: "x"; type: "platform" }; xchat: { description: "Hold encrypted 1:1 and group conversations on XChat with all cryptography handled inside the adapter."; env: { optional: readonly [EnvVar, EnvVar, EnvVar, EnvVar, EnvVar]; required: readonly [EnvVar, EnvVar] }; factoryExport: "createXchatAdapter"; group: "official"; importPath: "@chat-adapter/x/chat"; name: "XChat"; packageName: "@chat-adapter/x"; peerDeps: readonly ["@xdevplatform/chat-xdk", "@xdevplatform/xdk", "juicebox-sdk"]; slug: "xchat"; type: "platform" }; zernio: { description: "Unified social media DM adapter covering Instagram, Facebook, Telegram, WhatsApp, X/Twitter, Bluesky, and Reddit through a single integration."; env: { optional: readonly [EnvVar, EnvVar, EnvVar]; required: readonly [EnvVar] }; factoryExport: "createZernioAdapter"; group: "vendor-official"; name: "Zernio"; packageName: "@zernio/chat-sdk-adapter"; peerDeps: readonly []; slug: "zernio"; type: "platform" } }
adapters Variables
ADAPTERS
Official and vendor-official adapters keyed by slug.