by self-driving jazz

Cuelight

Q1 Go

Make any screen a media player.
Control them with your agents.

1

Setup

  1. 1 Run a server

    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.

  2. 2 Add your screens

    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.

  3. 3 Choose what plays

    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

Screens

Desktop
An app for macOS, Windows and Linux. macOS release builds are signed and notarized.
Browser and smart TV
Open /node/ on your server in a browser, including a TV’s, and pair it with a code.
Android
An app for Android TV, Google TV and Fire TV.
Linux appliance
A player for Raspberry Pi-class computers. Plays media with MPV.

3

Details

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.

Join with a link

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.

Signed updates

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.

Web apps

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.

Phone remote

Each screen’s Remote tab in the controller has a QR code. Scan it to control playback from your phone.

4

Install

Docker Compose

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.

Binary + PostgreSQL

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.