Switchboard
ActiveSwitchboard is my streaming cockpit: one desktop app that controls everything around a live Twitch stream. It's the successor to twotter, an Electron app I wrote 100% by hand — and which died because I kept inventing new ideas faster than I could build them.
Repository: https://gitlab.com/KirboDev/agentic-coding/switchboard.
What it does
- Controls any number of OBS (Open Broadcaster Software) instances (scenes, stream/record, stream delay) and any number of Twitch accounts (per-scene stream info, EventSub events, chat, markers, audience tracking)
- Bridges Spotify now-playing (MPRIS (Media Player Remote Interfacing Specification)/SMTC (System Media Transport Controls)/AppleScript per OS (Operating System)), Discord webhooks, and Home Assistant in both directions
- Serves seven browser-source overlays from an embedded web server — now-playing, a live input visualizer with an in-app canvas editor, alerts, chat, and more
- Runs an event → action rules engine: triggers, conditions, action sequences, templating, per-rule run history
- Pairs multiple Switchboard machines into a LAN (Local Area Network) mesh over TLS (Transport Layer Security), so rules on one machine can drive actions on another
Home dashboard
The Home dashboard is the one screen that has to say "is everything actually okay" at a glance: connection badges for the Database, the OS (Operating System) Keyring and the LAN (Local Area Network) mesh (1/1 peers) across the top; Streaming MAC live 2h 47m into Live — Gameplay next to Gaming PC (Personal Computer) recording with a 30-second delay; the Twitch panel for Kirbo reading live with 42 watching and 9 in chat; Spotify's now-playing card mid-track; and a recent-activity feed timestamped down to the second — automations firing, a follow, a peer coming online — falling back to a Previous sessions log from disk when the current one runs out of rows.
OBS (Open Broadcaster Software) control
The OBS (Open Broadcaster Software) panel is where scenes actually get switched from, and it's built to survive being on camera by accident: Streaming MAC's current scene is Live — Gameplay, holding a live title override — Kirbo ▸ Marvel Rivals, title — that reverts itself to whatever Streaming MAC was on before in 120 seconds, so a manual "brb, one sec" scene change can't get stuck live for the rest of the stream.
Twitch & audience
The Twitch panel goes further than the stream-info fields it started as — the Audience card is a tracked snapshot of who follows and subscribes right now, not just a live count. It splits Followers from Subscribers by tier and, separately, tracks Departures with the actual reason attached (unfollowed versus sub ended (Tier 1)), because Twitch's API (Application Programming Interface) only ever tells you who's there today: follow dates come straight from Twitch and are exact, but subscription start dates aren't exposed at all, so the tracker stamps since the moment it first notices a sub and before for anything that already existed when tracking began.
Overlays
The Spotify bridge pulls now-playing from whatever OS (Operating System)-native source is available (MPRIS (Media Player Remote Interfacing Specification) on Linux, SMTC (System Media Transport Controls) on Windows, AppleScript on macOS) and pushes it out to the overlays and to Discord/Home Assistant — and the overlays themselves are just browser sources pointed at the embedded web server, so OBS (Open Broadcaster Software) never needs to know Switchboard is Rust and React underneath. The Overlays screen lists all seven with what's actually wired to them: the now-playing card is template-driven with three saved presets and shows live Spotify connected state, the input visualizer renders keyboard/mouse/controller onto an in-app canvas, and both Twitch chat (no login needed) and the event log double as full OBS (Open Broadcaster Software) custom docks rather than staying browser-only.
Architecture
Under the hood it's Tauri 2 with a backend-heavy split: ~30k lines of Rust own all state, connections and scheduling in long-running tokio tasks; the React webview is a thin event-driven client. Secrets live in the OS (Operating System) keyring, config in SQLite, and there are zero app secrets anywhere — Twitch uses Device Code Grant and Spotify uses PKCE (Proof Key for Code Exchange), so the public repo and the binaries contain nothing sensitive. And since a stream setup is rarely one machine, multiple Switchboard installs pair into a LAN (Local Area Network) mesh over TLS (Transport Layer Security) — a rule firing on the streaming PC (Personal Computer) can trigger an action on whichever machine actually owns that integration.
Status
The meta-story is the interesting part: the overwhelming majority of the code was written by Claude, with me acting as product owner and lead architect — planning, reviewing every change, writing the CI (Continuous Integration), and testing on real hardware. Read the full story in the Switchboard blog post.
In daily production use on two machines, developed actively. MIT (Massachusetts Institute of Technology) licensed, with a Home Assistant integration (HACS (Home Assistant Community Store)) and an OpenDeck plugin as first-party satellites.