sbomified Lint Rust Nix

Screenly CLI

The Screenly CLI simplifies interactions with Screenly through your terminal, designed for both manual use and task automation.

Installation

From Releases

Download the latest release here.

Homebrew (macOS only)

$ brew tap screenly/screenly-cli
$ brew install screenly-cli

Nix

$ nix-shell -p screenly-cli

Docker

For other operating systems or Docker usage:

$ docker run --rm \
    -e API_TOKEN=YOUR_API_TOKEN \
    screenly/cli:latest help

Building from Source

To build the Screenly CLI from source, ensure you have Rust installed:

$ cargo build --release

[!NOTE] If you're building from source in Ubuntu, make sure to install build-essential: bash sudo apt-get install -y build-essential

Otherwise, you'll get the following error: error: linker `cc` not found

The screenly binary will be located in target/release.

To configure a non-production API server, set the API_SERVER_NAME environment variable:

$ API_SERVER_NAME=local cargo build --release

GitHub Action

Integrate Screenly CLI into your GitHub workflows:

Inputs

screenly_api_token

Required Screenly API token for your team.

cli_commands

Required Command to execute (e.g., screen list).

cli_version

Optional CLI version override.

Example usage

uses: screenly/cli@master
with:
  screenly_api_token: ${{ secrets.SCREENLY_API_TOKEN }}
  cli_commands: screen list

Commands

Command line interface is intended for quick interaction with Screenly through terminal. Moreover, this CLI is built such that it can be used for automating tasks.

Usage: screenly [OPTIONS] <COMMAND>

screenly [OPTIONS] <COMMAND>
Subcommands:
Options:

Login

Logs in with the provided token and stores it for further use if valid. You can set the API_TOKEN environment variable to override the stored token

Usage: screenly login

screenly login

Logout

Logs out and removes the stored token

Usage: screenly logout

screenly logout

Screen

Screen related commands

Usage: screenly screen <COMMAND>

screenly screen <COMMAND>
Subcommands:

List

Lists your screens

Usage: screenly screen list [OPTIONS]

screenly screen list [OPTIONS]
Options:

Get

Gets a single screen by id

Usage: screenly screen get [OPTIONS] <UUID>

screenly screen get [OPTIONS] <UUID>
Arguments:
Options:

Add

Adds a new screen

Usage: screenly screen add [OPTIONS] <PIN> [NAME]

screenly screen add [OPTIONS] <PIN> [NAME]
Arguments:
Options:

Delete

Deletes a screen. This cannot be undone

Usage: screenly screen delete <UUID>

screenly screen delete <UUID>
Arguments:

Asset

Asset related commands

Usage: screenly asset <COMMAND>

screenly asset <COMMAND>
Subcommands:

List

Lists your assets

Usage: screenly asset list [OPTIONS]

screenly asset list [OPTIONS]
Options:

Get

Gets a single asset by id

Usage: screenly asset get [OPTIONS] <UUID>

screenly asset get [OPTIONS] <UUID>
Arguments:
Options:

Add

Adds a new asset

Usage: screenly asset add [OPTIONS] <PATH> <TITLE>

screenly asset add [OPTIONS] <PATH> <TITLE>
Arguments:
Options:

Delete

Deletes an asset. This cannot be undone

Usage: screenly asset delete <UUID>

screenly asset delete <UUID>
Arguments:

Inject js

Injects JavaScript code inside of the web asset. It will be executed once the asset loads during playback

Usage: screenly asset inject-js <UUID> <PATH>

screenly asset inject-js <UUID> <PATH>
Arguments:

Set headers

Sets HTTP headers for a web asset

Usage: screenly asset set-headers <UUID> <HEADERS>

screenly asset set-headers <UUID> <HEADERS>
Arguments:

Update headers

Updates HTTP headers for a web asset

Usage: screenly asset update-headers <UUID> <HEADERS>

screenly asset update-headers <UUID> <HEADERS>
Arguments:

Basic auth

Sets up basic authentication headers for a web asset

Usage: screenly asset basic-auth <UUID> <CREDENTIALS>

screenly asset basic-auth <UUID> <CREDENTIALS>
Arguments:

Bearer auth

Sets up bearer authentication headers for a web asset

Usage: screenly asset bearer-auth <UUID> <TOKEN>

screenly asset bearer-auth <UUID> <TOKEN>
Arguments:

Playlist

Playlist related commands

Usage: screenly playlist <COMMAND>

screenly playlist <COMMAND>
Subcommands:

Create

Creates a new playlist.

Playlists use a predicate DSL to control when they are shown. The predicate is a boolean expression using these variables:

$DATE - Current date as Unix timestamp in milliseconds $TIME - Time of day in ms since midnight (0-86400000) $WEEKDAY - Day of week (0=Sun, 1=Mon, ..., 6=Sat)

Operators: =, <=, >=, <, >, AND, OR, NOT Special: BETWEEN {min, max}, IN {val1, val2, ...}

Time reference (ms): 32400000=9AM, 43200000=12PM, 61200000=5PM

Examples: TRUE - Always show $WEEKDAY IN {1, 2, 3, 4, 5} - Weekdays only $TIME BETWEEN {32400000, 61200000} - 9 AM to 5 PM NOT $WEEKDAY IN {0, 6} - Exclude weekends

Usage: screenly playlist create [OPTIONS] <TITLE> [PREDICATE]

screenly playlist create [OPTIONS] <TITLE> [PREDICATE]
Arguments:

Variables: $DATE - Unix timestamp in milliseconds $TIME - Milliseconds since midnight (0-86400000) $WEEKDAY - Day of week (0=Sun, 1=Mon, ..., 6=Sat)

Operators: =, <=, >=, <, >, AND, OR, NOT Special: BETWEEN {min, max}, IN {val1, val2, ...}

Time reference: 32400000=9AM, 43200000=12PM, 61200000=5PM, 72000000=8PM

Examples: TRUE - Always show $WEEKDAY IN {1, 2, 3, 4, 5} - Weekdays only $TIME BETWEEN {32400000, 61200000} - 9 AM to 5 PM NOT $WEEKDAY IN {0, 6} - Exclude weekends

Default: TRUE

Options:

List

Lists your playlists

Usage: screenly playlist list [OPTIONS]

screenly playlist list [OPTIONS]
Options:

Get

Gets a single playlist by id

Usage: screenly playlist get <UUID>

screenly playlist get <UUID>
Arguments:

Delete

Deletes a playlist. This cannot be undone

Usage: screenly playlist delete <UUID>

screenly playlist delete <UUID>
Arguments:

Append

Adds an asset to the end of the playlist

Usage: screenly playlist append [OPTIONS] <UUID> <ASSET_UUID> [DURATION]

screenly playlist append [OPTIONS] <UUID> <ASSET_UUID> [DURATION]
Arguments:
Options:

Prepend

Adds an asset to the beginning of the playlist

Usage: screenly playlist prepend [OPTIONS] <UUID> <ASSET_UUID> [DURATION]

screenly playlist prepend [OPTIONS] <UUID> <ASSET_UUID> [DURATION]
Arguments:
Options:

Update

Updates a playlist from JSON input on stdin

Usage: screenly playlist update

screenly playlist update

Edge app

Edge App related commands

Usage: screenly edge-app <COMMAND>

screenly edge-app <COMMAND>
Subcommands:

Create

Creates an Edge App in the store

Usage: screenly edge-app create [OPTIONS] --name <NAME>

screenly edge-app create [OPTIONS] --name <NAME>
Options:

List

Lists your Edge Apps

Usage: screenly edge-app list [OPTIONS]

screenly edge-app list [OPTIONS]
Options:

Rename

Renames an Edge App

Usage: screenly edge-app rename [OPTIONS] --name <NAME>

screenly edge-app rename [OPTIONS] --name <NAME>
Options:

Run

Runs the Edge App emulator

Usage: screenly edge-app run [OPTIONS]

screenly edge-app run [OPTIONS]
Options:

Setting

Edge App setting commands

Usage: screenly edge-app setting <COMMAND>

screenly edge-app setting <COMMAND>
Subcommands:

List

Lists Edge App settings

Usage: screenly edge-app setting list [OPTIONS]

screenly edge-app setting list [OPTIONS]
Options:

Set

Sets an Edge App setting

Usage: screenly edge-app setting set [OPTIONS] <SETTING_PAIR>

screenly edge-app setting set [OPTIONS] <SETTING_PAIR>
Arguments:
Options:

Instance

Edge App instance commands

Usage: screenly edge-app instance <COMMAND>

screenly edge-app instance <COMMAND>
Subcommands:

List

Lists Edge App instances

Usage: screenly edge-app instance list [OPTIONS]

screenly edge-app instance list [OPTIONS]
Options:

Create

Creates an Edge App instance

Usage: screenly edge-app instance create [OPTIONS]

screenly edge-app instance create [OPTIONS]
Options:

Delete

Deletes an Edge App instance

Usage: screenly edge-app instance delete [OPTIONS]

screenly edge-app instance delete [OPTIONS]
Options:

Update

Updates an Edge App instance based on changes in instance.yml

Usage: screenly edge-app instance update [OPTIONS]

screenly edge-app instance update [OPTIONS]
Options:

Deploy

Deploys assets and settings of the Edge App and releases it

Usage: screenly edge-app deploy [OPTIONS]

screenly edge-app deploy [OPTIONS]
Options:

Possible values: true, false

Delete

Deletes an Edge App. This cannot be undone

Usage: screenly edge-app delete [OPTIONS]

screenly edge-app delete [OPTIONS]
Options:

Validate

Validates the Edge App manifest file

Usage: screenly edge-app validate [OPTIONS]

screenly edge-app validate [OPTIONS]
Options:

Mcp

Starts the MCP (Model Context Protocol) server on stdio for AI assistant integration

Usage: screenly mcp

screenly mcp

For AI assistant integration, see the MCP Server documentation.