Commands, settings, SDK functions, anything in the docs.

Reference

Commands

Every ledable command, its arguments and its options.

On this page

This reference is generated from ledable --help --json of the CLI 0.1.0. The same text is in the terminal: ledable --help lists the commands, and ledable <group> <command> --help describes one.

Options of every command

-j, --jsonPrint each JSON result on one line instead of indented
--timeout <seconds>Give up after this many seconds, at most 86400; the default is the command's own, or 30
-h, --helpShow help for the CLI, a group or one command
--versionPrint the version of the CLI

ledable auth

auth login

Email a sign-in link and wait until it is opened, or until its one-time code is typed in

ledable auth login <email> [options]

<email>The address of the account; a new address creates one
--code-stdinRead the one-time code the link shows from one line of stdin instead of waiting at a prompt

Gives up after 600 seconds unless --timeout says otherwise.

auth accounts

List the accounts signed in on this machine and which one is current

ledable auth accounts [options]

Gives up after 30 seconds unless --timeout says otherwise.

auth use

Make another account signed in on this machine the current one

ledable auth use <user_id> [options]

<user_id>The account, by the user_id `ledable auth accounts` prints

Gives up after 30 seconds unless --timeout says otherwise.

auth whoami

Show the current account's profile

ledable auth whoami [options]

Gives up after 30 seconds unless --timeout says otherwise.

auth logout

Sign out of the current account and clear its local credentials

ledable auth logout [options]

Gives up after 30 seconds unless --timeout says otherwise.

ledable ble

ble scan

Scan for LEDABLE devices nearby for 8 seconds, printing each one found

ledable ble scan [options]

Gives up after 30 seconds unless --timeout says otherwise.

ble info

Read a nearby device's model, hardware id and whether it is linked, without claiming it

ledable ble info <peripheral_id> [options]

<peripheral_id>The nearby device, by the deviceId `ledable ble scan` prints

Gives up after 30 seconds unless --timeout says otherwise.

Run the app's pairing page: prints the devices nearby and the claim's progress

ledable ble link [options]

--firstClaim the first free device found and name it, ending with its device_id
--name <name>The name the device gets once claimed; without it, the model it reports

It reads one intent a line on stdin:

pair <peripheral_id>Claim this device for the account
probe <peripheral_id>Read this device again after its probe failed
retryTry the failed claim again
cancelStop the claim under way
rescanScan again

Gives up after 120 seconds unless --timeout says otherwise.

ble pair

Claim one nearby device through the pairing page and name it, ending with its device_id

ledable ble pair <peripheral_id> [options]

<peripheral_id>The nearby device, by the deviceId `ledable ble scan` prints
--name <name>The name the device gets once claimed; without it, the model it reports

Gives up after 90 seconds unless --timeout says otherwise.

ledable wifi

wifi setup

Run the app's Wi-Fi page over Bluetooth: prints the networks the device sees and knows

ledable wifi setup --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

It reads one intent a line on stdin:

tap <ssid>Join an open network, or open the editor of a secured one
password <password>Join the network in the editor with this password
openJoin the network in the editor as an open network
hidden <ssid>Open the editor for a network that does not broadcast its name
cancelClose the editor
forget <ssid>Forget a saved network
rescanHave the device scan again
retryTry again after a failure
restartRestart the device so it moves to a network it saved but did not join

Gives up after 120 seconds unless --timeout says otherwise.

wifi status

Read the device's Wi-Fi connection over Bluetooth

ledable wifi status --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

wifi scan

Have the device scan for Wi-Fi networks

ledable wifi scan --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

wifi known

Read the networks the device has saved, passwords left out

ledable wifi known --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

wifi join

Join a network through the Wi-Fi page and wait for the device; hidden networks work too

ledable wifi join <ssid> --device <id> [options]

<ssid>The network's name
-d, --device <id>The device to act on, by the id `ledable devices list` prints
--openThe network has no password
--password-stdinRead the password from one line of stdin instead of a hidden prompt

Gives up after 90 seconds unless --timeout says otherwise.

wifi forget

Forget a saved network through the Wi-Fi page; a device on it stays until it restarts

ledable wifi forget <ssid> --device <id> [options]

<ssid>The network's name
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 90 seconds unless --timeout says otherwise.

ledable devices

devices list

List the account's devices with their ids

ledable devices list [options]

Gives up after 30 seconds unless --timeout says otherwise.

devices info

Show one device's record

ledable devices info --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

devices rename

Rename the device

ledable devices rename <nickname> --device <id> [options]

<nickname>The new name: 2 to 32 letters, digits, spaces, dashes or underscores, starting with a letter or digit
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

devices remove

Unlink the device from the account

ledable devices remove --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints
--yesConfirm the removal; without it nothing is removed

Gives up after 30 seconds unless --timeout says otherwise.

devices ping

Ping the device and wait until it answers, which shows it is online

ledable devices ping --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

devices presence

Run the app's presence watch: prints online or offline, the firmware version and what plays as they change

ledable devices presence --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

devices logs

Stream the device's live log lines until the timeout

ledable devices logs --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

devices logs-page

Run the app's log page: the stored window, live lines and the server's history

ledable devices logs-page --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

It reads one intent a line on stdin:

refreshRead the server's history again
retryTry again after a failure

Gives up after 30 seconds unless --timeout says otherwise.

devices log-history

Query the device logs the server keeps

ledable devices log-history --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints
--module <module>Only the lines of this firmware module
--level <level>Only the lines of this level, spelled as the firmware spells it
--after <seconds>Only the lines after this device timestamp, in seconds since the device's boot
--limit <count>At most this many lines, 1 to 1000

Gives up after 30 seconds unless --timeout says otherwise.

devices reboot

Restart the device

ledable devices reboot --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

devices pull

Tell the device to read its configuration from the server again

ledable devices pull <app|device|all> --device <id> [options]

<app|device|all>The playlist (app), the device settings and alarms (device), or both (all)
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

ledable store

store home

The store's home page: top apps per category, collections and the latest listings

ledable store home [options]

Gives up after 30 seconds unless --timeout says otherwise.

Search the listed apps by name, description and tags

ledable store search <query> [options]

<query>Words that must all appear
--tag <tag>Only the apps with this tag
--category <category>Only the apps in this category: clock, weather, finance, news, sports, productivity, developer, entertainment, science, travel

Gives up after 30 seconds unless --timeout says otherwise.

store app

An app's store page

ledable store app <app_id> [options]

<app_id>The app
--share <link>The share link of an app that is not listed, which shows its test version

Gives up after 30 seconds unless --timeout says otherwise.

store manifest

A version's settings, each with its type, default and choices

ledable store manifest <app_id[@version]> [options]

<app_id[@version]>The app, at a version or, without one, the store's current version (the test version with --share)
--share <link>The share link of an app that is not listed, which shows its test version

Gives up after 30 seconds unless --timeout says otherwise.

store preview

Download a version's store preview as WebP, in the device's language and time zone when one is named

ledable store preview <app_id[@version]> <output> [options]

<app_id[@version]>The app, at a version or, without one, the store's current version (the test version with --share)
<output>The file to write
-d, --device <id>The device to act on, by the id `ledable devices list` prints; optional
--share <link>The share link of an app that is not listed, which shows its test version

Gives up after 30 seconds unless --timeout says otherwise.

store install

Add an app to the device's playlist through the app's install page

ledable store install <app_id[@version]> --device <id> [options]

<app_id[@version]>The app, at a version or, without one, the store's current version
-d, --device <id>The device to act on, by the id `ledable devices list` prints
--values <file>A JSON object of setting values, each a string as `ledable store manifest` describes; null restores the default
--credential <field>A credential setting to type in, from a hidden prompt or one line of stdin per field; repeatable

Gives up after 30 seconds unless --timeout says otherwise.

store update

Move the playlist's entries of an app to the store's current version, keeping their settings

ledable store update <app_id> --device <id> [options]

<app_id>The app whose entries move
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

ledable playlist

playlist list

Read the device's playlist

ledable playlist list --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

playlist page

Run the app's playlist page: prints the entries as they change

ledable playlist page --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

It reads one intent a line on stdin:

enable <instance_id>Turn an entry's switch on
disable <instance_id>Turn an entry's switch off
editStart editing the order and the entries
move <from> <to>While editing, move the entry at one zero-based position to another
remove <instance_id>While editing, remove an entry
doneApply the edits
retryWrite again after a failed write
forceWrite again over a change made elsewhere in the meantime
discardDrop the edits
dismissDismiss the failure shown
reloadRead the playlist again

Gives up after 300 seconds unless --timeout says otherwise.

playlist enable

Turn an entry's switch on

ledable playlist enable <instance_id> --device <id> [options]

<instance_id>The playlist entry, by the instance_id `ledable playlist list` prints
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

playlist disable

Turn an entry's switch off

ledable playlist disable <instance_id> --device <id> [options]

<instance_id>The playlist entry, by the instance_id `ledable playlist list` prints
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

playlist remove

Remove an entry; pictures no other entry shows are deleted with it

ledable playlist remove <instance_id> --device <id> [options]

<instance_id>The playlist entry, by the instance_id `ledable playlist list` prints
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

playlist move

Move an entry to another position

ledable playlist move <instance_id> <index> --device <id> [options]

<instance_id>The playlist entry, by the instance_id `ledable playlist list` prints
<index>The zero-based position it moves to
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

playlist rename

Rename a playlist entry

ledable playlist rename <instance_id> <name> --device <id> [options]

<instance_id>The entry, by the instance_id `ledable playlist list` prints
<name>Its new name
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

playlist duration

Set how long a playlist entry shows

ledable playlist duration <instance_id> <seconds> --device <id> [options]

<instance_id>The entry, by the instance_id `ledable playlist list` prints
<seconds>5 to 120, or 0 to follow the device's default
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

playlist configure

Change a store app entry's settings through its settings page

ledable playlist configure <instance_id> --device <id> [options]

<instance_id>The entry, by the instance_id `ledable playlist list` prints
-d, --device <id>The device to act on, by the id `ledable devices list` prints
--values <file>A JSON object of setting values, each a string as `ledable store manifest` describes; null restores the default
--credential <field>A credential setting to type in, from a hidden prompt or one line of stdin per field; repeatable

Gives up after 30 seconds unless --timeout says otherwise.

ledable playback

playback control

Run the app's player: prints what the device plays as it changes

ledable playback control --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

It reads one intent a line on stdin:

nextShow the next playlist entry
previousShow the previous playlist entry
togglePause or resume the playlist

Gives up after 30 seconds unless --timeout says otherwise.

playback toggle

Press the player's play/pause button; ends once the command is out, as older firmware reports no pause

ledable playback toggle --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

playback next

Press the player's next button and wait for the device to follow

ledable playback next --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

playback previous

Press the player's previous button and wait for the device to follow

ledable playback previous --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

ledable settings

settings page

Run the app's device settings page: prints the settings as they change

ledable settings page --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

It reads one intent a line on stdin:

brightness <level>Set the brightness, 0 to 255
auto-brightness on|offFollow the light sensor or not
duration <seconds>Set how long each entry shows by default, 5 to 120 seconds
language <tag>Set the language, as a BCP 47 tag such as en-US or zh-CN
timezone <zone>Set the time zone, as an IANA Area/City name
auto-update on|offInstall firmware updates automatically or not
reloadRead the settings from the server again

Gives up after 300 seconds unless --timeout says otherwise.

settings get

Read the language, time zone, brightness, display time and auto-update

ledable settings get --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

settings language

Set the device's language

ledable settings language <tag> --device <id> [options]

<tag>A BCP 47 language tag, such as en-US or zh-CN
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

settings timezone

Set the device's time zone

ledable settings timezone <zone> --device <id> [options]

<zone>An IANA Area/City name, such as Europe/Berlin
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

settings duration

Set how long each playlist entry shows by default

ledable settings duration <seconds> --device <id> [options]

<seconds>5 to 120 seconds
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

settings auto-update

Turn automatic firmware updates on or off

ledable settings auto-update <on|off> --device <id> [options]

<on|off>Whether the device installs updates by itself
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

settings brightness

Set the brightness, and how the light sensor adjusts it

ledable settings brightness <level> --device <id> [options]

<level>0 to 255
-d, --device <id>The device to act on, by the id `ledable devices list` prints
--auto <on|off>Follow the light sensor or not; unchanged without it
--offset <offset>How much brighter or dimmer than the sensor suggests, -50 to 50; write negative values as --offset=-10

Gives up after 30 seconds unless --timeout says otherwise.

ledable alarms

alarms list

Read the weekly alarm schedule

ledable alarms list --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

alarms replace

Replace the whole alarm schedule

ledable alarms replace <file.json> --device <id> [options]

<file.json>A JSON array of {"second_of_week": number, "sound_filename": string}; an empty sound is the built-in tone
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

alarms add

Add one alarm

ledable alarms add <second_of_week> --device <id> [options]

<second_of_week>When the alarm rings: day * 86400 + hour * 3600 + minute * 60, Sunday being day 0
-d, --device <id>The device to act on, by the id `ledable devices list` prints
--sound <filename>A sound file on the device; without it, the built-in tone

Gives up after 30 seconds unless --timeout says otherwise.

alarms remove

Remove the alarms at one time of the week

ledable alarms remove <second_of_week> --device <id> [options]

<second_of_week>When the alarm rings: day * 86400 + hour * 3600 + minute * 60, Sunday being day 0
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

ledable images

images convert

Turn a PNG, JPEG, WebP or GIF into the 64x32 WebP a device shows, keeping animation

ledable images convert <input> <output> [options]

<input>The image, at most 15 MiB
<output>The WebP file to write
--rotate <0|90|180|270>Turn the image clockwise by this many degrees (default 0)
--flip <none|horizontal|vertical>Mirror the image (default none)
--crop <x,y,width>The part to keep, as fractions 0 to 1 of the turned image; its height follows from the 2:1 panel. Without it, the middle 80%

Gives up after 30 seconds unless --timeout says otherwise. Works on this machine alone, with no account or network.

images add

Add an image to the device's playlist, as the app's Add a picture page does

ledable images add <input> --device <id> [options]

<input>A PNG, JPEG, WebP or GIF, at most 15 MiB
-d, --device <id>The device to act on, by the id `ledable devices list` prints
--rotate <0|90|180|270>Turn the image clockwise by this many degrees (default 0)
--flip <none|horizontal|vertical>Mirror the image (default none)
--crop <x,y,width>The part to keep, as fractions 0 to 1 of the turned image; its height follows from the 2:1 panel. Without it, the middle 80%
--name <name>The entry's name; without it, the name the app gives a new picture
--duration <seconds>How long it shows, 5 to 120, or 0 to follow the device's default (default 0)

Gives up after 30 seconds unless --timeout says otherwise.

images list

List the pictures stored for the device

ledable images list --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

images download

Download a picture stored for the device

ledable images download <filename> <output> --device <id> [options]

<filename>The picture, by the filename `ledable images list` prints
<output>The file to write
-d, --device <id>The device to act on, by the id `ledable devices list` prints

Gives up after 30 seconds unless --timeout says otherwise.

ledable firmware

firmware page

Run the app's firmware page: prints whether an update is available and each stage of one

ledable firmware page --device <id> [options]

-d, --device <id>The device to act on, by the id `ledable devices list` prints
--updateAsk for the update as soon as the device answers and end with the outcome

It reads one intent a line on stdin:

updateCheck for an update and install it

Gives up after 600 seconds unless --timeout says otherwise.

ledable auth-hub

Link a third-party account in the browser, for the apps whose settings ask for one

ledable auth-hub link <github|todoist|google_youtube|spotify> [options]

<github|todoist|google_youtube|spotify>The service to link
--no-browserPrint the address to open instead of opening it; a browser on this machine must open it

Gives up after 600 seconds unless --timeout says otherwise.

auth-hub list

List the linked third-party accounts and their handles

ledable auth-hub list [options]

Gives up after 30 seconds unless --timeout says otherwise.

auth-hub remove

Forget a linked account; the service's authorisation stays until it is revoked there

ledable auth-hub remove <handle> [options]

<handle>The handle `ledable auth-hub list` prints

Gives up after 30 seconds unless --timeout says otherwise.

ledable developer

developer init

Create an app project in a new directory and install its dependencies

ledable developer init <app_id> [options]

<app_id>The app's id and the directory's name: lowercase letters, digits and dashes, at most 64

Gives up after 300 seconds unless --timeout says otherwise. Works on this machine alone, with no account or network.

developer check

Type-check the project in strict mode, as every build and upload does

ledable developer check [options]

Gives up after 30 seconds unless --timeout says otherwise. Works on this machine alone, with no account or network.

developer dev

Rebuild on every change and serve a preview page that runs each build as the gateway would

ledable developer dev [options]

--port <port>The port the page is served on, 0 for any (default 4400)

Gives up after 86400 seconds unless --timeout says otherwise. Works on this machine alone, with no account or network.

developer set

Change the settings and device the running developer dev simulates, and print the render that follows

ledable developer set [options]

--set <key=value>Set a setting; repeatable
--unset <key>Clear a setting; repeatable
--resetClear every setting first
--language <tag>The language the device asks in, as a BCP 47 tag; en by default
--timezone <zone>The time zone the device asks in, as an IANA Area/City name; UTC by default
--duration <seconds>How long the device shows the entry; 5 by default

Gives up after 30 seconds unless --timeout says otherwise. Works on this machine alone, with no account or network.

developer render

Build once and write the image a device would get, or the store preview

ledable developer render [options]

--out <file>The WebP file to write; required
--values <file>A JSON object of setting values, each a string; unset settings take their defaults
--previewWrite the store preview instead of a render
--language <tag>The language the device asks in, as a BCP 47 tag; en by default
--timezone <zone>The time zone the device asks in, as an IANA Area/City name; UTC by default
--duration <seconds>How long the device shows the entry; 5 by default

Gives up after 300 seconds unless --timeout says otherwise. Works on this machine alone, with no account or network.

developer build

Build the bundle, its assets and the release manifest into a temporary directory, as an upload would

ledable developer build [options]

Gives up after 30 seconds unless --timeout says otherwise. Works on this machine alone, with no account or network.

developer create

Claim the project's app id for your account

ledable developer create [options]

Gives up after 30 seconds unless --timeout says otherwise.

developer upload

Build and upload the version ledable.json names; prints every publishing check

ledable developer upload [options]

Gives up after 300 seconds unless --timeout says otherwise.

developer versions

List the uploaded versions and their checks

ledable developer versions [options]

Gives up after 30 seconds unless --timeout says otherwise.

developer test

Show the version ledable.json names behind the app's share link

ledable developer test [options]

Gives up after 30 seconds unless --timeout says otherwise.

developer share

Print the app's share link

ledable developer share [options]

--resetReplace the link; the old one stops working

Gives up after 30 seconds unless --timeout says otherwise.

developer submit

Submit the version ledable.json names for review; official apps are listed at once

ledable developer submit [options]

Gives up after 30 seconds unless --timeout says otherwise.

developer withdraw

Take the submission waiting for review back

ledable developer withdraw [options]

Gives up after 30 seconds unless --timeout says otherwise.

developer unlist

Take the app out of the store; devices keep the versions they have, and a new submission lists it again

ledable developer unlist [options]

Gives up after 30 seconds unless --timeout says otherwise.

developer status

The listed and test versions, the submission under review, the latest review's decision and note, and whether the latest upload failed

ledable developer status [options]

Gives up after 30 seconds unless --timeout says otherwise.

ledable secret

secret set

Set one of the app's secrets, sealed on this machine; the value comes from a hidden prompt or one line of stdin

ledable secret set <NAME> [options]

<NAME>The name ledable.json declares: upper-case letters, digits and underscores

Gives up after 30 seconds unless --timeout says otherwise.

secret list

List the app's secrets, the versions that declare each, and declared names without a value

ledable secret list [options]

Gives up after 30 seconds unless --timeout says otherwise.

secret delete

Delete one of the app's secrets that no published version declares

ledable secret delete <NAME> [options]

<NAME>The name ledable.json declares: upper-case letters, digits and underscores

Gives up after 30 seconds unless --timeout says otherwise.