← back to projects

~/projects/obs-stream-controller

Headless OBS Stream Controller

March 2026·shipped·source not published
Headless OBS Stream Controller
PythonFlaskOBS WebSocketLinux

Note: no repoUrl in the frontmatter above — this is the pattern for a project you want to showcase without linking source. The card and detail page render fine with just a summary, description, and screenshots.

Built a web-based controller for a headless OBS instance running on a 2-core ARM64 Oracle Cloud VM, using OBS WebSocket v5. Handles scene and source management, layer reordering, live volume control, and a polling-based live preview — all through a lightweight token-authenticated Flask backend with auto-reconnect.

Infrastructure work

Getting this stable involved fixing PulseAudio access from a systemd service context, correcting the active OBS profile path, and tuning x264 encoding settings for a 2-core/24fps target. Also patched a Type=forking systemd supervision bug that was causing the service to report healthy before OBS had actually finished starting.