signal kit

Twitch events as one developer-friendly WebSocket.

Sign in with Twitch, get a relay token, and pipe every follow, sub, cheer, redemption, raid, and chat event into overlays, agents, or anything else you build.

live preview

This is a sample of events streaming over a Signal Kit relay token. Same JSON Twitch sends, delivered through one WebSocket.

wss://signal.ryan.ceo/ws
connected
  • channel.cheerryan · 100 bits12s
  • channel.subscribemorgan · tier 124s
  • channel.followalex38s
  • channel.chat.messageki · "GG"1m
  • channel.channel_points_custom_reward_redemption.addsam · hydrate2m
overlay.ts
import { SignalKit } from "@signal-kit/client";

const events = new SignalKit({
  url: "wss://signal.ryan.ceo/ws",
  token: process.env.SIGNAL_KIT_TOKEN!,
});

events.on("channel.cheer", ({ event }) => {
  overlay.bits({
    user: event.user_name,
    bits: event.bits,
    message: event.message,
  });
});

events.connect();

What is Signal Kit?

Signal Kit is a small piece of infrastructure between you and Twitch EventSub. Sign in once and the app manages the EventSub WebSocket on your behalf, refreshes tokens, and resubscribes to topics whenever Twitch closes a session.

On the other side, you get a single relay WebSocket. Drop a token into an overlay, a local agent, or a hobby script. Notifications stream through with the raw event payload Twitch sent. No vendor JSON shapes, no alert templates.

It is self-hostable, runs in Docker, and stores credentials encrypted in MySQL. There is no UI generator and no overlay marketplace. You build the layer above.

FAQ

Do I need to install anything on Twitch?
No. You authorize the Signal Kit app via Twitch OAuth. The app then subscribes to EventSub topics for your channel using the WebSocket transport.
Is my Twitch access token exposed to overlays?
No. Overlays connect with a relay token issued by the dashboard. Twitch credentials never leave the server.
Which events are supported?
Every EventSub topic Twitch lets you subscribe to with the granted scopes. The dashboard shows what is ready and what needs a scope.
Can I self-host?
Yes. Docker image, docker-compose, .env, MySQL. The relay WebSocket and the Next.js app run in the same container.

Hook into your stream the way you want.