Repository navigation
Theo Chat 1.0.0
Merges YouTube live chat into your Twitch chat view. YouTube messages appear inline in the native Twitch chat panel with a red YT badge. When YouTube mods delete a message or ban a user, those actions sync to the Twitch view instantly. Built for theo.gg — but works for any streamer who simulcasts to YouTube + Twitch.
Live site: t3yt.mikepfunk.com
How It Works
YouTube goes live
│
▼
YouTube PubSub push ───► [Railway service] ──(videos.list, 1 quota)──► gRPC stream
│
▼ (WebSocket)
[Browser extension]
│
▼ (DOM injection)
Twitch chat panel ─── YT messages + mod sync
Architecture
Three deployable surfaces:
| Surface | Stack | Hosted on | Purpose |
|---|---|---|---|
| Service | Node.js + gRPC + ws | Railway | Connects to YouTube, relays chat via WebSocket, serves /overlay |
| Landing + API | Cloudflare Worker | Cloudflare | t3yt.mikepfunk.com landing, /api/config, /privacy |
| Extension | WebExtension MV3 | Firefox/Zen/Chrome | Injects YouTube messages into Twitch DOM, popup control rig |
Key features
- Zero-delay by default — messages appear instant
- Opt-in mod buffer — slider in popup lets Theo hold messages 0–30s so mods can delete on YouTube before viewers ever see them; deleted-while-buffered messages never render
- Instant mod sync — deletions and bans from YouTube mods reflect in the Twitch view immediately
- Super chats, member badges, owner badges pass through with proper styling
- Auto-reconnect on both the gRPC and WebSocket layers
- PubSub auto-renewal every 4 days (subscription lease is 5 days)
- Zero-config extension — fetches WS URL from
t3yt.mikepfunk.com/api/configat startup; Theo never types a URL
Full Changelog: https://github.com/MikePfunk28/theo_chat/commits/v1.0.0