Photon Spectrum

Open-source TypeScript framework from Photon for putting agents into real messaging channels such as iMessage, SMS, email, Slack, Telegram, WhatsApp, terminal, and custom providers.

Routing Summary

Use Photon Spectrum when an agent product needs to live inside messaging channels such as iMessage, SMS, Slack, Telegram, WhatsApp, terminal, or a custom provider. Use Copilotkit / AG-UI Protocol when the primary surface is an app UI with generative state; use Spectrum when reachability and chat-native delivery are the product constraint.

Current Source Snapshot

As of the 2026-07-01 registry refresh, photon-hq/spectrum-ts is MIT licensed and latest npm spectrum-ts is 8.1.1; Git tag v8.1.1 resolves to 4826d646cc5c0dc354f17d1dd4c9c87655ba657a, while default branch HEAD is 3ae3193a94fc2dfc96e5e627ae5e73d3cd960ff9. The package is a batteries-included TypeScript metapackage depending on @spectrum-ts/core, @spectrum-ts/imessage, @spectrum-ts/slack, @spectrum-ts/telegram, @spectrum-ts/terminal, and @spectrum-ts/whatsapp-business. Source: npm registry packument; git ls-remote, 2026-07-01

What It Provides

Spectrum is not another web-chat widget. It is a messaging runtime for agents:

Surface Package / route
iMessage @spectrum-ts/imessage
WhatsApp Business @spectrum-ts/whatsapp-business
Telegram @spectrum-ts/telegram
Slack @spectrum-ts/slack
Terminal @spectrum-ts/terminal
Custom definePlatform from spectrum-ts

Basic usage from the README:

import { Spectrum } from "spectrum-ts";
import { imessage } from "spectrum-ts/providers/imessage";

const app = await Spectrum({
  projectId: process.env.PROJECT_ID,
  projectSecret: process.env.PROJECT_SECRET,
  providers: [imessage.config()],
});

for await (const [space, message] of app.messages) {
  await space.responding(async () => {
    await message.reply("Hello from Spectrum.");
  });
}

The repo also supports lean installs by combining @spectrum-ts/core with only the provider packages an app needs. Source: GitHub photon-hq/spectrum-ts README, 2026-06-30

iMessage App Signal

The bookmark that promoted Spectrum was the Photon launch for an "iMessage App API for agents": agents can send rich app surfaces inside iMessage, such as an ordering menu, game, or custom agent UI. Local media review found a 42-second demo and screenshot showing a phone-based iMessage UI with an embedded Uber Eats-style menu. Source: X/@daniel_tian1, 2026-06-17

This belongs in Agent GUIs because it widens agent frontends from "web dashboard" and "team chat" into personal messaging. Compared with Copilotkit, Spectrum starts from messaging providers and agent reachability; CopilotKit starts from frontend/generative UI state and AG-UI-style control. A serious product may need both: Spectrum for delivery surfaces, AG-UI/CopilotKit for run-state and human-approval vocabulary.

Stack Fit

  • Use Spectrum when the product goal is "talk to the agent where people already talk."
  • Use Writing and Content Skills for Kevin's local iMessage people sync; do not confuse that skill with Spectrum's agent runtime.
  • Use Human-in-the-Loop Control for approval state before any Spectrum agent performs external side effects inside a chat.
  • Re-check spectrum-ts versions before implementation; the npm major stream moved quickly from 0.0.1 through 8.1.1.

Timeline