A Stream Deck plugin for connecting to up to 4 separate Bitfocus Companion connections at once, each with its own independent dynamic-page state. Point them at separate Companion instances, or reuse the same instance multiple times to run separate dynamic-paging surfaces against one server.
This is a fork of the official Bitfocus Companion Stream Deck plugin, rebuilt around the Satellite API to support multiple simultaneous connections instead of one.
- Up to 4 connections — each with its own name, host/port, and Satellite device ID, configurable from the plugin's config window.
- Per-button connection assignment — every button picks which of the 4 connections it talks to from its own Property Inspector.
- Apply to All — reassign every button currently visible on a Stream Deck to one connection in a single click, instead of editing each button individually.
- New Page — switches a Stream Deck to one of 4 bundled, pre-built pages of dynamic buttons (one per connection slot), since the Stream Deck SDK has no API for a plugin to create a new profile at runtime. Cycles to the next connection each time it's pressed, and hides itself once all 4 have been used on that device.
- Connection status, subscription warnings, and Satellite Device ID conflict detection are all surfaced directly in the UI.
- Set up a Stream Deck plugin development environment per Elgato's docs: https://docs.elgato.com/streamdeck/sdk/introduction/getting-started
- Install the Elgato Stream Deck CLI:
npm install -g @elgato/cli - Clone this repository and install dependencies:
npm install - Make your code changes as necessary.
- If you're editing a Property Inspector, refer to the SDPI documentation: https://sdpi-components.dev/
- Run
npm run buildto confirm everything compiles. - If the plugin is already installed in the Stream Deck app, uninstall it first.
- Run
npm run link, thennpm run restart. - While iterating,
npm run watchrecompiles automatically on save.
Server-side logs live in ./net.slipz.companionmulti.sdPlugin/logs/.
To view client-side (Property Inspector) logs:
- Enable development mode:
streamdeck dev. - Open the Property Inspector for the action you're editing.
- Open
http://127.0.0.1:23654in a browser — it lists plugins whose dev tools you can open. - Inspect the console/elements from there.
To produce an installable .streamDeckPlugin file: npm run pack. This builds, bumps the build number in manifest.json (so a re-packaged plugin always installs as an update rather than being rejected as "already installed"), and packages it.
MIT — see LICENSE. Original plugin © Julian Waller, Håkon Nessjøen, and William Viker (Bitfocus AS). Fork modifications by slipz.