OBS WebSocket control plugin for OpenDeck — control OBS Studio directly from your deck. Switch scenes, toggle streaming and recording, manage the replay buffer, control the virtual camera, work with filters and sources, and more.
Control 18 OBS actions from your OpenDeck device:
| Action | Description |
|---|---|
| OBS Setup | Configure OBS connection settings (host, port, password). Press to test the connection. |
| Switch Scene | Switch to a specific OBS scene |
| Next Scene | Switch to the next scene in the scene list |
| Previous Scene | Switch to the previous scene in the scene list |
| Toggle Stream | Start or stop streaming |
| Toggle Recording | Start or stop recording |
| Pause Recording | Pause or resume the current recording |
| Save Replay | Save the current replay buffer clip |
| Toggle Replay Buffer | Start or stop the replay buffer |
| Toggle Virtual Camera | Start or stop the virtual camera |
| Toggle Studio Mode | Enable or disable studio mode |
| Studio Transition | Cut the preview scene to program (studio mode) |
| Toggle Source | Show or hide a scene source |
| Toggle Mute | Mute or unmute an audio input |
| Set Volume | Set an audio input to a specific volume level |
| Trigger Hotkey | Trigger an OBS hotkey by name |
| Toggle Filter | Enable or disable a source filter |
| Screenshot | Save a screenshot of a source or the current scene |
- OBS Studio (latest version recommended)
- obs-websocket v5 (bundled with OBS 28+)
- OpenDeck (installed on your system)
- Windows: x86_64
- macOS: Intel x86_64, Apple Silicon ARM64
- Linux: x86_64, ARM64
cd obs-opendeck
make installThis copies the plugin to:
- macOS/Linux:
~/.config/opendeck/plugins/io.pngz.obs.sdPlugin/ - Windows:
%APPDATA%\Elgato\StreamDeck\Plugins\io.pngz.obs.sdPlugin\
- Build the plugin (see Building from Source below)
- Copy the built binaries to your OpenDeck plugins directory:
- macOS/Linux:
~/.config/opendeck/plugins/io.pngz.obs.sdPlugin/bin/ - Windows:
%APPDATA%\Elgato\StreamDeck\Plugins\io.pngz.obs.sdPlugin\bin\
- macOS/Linux:
- Open OpenDeck and add the "OBS Setup" action to a button
- The Property Inspector appears on the right
- Enter your OBS WebSocket connection details:
- Host: IP address or hostname of your OBS instance (default:
localhost) - Port: WebSocket port (default:
5005) - Password: OBS WebSocket password (if configured)
- Host: IP address or hostname of your OBS instance (default:
- Click the button to test the connection
Some actions support customization via the Property Inspector:
| Action | Configurable Fields |
|---|---|
| Switch Scene | Scene name |
| Toggle Source | Scene name, source name |
| Toggle Mute | Audio input name |
| Set Volume | Audio input name, volume level (0-100) |
| Trigger Hotkey | Hotkey name |
| Toggle Filter | Source name, filter name |
| Screenshot | Source name (optional, uses current scene if empty) |
- Rust 1.70 or later
- OpenDeck (installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/envgit clone https://github.com/PenguinzTech/obs-opendeck.git
cd obs-opendeck
# Build and install the plugin
make install
# Or build only
make build
# Or build for all supported platforms
make build-allThe plugin produces platform-specific binaries:
obs-opendeck-x86_64-pc-windows-msvc.exe(Windows)obs-opendeck-x86_64-apple-darwin(macOS Intel)obs-opendeck-aarch64-apple-darwin(macOS ARM64)obs-opendeck-x86_64-unknown-linux-gnu(Linux x86_64)obs-opendeck-aarch64-unknown-linux-gnu(Linux ARM64)
- Ensure OBS Studio is running with WebSocket enabled
- Default WebSocket address:
ws://localhost:5005 - If connecting remotely, ensure proper firewall rules are configured
- The password is stored securely in OpenDeck's encrypted settings
Many actions display state indicators on the button:
- Toggle Stream: Shows "Stream On" or "Stream Off"
- Toggle Recording: Shows "Record On" or "Record Off"
- Pause Recording: Shows "Recording" or "Paused"
- Toggle Replay Buffer: Shows "Replay On" or "Replay Off"
- Toggle Virtual Camera: Shows "VCam On" or "VCam Off"
- Toggle Studio Mode: Shows "Studio On" or "Studio Off"
- Toggle Source: Shows "Visible" or "Hidden"
- Toggle Mute: Shows "Muted" or "Unmuted"
- Toggle Filter: Shows "Filter On" or "Filter Off"
"Connection failed" — Verify that OBS Studio is running and WebSocket is enabled in Tools > WebSocket Server Settings. Check that the host, port, and password are correct.
"Scene not found" — Ensure the scene name matches exactly (case-sensitive) an existing scene in OBS. Use the Switch Scene action's Property Inspector to select from available scenes.
"Source/Filter not found" — Verify the source or filter name exists in the scene and matches exactly (case-sensitive).
"Action failed: WebSocket disconnected" — The connection to OBS was lost. Press the Setup button again to reconnect.
"Hotkey not found" — Check that the hotkey name matches a configured OBS hotkey. Use the exact name as shown in OBS settings.
obs-opendeck/
├── src/
│ ├── main.rs # Plugin entry point and message dispatcher
│ ├── obs.rs # OBS WebSocket client
│ ├── settings.rs # OpenDeck property persistence
│ └── actions/ # Individual action implementations
│ ├── setup.rs
│ ├── scenes.rs
│ ├── streaming.rs
│ ├── recording.rs
│ ├── sources.rs
│ └── ... (other actions)
├── plugin/
│ ├── manifest.json # Plugin metadata
│ ├── pi/ # Property Inspector HTML/CSS/JS
│ └── actions/ # Action icons
├── Cargo.toml # Rust dependencies
├── Makefile # Build and install targets
└── README.md # This file
make testThis plugin is open source. See LICENSE file for details.
For issues, feature requests, or contributions, visit the GitHub Issues page.