One computer, several networks
The desktop app can join more than one Cuelight server. When two send it something, the latest one plays. Pin an assignment to keep it on screen, or give each network its own display.
Q1 Go
Make any screen a media player.
Control them with your agents.
1
The server is one binary, cuelight-control, plus a PostgreSQL database. Run it with Docker Compose, the .deb package, or the Linux or macOS tarball.
In the desktop app, open a join link from the controller or scan its QR code. On a browser or smart TV, open /node/ on your server and enter the code it shows under Pair a screen.
The controller shows a live picture of every screen. Give each one a file, a web page or a playlist, and save the set as a profile to bring back later. Agents can do the same with the cuelight CLI or the HTTP API.
2
/node/ on your server in a browser, including a TV’s, and pair it with a code.3
The desktop app can join more than one Cuelight server. When two send it something, the latest one plays. Pin an assignment to keep it on screen, or give each network its own display.
The controller makes a one-time cuelight://join?… link and QR code for each new screen. If your server has a self-signed certificate, the screen checks its SHA-256 fingerprint. Works on a local network or a tailnet.
The controller shows which screens are out of date and updates them with signed releases. A screen refuses any version older than the one it runs. A server without internet access can import a release.
Turn on app access for a web page and, while it is on screen, it gets a short-lived token to read that screen’s media and remote events. Cuelight Cable, a cable-TV channel guide, is built this way.
Each screen’s Remote tab in the controller has a QR code. Scan it to control playback from your phone.
4
From a checkout of the Cuelight repository:
cd deploy/compose
cp .env.example .env
# Edit .env: database password, hostname, IPs
$EDITOR .env
docker compose up -d --build --wait
docker compose run --rm admin-token
The first start creates the keys and TLS certificate. The last command prints an operator token; paste it into the controller.
After installing the binary and creating a database:
cuelight-control init --dir ./control \
--hostname screen.example \
--public-url https://screen.example:8443 \
--database-url 'postgres://USER:PASS@HOST/DB'
set -a; . ./control/cuelight-control.env; set +a
cuelight-control serve
Use your own hostname and database URL. init creates the keys and certificates. The installation guide covers the first operator token and trusting the certificate.