Platform Integrations
Twitch
  • OAuth login & channel bot
  • Helix API — title, game, viewers, tags
  • Clips, markers, raids, ads
  • Follow age / date lookups
  • Subscriber / follower / emote-only chat modes
  • EventSub webhooks (follow events)
  • Separate channel-bot OAuth token
Discord
  • OAuth login & guild bot
  • Slash command registration
  • Account age lookups (self)
  • Points, polls, raffles, voting
  • Permit, votekick, mod actions
  • Song requests & queue
YouTube
  • OAuth login & live chat bot
  • Broadcast selection (multi-broadcast)
  • Title sync via Data API v3
  • Live chat message polling
  • Viewer count, last video lookup
  • Watchtime (planned)
TikTok
  • OAuth login & LIVE chat bot
  • Chat commands via TikTok Login Kit
  • Points, polls, entertainment cmds
  • Uptime, viewer count
IRC
  • iirc-based bot (replaces cinch)
  • IRCv3 capability negotiation (SASL, account-tag)
  • Nick ↔ web account linking via token
  • Op / deop, nuke, vanish
  • Song requests, last seen
  • Full command parity with other bots
OBS WebSocket
  • Start / stop streaming from web panel
  • obs-websocket v5 protocol
  • Triggered via web UI or bot command
  • Volume control (integration pending)
Google / OAuth
  • Google OAuth2 login
  • Multi-provider identity linking
  • One account → many connected platforms
  • Provider unlink from settings
Core Features
Suggestions & Voting
  • Public web form for title submissions
  • Real-time board via ActionCable
  • Up-vote from web (one per session)
  • Chat commands on all platforms
  • Accept / unaccept mod
  • Delete suggestion mod
  • Suggestion open/close toggle mod
  • Voting open/close toggle mod
Stream Control
  • Create / end stream session with title
  • Push title & game to all platforms in one click
  • Per-platform sync status (pending / synced / error)
  • YouTube broadcast selector
  • OBS start / stop streaming
  • Games-played list for the session
Points & Economy
  • Per-tenant point balances
  • Leaderboard (top 10)
  • Award / remove points mod
  • Slot machine, adventure / bet game
  • Make-it-rain (distribute to chatters) mod
  • Passive chat-active time tracking
Quotes & Links
  • Quote add / delete / search via chat or web
  • Browse quotes with text search
  • Link gallery per session
  • Submit links via public web form
  • All stored per-tenant in DB
Word Clouds
  • SVG cloud from chat messages per session
  • Date-range word cloud across sessions
  • IDF-weighted term scoring
  • Stopword filtering
Music Requests
  • Song request queue (Twitch, Discord, IRC)
  • Remove last request (!wrongsong)
  • Skip / vote-skip
  • Queue display in chat
  • Volume control mod
Moderation
  • Ban / unban, timeout, nuke mod
  • Permit links for 60 s mod
  • Votekick (5 votes → timeout)
  • Vanish (self-timeout 1 s)
  • Sub / follower / emote-only toggles mod
  • VIP grant / revoke mod
  • IRC op / deop mod
Custom Commands
  • CRUD via chat (!addcmd / !editcmd / !delcmd) or web UI
  • Per-command permission levels (!permcom)
  • Aliases (!aliascom)
  • Stored per-tenant in DB
  • Available on all platforms
Raffle & Polls
  • In-chat raffle (open / enter / close / draw / reset)
  • In-chat poll with arbitrary options
  • Voting open to all platforms
  • Mod-created, all-vote model
User Info
  • Follow age / date (Twitch)
  • Account age / date (Twitch, Discord)
  • Watchtime (Twitch; YouTube planned)
  • Last seen (presence log)
  • Total follower count
Entertainment
  • 8-ball, dice (!roll 2d6), love meter
  • Random winner from recent chatters
  • Dad jokes, random facts
  • Urban Dictionary lookup
  • Steam game search
  • Crypto price (CoinGecko, rate-limited)
  • Shoutout (!so), bacon (!bacon)
Admin Panel
  • User list, ban / unban, role assignment mod
  • Role editor with custom permissions mod
  • API key issue / revoke mod
  • Adapter start / stop / restart mod
  • Platform OAuth connect / disconnect
  • IRC nick ↔ web account linking
  • Embed token regeneration mod
Architecture
Stack
  • Rails 8.1, Ruby 3.4
  • PostgreSQL + Redis
  • ActionCable (WebSockets) real-time
  • Bootstrap 5 frontend
  • Pundit policy-based auth
  • Docker Compose dev environment
Multi-tenancy
  • Path-based tenant routing (/:tenant/...)
  • Per-tenant credentials (user_platform_configs)
  • Scoped suggestions, quotes, commands, points
  • Separate OAuth bot tokens per tenant
Bot Adapters
  • Hot-loadable — start/stop/restart without server restart
  • Shared command bus across all platforms
  • Twitch, Discord, YouTube, TikTok, IRC
  • Identity-attributed submissions (no anonymous)
JSON API v1

REST API for bot adapters and external integrations.

  • API key authentication
  • Suggestions, links, quotes, commands
  • Points, counters, stream control
  • Moderation endpoints
  • OBS control endpoints
  • Twitch EventSub webhook receiver
JSON API v1 — Endpoints
Endpoint Description
GET /api/v1/suggestions List suggestions for the current session
POST /api/v1/suggestions Create a suggestion
POST /api/v1/suggestions/:id/voteVote on a suggestion
GET /api/v1/links List links for the current session
POST /api/v1/links Submit a link
GET /api/v1/quotes List all quotes
POST /api/v1/quotes Add a quote
DELETE /api/v1/quotes/:id Delete a quote
GET /api/v1/custom_commands List custom commands
POST /api/v1/custom_commands Create a custom command
PATCH /api/v1/custom_commands/:idUpdate a custom command
DELETE /api/v1/custom_commands/:idDelete a custom command
GET /api/v1/points Get points balance (own or by user)
POST /api/v1/points Award or remove points (mod)
GET /api/v1/counters/:name Get counter value
POST /api/v1/counters/:name/incrementIncrement a named counter
GET /api/v1/stream Stream session state
POST /api/v1/stream Start a stream session
DELETE /api/v1/stream End the stream session
GET /api/v1/stream/viewers Current viewer count
GET /api/v1/stream/game Current game / category
PATCH /api/v1/stream/game Set the game / category
GET /api/v1/stream/game/games_playedList games played this session
POST /api/v1/stream/clip Create a Twitch clip
POST /api/v1/stream/marker Set a stream marker
POST /api/v1/stream/commercial Run an ad break
POST /api/v1/stream/raid Start a raid
POST /api/v1/moderation/bans Ban a user
DELETE /api/v1/moderation/bans/:idUnban a user
POST /api/v1/moderation/timeouts Timeout a user
POST /api/v1/moderation/vips Grant VIP status
DELETE /api/v1/moderation/vips/:idRevoke VIP status
DELETE /api/v1/moderation/messages/:idDelete a chat message
POST /api/v1/moderation/chat_settingsUpdate chat mode (sub/follower/emote-only)
GET /api/v1/presence Get presence record for a user
POST /api/v1/presence Record a presence event
POST /api/v1/presence/watch Record watch time
GET /api/v1/presence/recent List recently active users
POST /api/v1/live_chat Ingest a live chat message
POST /api/v1/obs/events Receive OBS event feed
POST /api/v1/obs/volume Set OBS playback volume
POST /api/v1/irc_link Link an IRC nick to a web account
POST /api/v1/settings/follow_messageSet the follow notification message
GET /api/v1/me Current authenticated user
GET /api/v1/users/lookup Look up a user by platform identity
POST /api/v1/webhooks/twitch Twitch EventSub webhook receiver
OAuth Login Providers
Google Discord Twitch YouTube TikTok

Multiple providers can be linked to a single account. Providers can be individually unlinked from the settings page.