Jukebox client for NSM Music and TouchTunes — TUI and headless CLI.
bun installLaunch the interactive terminal UI:
bun run dev
# or
bun src/index.tsxOn launch you'll be asked to pick a platform (NSM or TouchTunes). Press p from the home screen to switch between them at any time. Both sessions stay alive — you can be logged into NSM and TouchTunes simultaneously.
| Key | Context | Action |
|---|---|---|
1–5 |
Home | Jump to menu item |
p |
Home | Switch platform |
q / Esc |
Home | Quit |
j/k or arrows |
Lists | Navigate |
Enter |
Lists | Select / confirm |
Tab |
Search | Toggle artists/songs tab |
p |
Search (songs) | Play song |
n |
Search (songs) | Play Next (bump) |
m |
Artist detail | Load more songs |
a |
Locations | Add location |
d |
Locations | Delete location |
Pass any command to get JSON output without launching the TUI:
bun src/index.tsx <command> [options]Saved locations are shared between NSM and TouchTunes — they're just lat/lng coordinates used to find nearby venues on either platform.
# List saved locations
audiobully locations
# Add a location
audiobully location-add "My Bar" 51.5 -0.1
# Set active location
audiobully location-activate 0
# Remove a location
audiobully location-delete 1# Log in (--save persists credentials for auto-login)
audiobully login --email user@example.com --password secret --save
# Show current user
audiobully whoami
# Session & checkin status
audiobully status
# Log out
audiobully logout# Find nearby venues
audiobully venues --lat 51.5 --lng -0.1
# Get venue details (devices, prices)
audiobully venue 12345
# Check in to a venue (auto-selects first interactive device)
audiobully checkin 12345
# Check in to a specific device
audiobully checkin 12345 --device 67890
# Check out
audiobully checkout# Search songs & artists
audiobully search "blue october"
audiobully search "blue october" --page 2
# Browse an artist's songs
audiobully artist 42 --page 1
# Queue a song
audiobully play 99999
# Queue with priority (bump)
audiobully play 99999 --bump
# What's playing now
audiobully now-playing# List playlists
audiobully playlists
# Get playlist details
audiobully playlist 5 --page 1
# Create a playlist
audiobully playlist-create "Friday Night"
# Add a song to a playlist
audiobully playlist-add 5 99999
# Delete a playlist
audiobully playlist-delete 5All TouchTunes commands are prefixed with tt-.
# Log in (--save persists credentials for auto-login)
audiobully tt-login --email user@example.com --password secret --save
# Session & checkin status
audiobully tt-status
# Log out
audiobully tt-logout# Find nearby venues
audiobully tt-venues --lat 51.5 --lng -0.1
# Get venue details (device ID, availability)
audiobully tt-venue 887302
# Check in to a venue
audiobully tt-checkin 887302# Search songs & artists
audiobully tt-search "oasis"
audiobully tt-search "oasis" --limit 10 --offset 20
# Browse an artist's songs
audiobully tt-artist 1322 --limit 25
# Queue a song
audiobully tt-play 70075418
# Queue as Play Next (costs extra credits, skips ahead in the queue)
audiobully tt-play 70075418 --next# Show config (passwords redacted)
audiobully config- Success: JSON to stdout, exit code 0
- Error:
{"error": "..."}to stderr, exit code 1
Parse output with jq:
audiobully search "test" | jq '.songs[].songTitle'
audiobully tt-search "test" | jq '.songs[].songTitle'