OBS
Connect OBS Studio via WebSocket — scene, stream, recording, media, and filter triggers and handlers.
OBS
The OBS plugin connects to OBS Studio via WebSocket for scene changes, stream/recording control, media sources, filters, and more.
Settings
Open Plugins → OBS:
| Setting | Description |
|---|---|
| Host | WebSocket host (127.0.0.1 default). Use the IP only — do not put ws:// or :4455 in this field unless you paste a full URL. |
| Port | WebSocket port (4455 default). Ignored when host is a full ws:// / wss:// URL. |
| Password | OBS WebSocket password. Required when authentication is enabled in OBS; leave empty if auth is off. |
Use Test connection, Connect, or Disconnect. The plugin auto-connects on enable when host and port are set, and keeps retrying every 5 seconds until OBS is available or you disconnect manually.
The plugin reports configured when host and port are set. Connection status is shown separately in the settings alerts — auth or protocol errors show as Connection error (not “Waiting for OBS”).
Enable the WebSocket server in OBS: Tools → WebSocket Server Settings. Copy the password from there into Stream Kit when authentication is enabled.
After an OBS update
OBS often regenerates the WebSocket password (or migrates settings) when you update. If the connection worked before and suddenly fails:
- Open Tools → WebSocket Server Settings in OBS.
- Confirm the server is still enabled and note the port.
- Click Show Connect Info / copy the current password into Stream Kit.
- Use Test connection.
If the password keeps changing after every OBS restart, check for a conflicting old obs-websocket plugin, or software that rewrites OBS config (commonly Logitech Logi Options+ / G Hub Plugin Service).
Triggers
Triggers are grouped under OBS in the action editor. Highlights:
| Group | Examples |
|---|---|
| Scene & transition | Scene changed, preview scene, transition started/ended |
| Stream | Starting, started, stopping, stopped, reconnecting |
| Recording | Started, paused, resumed, stopped, file changed |
| Source | Input muted/unmuted, shown/hidden |
| Media | Media started/ended, media action triggered |
| Filter | Filter enabled/disabled |
Scene, transition, and input triggers support name matching (equals, contains, starts/ends with).
Full list with IDs: OBS triggers.
Handlers
| Group | Examples |
|---|---|
| Stream | Start / stop / toggle stream, send caption, get stream status |
| Recording | Start / stop / pause / resume / split, get record status, chapters |
| Media | Set file, trigger action, seek, get media status |
| Filter | Enable/disable/toggle, set settings, create/remove |
| Scene | Set program/preview scene, transitions, studio mode, virtual cam |
Set Media Input File updates ffmpeg_source, vlc_source, or media_source and can wait for playback duration before continuing the chain. Cloud file refs (/api/files/...) resolve to a local offline-cache path when Keep cloud files offline is enabled (with authenticated URL fallback if the file is not on disk yet), otherwise to an authenticated PocketBase URL, and are set as local_file (OBS network mode is avoided because it reconnects and loops finite files).
Get Stream/Record/Media Status writes action-scoped variables for later handlers (streamActive, recordDuration, mediaState, …).
Full list: OBS handlers.
Trigger variables
Common fields for \{interpolation\}:
| Variables | Source |
|---|---|
sceneName, sceneUuid | Scene triggers |
inputName, inputUuid | Source / media |
outputState, outputPath | Stream / recording |
filterName, filterEnabled | Filter triggers |
Each trigger page lists its variables in the API Reference.