Skip to main content

Unofficial CLI/TUI for the Light Phone

Project description

Light API/CLI/TUI

An unofficial, community-maintained API and CLI/TUI for managing music, notes, podcasts, and tools on Light devices.

This was made by reverse-engineering the API endpoints from the official dashboard. (I have obtained Light's blessing for this.)

[!CAUTION] This is beta software and is actively in development. Bugs are expected, and bug reports are welcome!

[!WARNING] Because this is an unofficial set of tools created through reverse-engineering, this could break at any time if Light decides to change the structure of their API.

Installation

This repo bundles two separate packages light-phone-api and light-phone-cli-tui. Install whichever suits your needs.

From PyPI:

pip install light-phone-api
pip install light-phone-cli-tui

Authentication

This needs your Light email, password, and phone number to authenticate into the Light dashboard and operate on the correct device.

Please enter your phone number without the country code.

Three options:

# 1. Environment variable
# Assuming LIGHT_EMAIL, LIGHT_PASSWORD, LIGHT_PHONE_NUMBER are set (see .env.example)
light <command>

# 2. Command line
light --email=... --password=... --phone-number=... <command>

# 3. File
light --email-file=... --password-file=... --phone-number-file=... <command>

After the first login, your auth token will be cached. Tokens are good for 30 days.

Getting started: CLI/TUI

Note: As is the case with the official Light dashboard, any changes made through these tools may take a few moments to propagate to the device.

Music

Upload

# Upload tracks
# Overwrite existing matching tracks (match on file title metadata)
light music upload song1 song2 song3 --match-title-by metadata

# Upload tracks
# Overwrite existing matching tracks (match on filename)
light music upload song1 song2 song3 --match-title-by filename

# Upload tracks
# Don't overwrite existing tracks
light music upload --allow-duplicates song1 song2 song3

Delete

# Delete tracks
light music delete song

# Delete all tracks (multiple confirmation steps, don't worry)
light music delete-all

Sort

# Sort tracks by title (!!!)
light music sort title --asc
light music sort title --desc

# Sort tracks by artist
light music sort artist --asc
light music sort artist --desc

# Sort tracks by artist and album (!!!)
# (Track numbers not supported)
light music sort artist-album --asc
light music sort artist-album --desc

Notes

# List all notes (with optional content preview)
light notes list
light notes list --content-preview

# List notes with file IDs (needed for `watch` cmd)
light notes list --id

# Create a new text note
light notes add "Shopping list" "eggs, milk, bread"
light notes add "Meeting notes" --file notes.txt  # copy contents from notes.txt

# Download all notes to a directory
# Text notes saved as .txt, audio notes as .m4a
light notes download ~/my-notes

# Watch a note for changes (polls every 5s, prints when updated_at changes)
# Useful for more advanced custom integrations (happy hacking!)
light notes watch <note-id>

Podcasts

# Subscribe to a podcast by RSS feed URL
light podcast add https://feeds.simplecast.com/FO6kxYGj

# List followed podcasts
light podcast list

# Unfollow a podcast by title
light podcast delete "My Podcast"

Tools

Available tools: alarm album calculator calendar camera directions directory hotspot music notes podcasts timer

light tools list

light tools add <tool>

light tools remove <tool>

TUI

The TUI offers an easier way of managing music and notes.

# Launch
light tui

TUI-specific features:

  • First-class support for Vim bindings
  • Music
    • Reorder tracks individually or in visual block mode
    • Bulk edit track metadata
    • Bulk delete tracks
  • Notes
    • Content preview for both text and audio notes
    • Press e to edit in $EDITOR

Music

Key Action
j / k Navigate
gg / G Jump to top / bottom
J / K Move track up / down
5J / 5K Move track up / down by 5
v Enter visual mode (select a block)
J / K in visual Move selected block up / down
gg / G in visual Move selected block to top / bottom
d in visual Delete selected tracks
e Edit track metadata
e in visual Bulk edit metadata (shared fields pre-filled)
s Cycle sort mode
/ Search
r Refresh

Notes

Key Action
j / k Navigate
gg / G Jump to top / bottom
Enter Load note content
n New note (opens in $EDITOR)
e Edit note content in $EDITOR
R Rename note
dd Delete note (with confirmation)
y Copy content to clipboard
p Play / stop audio note
r Refresh

Screenshots

image image

Getting started: API

Minimal API usage examples are in examples/. Happy hacking!

Tests

Unit tests

Unit tests use request playback with respx.

# This will populate `tests/fixtures/` with the response JSON to test against
python scripts/capture_fixture.py

# Run tests
uv run pytest

Smoke tests (TODO)

As this is an unofficial tool, it could break at any time if Light changes the API format. Smoke tests should be added and run regularly (home server nightly cronjob?) to catch any breaking API changes asap.

To do

  • Fancier light notes watch
  • Contacts management

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

light_phone_cli_tui-0.1.2.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

light_phone_cli_tui-0.1.2-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file light_phone_cli_tui-0.1.2.tar.gz.

File metadata

  • Download URL: light_phone_cli_tui-0.1.2.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for light_phone_cli_tui-0.1.2.tar.gz
Algorithm Hash digest
SHA256 63a0029c4e85d78802dc9cba30b2658989645542ae619413aa5d143b88a4ef4d
MD5 343bb1c805887c63d30c87fa6ed2b3e1
BLAKE2b-256 2ff3e540105eb186d3ff6777314cec2a23c132567d579c4083358055ee6d76c9

See more details on using hashes here.

File details

Details for the file light_phone_cli_tui-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: light_phone_cli_tui-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for light_phone_cli_tui-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ccfed7c5c7f6846a377706ba427ab0184f9223568d3988a09b00fce39d5527b0
MD5 8baab7d066b6e85bd4ceadeb8cf39533
BLAKE2b-256 7725344a461abcdb40f477712d72a5ebaf632d569e0dadda6ba2b3059d79b826

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page