Your stream. Your terminal. Zero alt-tabs.
Seven small, sharp, open-source utilities for OBS Studio, Twitch and YouTube — built in Rust, Crystal and Go, terminal-first, no Electron in sight.
- RUST · CRYSTAL · GO
- SINGLE BINARIES
- NO ELECTRON
- OBS-WEBSOCKET 5
- TWITCH IRC
- YOUTUBE DATA API
- MIT LICENSED
Two machines, one link.
OBS runs on the rig that captures and encodes. These tools run on the machine you actually work on. Between them is OBS's own WebSocket server — so the machine under load never has to be the machine you touch. The chat and go-live tools skip the rig entirely and talk straight to Twitch and YouTube.
BUSY, AND LEFT ALONE.
— TO TWITCH + YOUTUBE · RTMP
SAME MACHINE WORKS TOO — POINT THE TOOLS AT LOCALHOST (127.0.0.1:4455 BY DEFAULT) AND EVERYTHING BEHAVES THE SAME WAY.
Seven binaries, one workflow.
Each one does a single job well and speaks the protocol its job needs. Take all seven, or take the one you need.
Commands in. JSON out.
Every CLI call prints one envelope and exits with a code that means something — so your hotkeys and shell scripts can actually branch on the result.
Live in three steps.
This walks through obsctl-rs; the others follow the same shape.
-
01
Turn on OBS's WebSocket server
On the streaming rig, open Tools ▸ WebSocket Server Settings, enable the server and copy the password. OBS 28 and newer ship obs-websocket 5.x built in.
OBS Studio ▸ Tools ▸ WebSocket Server Settings ▸ Enable -
02
Install the tool on your workstation
One script, one static binary, no runtime to manage. Read it first if you'd rather not pipe a stranger into your shell.
read the script first ↗curl -fsSL https://github.com/worxbend/obsctl-rs/releases/latest/download/install.sh | sh -
03
Point it at the rig and go
Initialise the config, hand it the password, start the daemon that owns the socket, then open the dashboard.
obsctl init export OBS_WEBSOCKET_PASSWORD='your_password' obsctl server --headless obsctl tuiWant it always on?
obsctl service installthensystemctl --user enable --now obsctl.service.
Small tools that stay out of the way.
Nothing steals focus
No window jumping in front of the thing you are capturing. A pane, a hotkey, and you are back.
Single static binaries
Rust, Crystal and Go, linked against musl where it counts. Drop the file in ~/.local/bin and it runs.
One socket, one owner
A local daemon holds the WebSocket so the CLI and TUI never fight over the connection.
Scriptable by design
JSON envelopes and honest exit codes. Bind a scene switch to a key, or branch on it in CI.
Load stays on the rig
Encoding happens where it should. Your workstation only sends commands and reads telemetry.
Yours to change
Every tool is MIT licensed, with themes, locales and configs meant to be edited.
Before you install.
Do I actually need two machines?
No. Two machines is the setup these tools were shaped around, but every one of them works against a local OBS. Point them at 127.0.0.1:4455 and nothing else changes.
Which version of OBS do I need?
OBS 28 or newer. That is when obs-websocket 5.x became part of OBS itself, so there is no plugin to install — just enable the server under Tools ▸ WebSocket Server Settings.
Is there anything with a GUI?
SceneDeck. It is a native GTK4 desktop app rather than a terminal tool — the same control surface, for when you want buttons instead of keys.
Does any of this work with YouTube?
Two of them are built for it. msm sets up a Twitch stream and a YouTube broadcast from one form, and yc reads YouTube live chat in a terminal pane. Neither goes through OBS — they talk to the platforms directly, so they work whether or not you use the rest of the toolkit.
Does msm start the stream for me?
No, and that is deliberate. It gets both platforms configured and then stops; you press Start Streaming in OBS when you are ready. If one platform fails to configure, the other is still set up and usable — the failure is shown in its own panel rather than rolling everything back.
Do I have to install all seven?
No. They are separate binaries, and only the OBS control tools share a protocol. Most people start with one control tool, add obs-stats when they want to watch for dropped frames, and pick up a chat client for whichever platform they actually stream to.
Why pipe a script into a shell?
Because it is the shortest path to a working binary. Every install command here links the raw script next to it so you can read exactly what it does first — or skip it entirely and grab a release tarball.
What does it cost?
Nothing. All five are MIT licensed and developed in the open on GitHub.