How to Control Backstage with the Bitfocus Companion Module
How to Control Backstage with the Bitfocus Companion Module
The Brainsalt Backstage module for Bitfocus Companion lets you control a Backstage media server from a Stream Deck, touch screen, or any Companion-supported surface. It connects over Backstage's JSON show-control protocol on TCP and gives you live feedback, variables, and ready-made button presets for all show-control entities.
The module is published to the official Bitfocus module store as Brainsalt: Backstage. It requires Companion 3.4 or later.
Before you start
- Backstage is running on the target server
- Bitfocus Companion 3.4 or later is installed on your control machine
- The control machine can reach the Backstage server over TCP (default port
7400) - You know the Backstage server's IP address or hostname
Steps
1. Enable the show-control protocol in Backstage
Open Settings → Remote Control and check Enable Show-Control Protocol. Leave the Enable Bitfocus Companion sub-option checked (it is on by default). Click Apply / Restart Protocol Server to activate the listener.
The default TCP port is 7400. Change it here if your network requires a different port. If you have set an Auth Token, note it down — you will need it in Companion.
The show-control protocol is disabled by default. Backstage will not accept connections until you enable it and apply.
2. Install the module in Companion
In the Companion web UI, go to Connections. Click Add connection and search for Brainsalt: Backstage. The module is in the official store and installs automatically.
3. Configure the connection
After adding the connection, fill in three fields:
|
Field |
Description |
Default |
|---|---|---|
|
Backstage IP / Hostname |
IP address or hostname of the machine running Backstage. |
|
|
Show-Control TCP Port |
TCP port configured in Backstage's Remote Control settings. |
|
|
Auth Token |
The auth token set in Backstage. Leave empty if no token is configured. |
(empty) |
Once configured, the module connects and subscribes to live status updates. The connection indicator turns green when active.
4. Use the discovered actions, feedbacks, and presets
The module automatically discovers all show-control entities in your Backstage project. No additional configuration is required — every stepper, sequencer, broadcast scheduler, calibrator, audio output, matrix mixer, NDI input, and node endpoint appears as a target in the module's action and feedback dropdowns.
The module also generates ready-made button presets for every discovered entity. Open Presets in Companion and drag them onto your buttons to get working controls with feedback in seconds.
5. (Optional) Add CompanionIO nodes for custom typed controls
For show-specific controls beyond the built-in entities, add CompanionIO nodes to your Backstage node graph (found in the UI category). Each CompanionIO node appears in Companion as a typed control with a matching widget: trigger buttons for Bang, faders for Float/Int, toggles for Bool, choice selectors for Enum, text fields for String, and color pickers for Color.
CompanionIO nodes are optional. The module works with all show-control entities without any nodes in the graph.
What the module controls
The table below summarises the actions, feedbacks, and variables the module exposes for each Backstage entity type.
|
Entity |
Actions |
Feedbacks |
Variables |
|---|---|---|---|
|
Steppers |
Play, Pause, Stop, Restart, Bang, Next Step, Go To Step |
State is (Playing / Paused / Stopped), At step number |
State, current step, step count, step name |
|
Sequencers |
Play, Pause, Stop, Restart, Bang, Fade In, Fade In + Play, Fade Out, Fade Out + Pause, Fade Out + Stop, Seek (fraction), Jump (seconds), Set Tempo, Adjust Tempo, Set Fade, Adjust Fade |
State is, Position above fraction |
State, time (seconds and m:ss), duration, tempo, fade level |
|
Broadcast Schedulers |
Enable / Disable / Toggle, Force Entry, Clear Forced Entry |
Enabled, Active entry is |
Enabled state, active entry, next entry |
|
Calibrators |
Align, Black Level, Cancel, Restore Alignment Snapshot, Restore Black Level Snapshot |
State is (Idle / Aligning / Black Level / Complete / Error) |
State, progress %, message |
|
Audio Outputs & Matrix Mixers |
Set Volume (global or per channel), Adjust Volume, Mute / Unmute / Toggle |
Muted, Volume above threshold |
Volume, mute state |
|
NDI Inputs |
Route Source (select from discovered NDI sources, or unroute) |
Routed source is |
Routed source name |
|
Node Endpoints |
Send Value (generic, for Remote Control In / labelled datatype nodes / CompanionIO) |
Value equals |
Current value |
|
CompanionIO Controls (typed) |
Trigger Bang, Set/Adjust Number (Float/Int), Set Bool (on/off/toggle), Set/Step Enum, Set String, Set Color |
Bool is ON, Enum choice is, Number above threshold, Color preview (sets button background) |
Current value (formatted per type) |
[USER-ACTION-REQUIRED: Attach a screenshot of the Companion connection page showing the Brainsalt: Backstage module configured and connected]
[USER-ACTION-REQUIRED: Attach a screenshot of Backstage Settings → Remote Control showing the Enable Show-Control Protocol and Enable Bitfocus Companion checkboxes]
Options explained
|
Setting |
Description |
Values / Range |
|---|---|---|
|
Enable Show-Control Protocol |
Master switch for the JSON show-control protocol in Backstage. Must be on for the Companion module to connect. |
Checkbox (off by default) |
|
Enable Bitfocus Companion |
Sub-option that allows clients identifying as Companion. Disabling this blocks Companion specifically without affecting other show-control clients. |
Checkbox (on by default) |
|
TCP Port |
The TCP port Backstage listens on for show-control connections. |
|
|
Auth Token |
Optional authentication token. When set in Backstage, the same token must be entered in the Companion connection settings. Applied live (no restart needed). |
Text (empty = no auth) |
|
Bind Address |
Network interface Backstage listens on. Set to |
IP address (default |
|
IP Allowlist |
Comma-separated list of IPs or CIDRs allowed to connect. Applied live. Empty means any IP is allowed. |
Text (empty = any) |
Common Mistakes
-
Connection stays yellow / "Connecting" — The show-control protocol is disabled in Backstage. Open Settings → Remote Control, enable it, and click Apply / Restart Protocol Server.
-
Connection fails with "disabled" — The Enable Bitfocus Companion sub-checkbox is unchecked. The module identifies itself to Backstage, and this switch gates Companion connections specifically. Re-enable it in Settings → Remote Control.
-
No entities appear in action dropdowns — The Backstage project has no steppers, sequencers, or other show-control entities yet. Create a stepper or sequencer in Backstage; the module discovers new entities automatically.
-
Auth token mismatch — If Backstage has an auth token configured but the Companion connection does not (or vice versa), the connection will be rejected. Make sure both sides use the same token, or clear both.
-
Port/bind changes not taking effect — Changes to TCP port or bind address require clicking Apply / Restart Protocol Server in Backstage. The auth token and IP allowlist apply live without a restart.
Tips
-
Drag presets from the Presets tab instead of building buttons from scratch. The module generates transport buttons with state feedback and status displays for every discovered entity.
-
Use Adjust Volume and Adjust Tempo actions on encoder rotation events. They read the current value and add a step, making them ideal for hardware knobs.
-
CompanionIO nodes respect min/max/step metadata. Set these on the node in Backstage and the Companion actions will clamp and step values accordingly.
-
All entity names in Companion match their Backstage names exactly (case-sensitive). If you rename a stepper in Backstage, update your Companion buttons to match, or use the Allow custom option with a Companion variable.
-
The module subscribes to live status events. Button feedbacks and variables update in real time without polling — typically within 100 ms of a state change.
Related
How to Control Backstage via the JSON Remote Control Protocol — Full reference for the underlying show-control protocol (message format, domains, actions, status fields).
Integrate with Backstage via the REST API — Alternative HTTP/REST integration for querying and controlling Backstage programmatically.
How to Use the Stepper Window — Create and manage steppers in Backstage, which are the primary show-control entity for multi-step sequences.
