Get started

Install, log in, and do something real in four commands.

Install it, log in, and the rest of this page is things worth actually running.

brew tap screenly/screenly-cli
brew install screenly-cli
screenly login

Other install routes are in Install the CLI.

Which screens are down

The one that earns the install:

screenly screen list -o json | jq -r '.[] | select(.status.is_online == false) | .name'

Nothing else in your toolchain answers that in one line. Swap jq for -o table when a person is reading it, or -o csv when somebody asks for a fleet inventory and you would rather not build one.

Put something on a screen

Three commands from nothing to playing:

screenly asset add https://example.com/dashboard "Ops dashboard"
screenly playlist create "Reception"
screenly playlist append $PLAYLIST_ID $ASSET_ID 30

append takes the duration in seconds as its last argument. prepend does the same at the front, which is the one you want for something urgent.

Pair a screen without a browser

screenly screen add k7ptqz34 "Line 4 Andon"

The pairing code comes off the display. In a rollout, this plus a list of codes and names is the whole provisioning script.

Set up an authenticated page

The five asset commands that make the CLI worth using over the dashboard for this:

screenly asset basic-auth $ASSET_ID "user=s3cret"
screenly asset bearer-auth $ASSET_ID "eyJhbG..."
screenly asset inject-js $ASSET_ID close-cookie-banner.js

Also set-headers and update-headers. All of it is scriptable and reviewable, which clicking is not. See Authenticated pages.

Ship an app

screenly edge-app validate
screenly edge-app run --generate-mock-data
screenly edge-app deploy

Build locally against mock data, then deploy to every screen running it. See Edge apps.

Then

The command surface for what else is there, Scripting for output formats and pipes, and Running in CI for the pipeline.

Or screenly mcp, and let an assistant do it. See MCP server.

Type to search the documentation