Keyboard-first TUI
Player, Search, Queue, Devices, Library, Lyrics, and Help screens with responsive layouts and direct shortcuts.
spoti interactive
Local-first · open source
A fast, keyboard-driven TUI and CLI for controlling Spotify through Spotify Connect. Search, play, queue, switch devices, browse your library, and follow synced lyrics without leaving the terminal.
npm install --global @bzenky/spoti
Requires Node.js 22+ and Spotify Premium for playback controls.
One tool, two modes
Open the interactive interface for exploration, or use focused commands in scripts and daily workflows.
Player, Search, Queue, Devices, Library, Lyrics, and Help screens with responsive layouts and direct shortcuts.
spoti interactive
Control playback, inspect state, search Spotify, transfer devices, and manage your library one command at a time.
spoti now --watch
Follow the current line in the TUI or fetch lyrics for the playing track and search results from LRCLIB.
spoti lyrics
CLI examples
Ordinary multi-word searches do not need quotes. Add --first when you want deterministic, non-interactive selection.
$ spoti play Fear of the Dark
$ spoti pause
$ spoti seek +30
$ spoti volume 50
$ spoti queue "Faint" --first
$ spoti device "My Computer"
$ spoti lyrics Numb Linkin Park
$ spoti liked --limit 10
[1] Player [y] Lyrics [/] Search [q] Queue
Current track — Example Artist
A quiet line drifts into view
▶ The next beat meets the cursor
And the screen keeps time with you
Lyrics from LRCLIB: https://lrclib.net
[↑/↓] Scroll · [f] Following · [Esc] Back · [Ctrl+X] Exit
Setup
spoti uses OAuth Authorization Code with PKCE. Your public client ID and credentials stay in your local configuration; no client secret is needed or accepted.
Open Spotify Developer DashboardIn the Spotify Developer Dashboard, create an application and add this exact redirect URI:
http://127.0.0.1:43821/callbackUse 127.0.0.1 exactly—not localhost and not a wildcard.
npm install --global @bzenky/spotispoti setup
spoti loginAuthentication opens Spotify’s authorization page in your browser.
spoti interactiveGood to know
spoti controls an existing Spotify client or Connect device. It does not stream or download audio, so an available playback device is required.
Spotify Premium is required for playback-control commands, and a development-mode app’s owner must have Premium. Development mode has a small user allowlist and quota may be shared across apps owned by one developer account; each user should create their own app. Longer quota waits exit with a retry time.
Spotify does not provide lyrics through its Web API. Only when lyrics are requested, spoti sends the track title, artists, album, and duration to the community-run LRCLIB service. Lyrics are loaded live and not persisted locally.
Lyrics are shown with LRCLIB attribution for personal, immediate use. LRCLIB’s software license does not grant redistribution rights to copyrighted lyrics; availability and synchronization depend on community data.
Ready when you are