Skip to main content
Providers plug into Spectrum’s type system and runtime. Each provider exports a callable. Call provider.config(...) to register it, and call provider(app) or provider(space) to narrow into its platform-specific instance.

Built-in providers

iMessage

Connect through local, cloud, or dedicated modes. Use tapbacks, typing indicators, threaded replies, DMs, and groups.

Terminal

Run a local chat interface for development, testing, and CLI-style agents.

WhatsApp Business

Use the official WhatsApp Business Cloud API for 1:1 customer conversations.

Telegram

Use the Telegram Bot API with Fusor webhooks, media, reactions, replies, typing, and edits.

Slack

Connect one or more Slack workspaces with text, media, reactions, threads, typing, and edits.

Combining providers

Drop any combination into providers:
import { Spectrum } from "spectrum-ts";
import { imessage, slack, terminal, whatsappBusiness } from "spectrum-ts/providers";

const app = await Spectrum({
  projectId: "...",
  projectSecret: "...",
  providers: [
    imessage.config(),
    whatsappBusiness.config({
      accessToken: process.env.WA_TOKEN!,
      phoneNumberId: process.env.WA_NUMBER_ID!,
      appSecret: process.env.WA_SECRET!,
    }),
    slack.config({
      tokens: { TEAM_ID: process.env.SLACK_BOT_TOKEN! },
    }),
    terminal.config(),
  ],
});
app.messages merges messages from every provider. The message.platform field tells you which provider delivered each message.

Writing your own

If none of the built-ins fit, implement a provider with definePlatform. See Building a custom platform.