Open Live — Companion Module Setup Guide
This guide covers installing and configuring the Open Live Bitfocus Companion module, importing the default Stream Deck layout, and a reference for all available preset buttons.
Requirements
| Requirement | Version |
|---|---|
| Bitfocus Companion | 3.0 or later |
| Open Live backend | Running and reachable |
No Node.js or build tools needed — the module ships pre-built.
1. Installation
-
Download and install Bitfocus Companion.
-
Go to the GitHub repository, click Code → Download ZIP, and extract it to a dedicated folder on your machine.
Avoid extracting into a large folder such as Downloads — Companion scans the entire developer modules directory on startup, which can cause it to hang.
- Open Companion. Go to Settings → Developer modules and set the path to the folder you extracted the module into (the folder that contains
companion-module-eyevinn-open-live-main, not the module folder itself).
- Go to Connections, search for Open Live or Eyevinn, and click Add.
2. Connecting to Open Live
After adding the connection, Companion opens the module configuration panel.
- Enter your Open Live URL — for example:
- Local development:
http://localhost:8080 -
OSC-hosted: your Open Live service URL from the OSC dashboard
-
If you are connecting to an OSC-hosted instance, enter your OSC PAT (Personal Access Token). See the Open Live Setup Guide for instructions on creating a PAT.
-
Click Save. The connection indicator turns green and the module fetches your active productions.
3. Default Page Layout
The module ships with a ready-made Companion config at:
companion-module-eyevinn-open-live-main/config/open-live-default.companionconfig
Import it via File → Import in Companion to get a fully configured four-page Stream Deck layout.
Page 1 — Productions
Lists all active productions on the Open Live backend. Tap a production to select it and jump to the video control page. A green indicator shows when a slot has an active production; a red dot appears when other controllers are connected.
Page 2 — Video Control (M/E)
The main vision mixing page. Use this during a live production.
- Row 1 — TAKE, AUTO transition, FTB, DSK, and overlay alpha controls.
- Row 2 (red) — Program/CUT bus: tap a source to hard-cut it directly to program. Tapping the current program source is a no-op.
- Row 3 (green) — Preview bus: tap a source to stage it on preview.
Page 3 — Audio Mixer
Per-channel strip controls for channels 1–7.
- Row 0 — Mute toggle
- Row 1 — Volume up
- Row 2 — Volume down
- Row 3 — Fader (rotary encoder)
Button labels resolve dynamically from the production's channel names via Companion variables.
Page 4 — Audio X
X-button pattern for controlling one channel at a time with a single set of action buttons.
- Row 0 — Channel selector (MAIN, Ch1–Ch16). Hold to select; release to deselect.
- Row 1 — MUTE X, VOL ▲ X, VOL ▼ X, X FADER (rotary).
4. Preset Buttons
All preset buttons are available in the Companion Presets panel and can be dragged onto any page. They are organised into categories — drag the ones you need onto your layout, or import the default config in section 3 to get a ready-made layout.
Navigation
| Button | What it does |
|---|---|
| ← BACK | Disconnects from the current production and returns to the productions landing page. |
Productions
| Button | What it does |
|---|---|
| Production 1–31 | Tapping a slot connects to that production and jumps to the video control page. The button turns dark grey when the slot has an active production. A red dot appears in the bottom-right corner when one or more other controllers are connected. |
| REFRESH | Re-fetches the list of active productions from the backend. |
Video — Program (PGM)
Tally indicators for slots 1–16. These buttons have no action — they are purely visual. The button turns red when that source slot is on program.
Video — Preview (PVW)
Selector buttons for slots 1–16. Tapping a button stages that source on preview. The button turns bright green when on preview. It dims when the source is on program (you cannot preview what is already on air).
Video — Transitions
| Button | What it does |
|---|---|
| TAKE | Hard-cuts the current preview to program immediately. |
| FADE 0.5s / 1s / 2s | Fades the current preview to program over 500 ms, 1 s, or 2 s. |
| PUSH L 0.5s / 1s / 2s | Slides the current preview in from the right over the chosen duration. |
| PUSH R 0.5s / 1s / 2s | Slides the current preview in from the left. |
| PUSH UP 0.5s / 1s / 2s | Slides the current preview in from the bottom. |
| PUSH DN 0.5s / 1s / 2s | Slides the current preview in from the top. |
| FADE / PUSH L / PUSH R / PUSH UP / PUSH DN (custom) | Same transitions with a 1 s placeholder duration — edit the button to set your own duration. |
| FTB | Toggles Fade to Black. Turns red when the output is faded to black. |
Video — DSK
Four DSK layer toggle buttons (DSK 1–4). Each button is dimmed when no DSK layer is configured for that slot, full brightness when configured, and turns orange when the layer is currently visible.
Video — OVL Alpha
Five overlay opacity buttons: OVL 0%, 25%, 50%, 75%, 100%. Tapping one sets the overlay alpha immediately.
Audio — Channels
Per-channel strip controls for MAIN and channels 1–16. Each channel has four buttons:
| Button | What it does |
|---|---|
| [Name] MUTE | Toggles mute on that channel. Turns orange when muted. Dims when the channel does not exist in the current production. |
| [Name] ▲ | Nudges the channel volume up by 5% (multiplicative). |
| [Name] ▼ | Nudges the channel volume down by 5%. |
| [Name] FADER | For rotary encoders — rotate to adjust volume, press to toggle mute. Turns orange when muted. |
Button labels use the channel names from the production. In the default config, Companion variables resolve these automatically.
Audio — X Buttons
A space-saving pattern for controlling one channel at a time with a shared set of action buttons. Select a channel first; the X buttons then act on whichever channel is selected.
| Button | What it does |
|---|---|
| MAIN / Ch 1–16 (selector) | Selects that channel as the X-button target. Turns orange when selected. Dims when the channel does not exist. |
| MUTE X | Toggles mute on the selected channel. Turns orange when the selected channel is muted. |
| VOL ▲ X | Nudges the selected channel volume up. |
| VOL ▼ X | Nudges the selected channel volume down. |
| X FADER | For rotary encoders — rotate to adjust the selected channel volume, press to toggle mute. Turns orange when muted. |
5. Building from Source
If you want to modify the module or contribute to development.
Prerequisites
| Tool | Version |
|---|---|
| Node.js | 18 or later |
| npm | Included with Node.js |
| Git | Any recent version |
git clone https://github.com/Eyevinn/open-live-companion-module.git
cd open-live-companion-module
npm install
npm run dev
npm run dev watches for changes and rebuilds dist/main.js automatically on every save. Companion picks up the new build when you reload the connection. Use npm run build for a one-off build before committing.
The compiled output is written to dist/main.js. Commit this file alongside any source changes — Companion loads the pre-built dist, not the TypeScript source.
Note: The repo tracks a stub at
node_modules/@companion-module/base/package.json. Ifnpm run buildfails with module resolution errors, remove the stub, reinstall, and build:
bash rm -rf node_modules/@companion-module/base npm install npm run build git checkout -- node_modules/
6. Intercom Module
The Open Intercom Companion module lets you control intercom calls from a Stream Deck — push to talk, mute, volume, and speaking indicators — alongside your Open Live video controls.
For a full guide on setting up and using Open Intercom, see the Open Intercom User Guide.
How it works
Unlike the Open Live module, Companion acts as the server here — it binds a local WebSocket port and waits for the intercom browser tab to connect. The browser frontend opens ws://localhost:12345 (or whichever port you configure) and all state flows through that connection. Only one browser session can be connected at a time.
Installation
- In Companion, go to Connections, search for Open Intercom, and click Add. The module is available directly in Companion — no download required.
For local development, see the GitHub repository and follow the setup instructions in the Open Intercom User Guide.
- The connection config has two fields:
| Setting | Default | Notes |
|---|---|---|
| WebSocket Bind Interface | 0.0.0.0 |
Leave as default to accept connections on all interfaces |
| WebSocket Port | 12345 |
Must be a free port on the machine running Companion |
-
Click Save. Companion starts listening on the configured port.
-
Open the intercom frontend in a browser and point it at
ws://localhost:12345(replacelocalhostwith Companion's hostname if the browser is on a different machine). The connection indicator in Companion turns green when the browser tab connects.
Adding intercom buttons to Page 2
For a full reference of all available actions and presets, see the Open Intercom User Guide.
A quick way to get started is to add a mute (input) and deafen (output) button directly from the presets panel onto Page 2 alongside your video controls.
- In Companion, go to Page 2 and click Presets in the top toolbar.
- Select the Open Intercom connection from the preset source dropdown.
- Find the Call 1 Buttons category. Drag Toggle Input Mute 1 onto a free button slot — this mutes and unmutes your microphone on call 1.
- Drag Toggle Output Mute 1 onto another slot — this mutes and unmutes your speaker (deafen) on call 1.
Both buttons include feedback out of the box — they change colour automatically to reflect the current mute state.