Bitfocus Companion

Cliqer integrates with Bitfocus Companion, the popular open-source button-control software for live production. The Cliqer module is installed automatically when Cliqer detects Companion on your system, so there is no manual setup.
How It Works
Cliqer runs two loopback servers that the module connects to: an HTTP action API on 127.0.0.1:24601 for button actions, and a WebSocket on 127.0.0.1:9052 that streams live timer updates and app state for feedbacks and variables.
Setup
- Install Bitfocus Companion (4.2 or newer) and launch it at least once
- Launch Cliqer, it drops the Cliqer module into Companion's modules folder
- Restart Companion once so it picks up the module, then add a Cliqer connection (it points at
127.0.0.1, action API port24601)
Available Actions
The module provides 19 actions, grouped by category:
| Category | Actions |
|---|---|
| Click | Left Click, Right Click |
| Timer | Start / Pause Timer, Reset Timer, +1 / +2 / +5 Minutes, −1 / −2 / −5 Minutes |
| Presets | Timer Preset 1 / 2 / 3 / 4 (5, 10, 15, 20 minutes) |
| Callers | Caller to Program (choose caller 1–9), Clear Program (cut to black) |
| Control | Stop Screen Share, Toggle Program NDI Output, Toggle Timer NDI Output |
Feedbacks
Feedbacks change a button's appearance based on live state. The module defines 11 feedbacks:
| Feedback | True when |
|---|---|
| Timer Running | The timer is actively counting |
| Timer Stopped | The timer is paused |
| Timer Overtime | The timer has passed 0:00 in countdown mode |
| Timer Yellow (Warning Phase) | The timer is nearing its limit |
| Timer Red Flash (At Zero / Overtime) | Flashes as the timer hits zero / runs into overtime |
| Caller On Air (Program) | The selected caller is live on the program bus |
| Caller Connected | The selected caller slot has a connected caller |
| Screen Share Active | A screen share is on the program feed |
| Program NDI Output Active | The program NDI output is on |
| Timer NDI Output Active | The timer NDI output is on |
The module also defines a Timer Green (Talk Phase) feedback that Cliqer 2.x does not currently drive, so it stays inactive.
Variables
The module exposes 14 variables for use in button text and triggers. Reference them by the connection label, for example $(Cliqer:timer_display) when the connection is named Cliqer:
| Variable | Description | Example |
|---|---|---|
timer_display | Current timer value (MM:SS) | 14:30 |
timer_minutes | Minutes component | 14 |
timer_seconds | Seconds component | 30 |
timer_state | Timer state | running / stopped |
preset1_label … preset4_label | Preset durations (MM:SS) | 05:00 |
program_caller | Name of the caller currently on program | Jane |
callers_count | Connected callers | 3 |
viewers_count | Audience / viewers | 128 |
presenters_count | Connected presenters | 2 |
room_id | Current room ID | ABC123 |
room_url | Shareable room link | https://cliqer.io/ABC123 |
Presets
The module ships ready-made button presets so you can build a control surface by dragging, grouped into the same categories as the actions: Click, Timer, Presets, Callers and Control. Drop them onto a Companion page for instant slide, timer, caller and output control.
Platform Support
| Platform | Auto-Install Location |
|---|---|
| macOS | ~/Library/Application Support/companion/modules/ |
| Windows | %APPDATA%\companion\modules\ |
The module is placed in a cliqer-cliqer-<version> folder inside that directory (for example cliqer-cliqer-1.2.2). When Cliqer installs an update it removes the previous version folder first, so only the current version remains.
Troubleshooting
Module Not Appearing in Companion
- Ensure Companion is installed and has been launched at least once before Cliqer
- Companion scans its modules folder only at startup, so restart Companion once after Cliqer's first launch and the Cliqer connection type will appear
- The Refresh modules button in Companion refreshes its online store, not the local modules folder, so restart Companion to surface a freshly installed module
Actions Not Firing
- Confirm the connection targets
127.0.0.1on action API port24601 - A legacy Cliqer 1 build briefly served this API on port
2222, which broke stock module actions; module v1.2.2 with Cliqer 2 uses24601, so use the default port - Only one Cliqer instance can own the local ports on a machine — see the Stream Deck notes
Timer Feedbacks or Variables Not Updating
- The live timer and app-state feed uses the loopback WebSocket on port
9052, so Companion must run on the same computer as Cliqer - Slide and timer actions can still succeed over HTTP even when the feed is not connected, so if buttons fire but feedbacks stay static, check the connection status in Companion
See also: Stream Deck Integration · Timer