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 loginOther 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 30append 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.jsAlso 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 deployBuild 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.