A Zapier-inspired workflow automator for Stream Deck and OBS Studio.
OBSWA lets you chain multiple OBS actions together and fire the entire sequence from a single Stream Deck button press. Think of it as Zapier, but for your stream — switch scenes, toggle sources, mute audio, trigger hotkeys, start/stop recording, and more, all in one tap.
- Workflow builder — Add, reorder, and delete actions directly in the Stream Deck Property Inspector
- 14 action types — Scene switching, source visibility, muting, streaming, recording, hotkeys, text sources, and timed delays
- Global OBS connection — Configure your OBS WebSocket credentials once; every OBSWA button on your deck shares the connection automatically
- Live OBS data — Scenes, sources, and hotkeys populate into dropdowns automatically when connected
- Reliable execution — Actions run sequentially with per-action error reporting; a failed step doesn't cancel the rest of the workflow
- Double-trigger protection — Pressing a button while a workflow is already running is safely ignored
- Reconnect on drop — Exponential back-off reconnect keeps the connection alive without hammering OBS
- Security-first — Passwords never appear in logs; host validation prevents SSRF abuse; the Property Inspector's Content Security Policy blocks all external requests
| Action | Description |
|---|---|
| Switch Scene | Transition to a named scene |
| Toggle Source | Toggle a source's visibility on/off |
| Set Source Visibility | Explicitly show or hide a source |
| Mute Source | Mute an audio source |
| Unmute Source | Unmute an audio source |
| Toggle Mute | Flip the mute state of an audio source |
| Start Streaming | Begin the stream |
| Stop Streaming | End the stream |
| Start Recording | Begin recording |
| Stop Recording | Stop recording |
| Toggle Recording | Flip recording on/off |
| Trigger Hotkey | Fire an OBS hotkey by name |
| Set Text Source | Update a text source's content |
| Wait | Pause for a set number of milliseconds before the next action |
- Stream Deck hardware + software (v6.4+)
- OBS Studio with the WebSocket server enabled (built-in since OBS 28)
- OBS → Tools → WebSocket Server Settings → Enable WebSocket server
- Default port:
4455
Note: OBSWA is currently in active development and is not yet published to the Elgato Marketplace. Watch this repo for release updates.
Once released, you will be able to install it directly from the Elgato Marketplace. A manual .streamDeckPlugin install option will be provided with each GitHub release.
- Drag the OBS Workflow action onto any Stream Deck button
- Open the Property Inspector (click the button in Stream Deck software)
- Enter your OBS WebSocket settings:
- Host:
localhost(or the IP of your OBS machine on the network) - Port:
4455 - Auth: Enable and enter your password if OBS requires one
- Host:
- Click Test Connection — the indicator turns green when connected
- The connection is shared across all OBSWA buttons; you only set it once
- Connect to OBS (above)
- Give the workflow a label — this appears as the button title on your deck
- Click Add Action, choose an action type from the dropdown
- Fill in the action's fields (scenes/sources populate from your live OBS)
- Add more actions, reorder with ↑ / ↓, remove with ✕
- Settings save automatically — no submit button needed
The screenshot below shows a "Go Live" workflow configured to run three actions from a single Stream Deck button press:
- Switch Scene →
Starting Soon(immediately, no delay) - Switch Scene →
Live Scene(after a 300,000 ms / 5-minute delay) - Start Streaming (after an additional 3,000 ms delay)
If your OBS streaming service is set to YouTube using OBS's built-in YouTube integration, the Start Streaming action may pause and open the "Manage Broadcast" dialog, requiring you to manually create or select a broadcast before the stream starts. This is a limitation of OBS's YouTube output — it cannot be bypassed via the WebSocket API.
How to avoid this:
| OBS Streaming Service | Behavior with Start/Stop Streaming actions |
|---|---|
| Custom RTMP (Aitum, Restream, fixed stream key, etc.) | Works instantly — no dialogs |
| Twitch (native OBS integration) | Works instantly |
| YouTube (native OBS integration) | Requires pre-creating a broadcast in OBS before pressing the button |
Recommended solutions:
- Custom RTMP — Switch OBS's streaming service to Custom RTMP and point it at your multistreaming service (e.g. Aitum, Restream) or a fixed stream key URL. OBS's WebSocket
StartStreamfires immediately with no prompts. - YouTube Persistent Stream — In YouTube Studio, create a persistent/reusable stream with a fixed stream key. Configure OBS as Custom RTMP using that key. Titles and descriptions can still be updated in YouTube Studio before each session; the VOD will need to be manually titled/published afterward.
- Pre-create the broadcast — If you must use the native YouTube integration, open OBS → "Manage Broadcast" → create/select your broadcast before pressing your Stream Deck button. The workflow will then proceed without interruption.
🚧 In active development — core functionality is working but the plugin has not yet been submitted to the Elgato Marketplace. Testing is ongoing before the first public release.
Areas currently being worked on:
- Further real-world testing and edge case hardening
- Icon artwork (current icons are placeholders)
- Marketplace submission preparation
- Import/Export Workflows Feature
- Manage Broadcast / Create Broadcast & Start Streaming
Issues and pull requests are welcome. If you find a bug or have a feature idea, please open an issue on GitHub.
See CONTRIBUTING.md for full contribution guidelines including code style, project structure, and the PR process.
For security vulnerabilities, please follow the responsible disclosure process in SECURITY.md rather than opening a public issue.
MIT — see LICENSE for details.
Built with ❤︎ by DreadHeadHippy.
