Bitfocus Companion
Control LiveWing from Bitfocus Companion using a Stream Deck, MIDI, web buttons, or any supported device.
The LiveWing Companion module connects to LiveWing's WebSocket API and exposes actions, feedbacks, and variables you can assign to any Companion-compatible surface.
Connection setup
Add a new connection, select LiveWing, and configure:
- Host — IP address of the Mac running LiveWing (
127.0.0.1if Companion is on the same machine) - Port —
8099(default) - Token — the API token set in LiveWing's settings
Bonjour discovery is supported — LiveWing advertises itself on the local network as _livewing-api._tcp.
Presets
The module ships with ready-to-use button presets. Import them from the Presets tab in Companion and drag them onto your layout.
| Category | What's included |
|---|---|
| Program | One button per source — cuts to program, lights red when live |
| Preview | One button per source — routes to preview, lights green |
| Transitions | CUT, FADE 0.5s / 1s / 2s |
| Audio | Mute toggle per source, lights red when muted |
| Recording | Start/stop per recorder, lights red while recording |
| Replay | Enter, Exit, Play, Pause, Quick Replay, Mark In/Out, Clear Marks, Play Last Event, Live Edge, Step Frame, Skip ±2s, Loop |
| Replay Speeds | 0.25×, 0.50×, 0.75×, 1.0× — active speed lights green |
| Replay Angles | One button per source — switches angle, lights blue when active |
Feedbacks update in real time via subscriptions — no polling required.
| Feedback | Triggers when… | Options | Default color |
|---|---|---|---|
| Source on Program | Source is on program output | Source | Red |
| Source on Preview | Source is on preview | Source | Green |
| Source Audio Muted | Source is muted | Source | Red |
| Source Audio Soloed | Source is soloed | Source | Yellow |
| Recorder Active | Recorder is recording | Recorder (1–4) | Red |
| In Replay Mode | Replay mode is active | — | Blue |
| Replay Playing | Transport is playing | — | Green |
| Replay Paused | Transport is paused | — | Orange |
| Replay Stopped | Transport is stopped | — | Grey |
| Replay Looping | Loop is enabled | — | Blue |
| Replay Speed Match | Current speed equals configured value | Speed | Green |
| Replay Angle Active | Source is the active replay angle | Source | Blue |
| Output Enabled | Output channel is enabled | Output (1–4) | Red |
| Overlay Slot Active | Overlay slot is visible on program | Slot (1–4) | Yellow |
| Source Healthy | Source has a live signal | Source | Green |
| Source Disconnected | Source has no signal | Source | Red |
| Transition In Progress | A transition is running | — | Orange |
Variables update automatically and can be used in button labels.
| Variable | Description |
|---|---|
$(livewing:programSourceId) | Program source ID |
$(livewing:programSourceName) | Program source name |
$(livewing:previewSourceId) | Preview source ID |
$(livewing:previewSourceName) | Preview source name |
$(livewing:recorder0State) | Recorder 1 state (idle / recording) |
$(livewing:recorder1State) | Recorder 2 state |
$(livewing:recorder2State) | Recorder 3 state |
$(livewing:recorder3State) | Recorder 4 state |
$(livewing:replayMode) | Whether replay mode is active |
$(livewing:replayState) | Transport state (playing / paused / stopped) |
$(livewing:replaySpeed) | Current playback speed |
$(livewing:replayActiveAngle) | Active replay angle source ID |
$(livewing:replayActiveAngleName) | Active replay angle source name |
$(livewing:replayIsLooping) | Whether looping is enabled |
$(livewing:replayCurrentTime) | Playhead position in seconds |
$(livewing:replayDuration) | Clip duration in seconds |
$(livewing:replayMarkingMode) | Marking mode (live / recorded) |
$(livewing:replayActiveEventBin) | Active event bin index |
$(livewing:output0Enabled) | Output 1 enabled state |
$(livewing:output1Enabled) | Output 2 enabled state |
$(livewing:output2Enabled) | Output 3 enabled state |
$(livewing:output3Enabled) | Output 4 enabled state |
$(livewing:source_N_name) | Name of source N (one per connected source) |
$(livewing:source_N_health) | Health of source N (live / disconnected / unknown) |
Example: set a button label to PGM: $(livewing:programSourceName) to show the current live source.