Skip to content
LargeModGamesPublic

About

A fast, standalone terminal music player in Rust: native Spotify streaming plus local, Subsonic, radio, Qobuz and Youtube sources

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1.7k stars

Watchers

37 watching

Forks

Latest commit

Β 

History

2,916 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

spotatui logo
spotatui

A fast music player for the terminal and the desktop, written in Rust.
Spotify through its own built-in client, plus local files, Subsonic/Navidrome, internet radio, YouTube and Qobuz, and Apple Music on macOS.

Install Β· Docs Β· Desktop app Β· Contributing Β· Discord

Crates.io Discord Songs played using spotatui spotatui Contributors

Demo

Table of Contents

About

spotatui is a music player for the terminal, with a desktop app in preview. Spotify is optional: it is one of seven sources.

  • Synced lyrics, and a real-time audio visualizer.
  • A play queue that mixes tracks from different sources.
  • Playlist sync: mirror one playlist onto Spotify, Qobuz, Subsonic or YouTube.
  • Lua plugins for commands, keys, popups and themes.
  • An AI DJ inside the app, or your coding agent as the DJ over MCP.
  • A local listening history with stats and a shareable recap.
  • A CLI for playback, search and playlists.

Spotify needs Premium. spotatui logs in with its own built-in client, so you need no developer app and no client ID.

spotatui started as a fork of spotify-tui and has since grown its own player, sources and desktop app.

Installation

Spotify is optional: every other source works without an account.

System Command
macOS, Linux, WSL curl -fsSL https://spotatui.com/install.sh | bash
Windows irm https://spotatui.com/install.ps1 | iex or winget install spotatui
Arch Linux yay -S spotatui-bin
With Rust cargo install --locked spotatui

Homebrew, Nix, Void, .deb packages and building from source are in the installation guide.

  • Desktop app: download the installer for your system from the latest release. See Desktop app.
  • Features per build: the prebuilt terminal binaries include every source, the MCP server and the AI DJ. cargo install builds Spotify only unless you add the features, and the Nix flake builds Spotify only.
  • Updates: the terminal app updates itself. If a package manager installed it, set behavior.disable_auto_update: true. See Updating.

Quickstart

Run spotatui. The first launch asks which sources you want. Pick Spotify to log in: spotatui shows a code and opens Spotify's pairing page, where you confirm it.

Then:

  • ? lists every key.
  • / searches. Choose the Songs panel with the arrow keys, press Enter to go into it, and Enter again to play a track.
  • d switches the source and the device.
  • z queues a track, and Shift+Q opens the queue.
  • spotatui --help shows the CLI.

Sources

Source You need
Spotify A Premium account
Local Files A music folder
Subsonic / Navidrome A server account
Internet Radio Nothing (30k+ stations from radio-browser.info)
YouTube yt-dlp on your PATH
Qobuz A paid Qobuz account
Apple Music macOS and the Music app

Local Files, Subsonic, Internet Radio, YouTube and Qobuz play through spotatui's own audio engine. Apple Music plays in the Music app, and spotatui is its remote. The setup of each source is in Configuration.

Spotify plays in spotatui itself, on any Spotify Connect device, or on Cast and Connect speakers on your network. See Where Spotify plays.

Learn more

You want to Read
Install another way, or build from source Installation
Change settings, keys or the theme Configuration, Keybindings, Themes
Control spotatui from your shell CLI
Write or install a Lua plugin PLUGINS.md, Scripting API
Let an AI pick the music AI DJ, MCP setup
Report a bug New issue, with a spotatui --debug log
Everything else All docs

Contributing

spotatui is built by a small team and a growing group of contributors, and you do not need to write code to help. Start with CONTRIBUTING.md, or pick a good first issue.

Native playback and Spotify Connect run on our librespot fork, spotatui-librespot. It is part of the project: a merged PR there counts as a spotatui contribution. See Contributing to the librespot fork.

Song History

Song History

Star History

Star History Chart

Maintainers

Originally forked from spotify-tui by Alexander Keliris. The spotify-tui contributors and the libraries spotatui uses are in CREDITS.md.

Code signing policy

Free code signing provided by SignPath.io, certificate by SignPath Foundation.

The Windows release files are built from this repository by the release workflow on GitHub-hosted runners. Each signing request is approved by hand.

Privacy: see the privacy policy for the data spotatui sends and how to turn each part off.

spotatui Contributors

Everyone who helped, with code or without. To get on this list, see Recognition.

LargeModGames
LargeModGames

πŸ’» πŸ“– 🚧 πŸ€” πŸš‡ ⚠️
shilicioo
shilicioo

πŸ’» 🚧
2570165831
2570165831

πŸ’» 🚧
Oud
Oud

πŸ’» 🚧
MysteriousWolf
MysteriousWolf

πŸ’»
rawcode1337
rawcode1337

πŸ’» πŸ›
copeison
copeison

πŸ“¦
jacklorusso
jacklorusso

πŸ“–
H41L33
H41L33

πŸ“–
LordMZTE
LordMZTE

πŸ’» πŸ“¦
Sebastian Sarco
Sebastian Sarco

πŸ’»
Sergio Tabernero HernΓ‘ndez
Sergio Tabernero HernΓ‘ndez

πŸ’» πŸ“¦
David Novakovic
David Novakovic

πŸ’»
Paul
Paul

🎨 πŸ’»
Arun Felix
Arun Felix

πŸ’» πŸ›
MaySeikatsu
MaySeikatsu

πŸ’» πŸ“– πŸ“¦
Lorenzo Bodini
Lorenzo Bodini

πŸ’» 🎨
Vi1i Petal
Vi1i Petal

πŸ’» πŸ›
Will Sturgeon
Will Sturgeon

πŸ’» πŸ›
wfinken
wfinken

πŸ’» πŸ›
Jacob
Jacob

πŸ“¦
Dominick Lee
Dominick Lee

πŸ’»
Higor Prado
Higor Prado

πŸ’»
Vitali Kaplich
Vitali Kaplich

πŸ“–
knth
knth

πŸ’»
Lorelei Noble
Lorelei Noble

πŸ’»
Ben Allen
Ben Allen

πŸ’»
Thomas Allan
Thomas Allan

πŸ’»
Pratyoosh Prakash
Pratyoosh Prakash

πŸ’» πŸ›
Tahmid Ahmed
Tahmid Ahmed

πŸ’»
Ritze
Ritze

πŸ’» πŸ›
Hansen
Hansen

πŸ“–
Yusuke Hayashi
Yusuke Hayashi

πŸ’» πŸ“–
Felix
Felix

πŸ’»
Dino Leung
Dino Leung

πŸ“¦
SzabΓ³ IstvΓ‘n
SzabΓ³ IstvΓ‘n

πŸ“–
Alessandro Zanni
Alessandro Zanni

πŸ’»
nohint404
nohint404

πŸ’»
TongTong0828
TongTong0828

πŸ’»
Hi-1mYara
Hi-1mYara

πŸ’» πŸ“–
Yvoo
Yvoo

πŸ’»
Maurice Schmicking
Maurice Schmicking

πŸ’»
Tayfur YΔ±ldΔ±z
Tayfur YΔ±ldΔ±z

πŸ’»
Vladimir Babin
Vladimir Babin

πŸ’»
Kratos
Kratos

πŸ’»
niukanen1
niukanen1

πŸ’»
Trevor Satori
Trevor Satori

πŸ’» πŸ›
Y.B.
Y.B.

πŸ’»
Ufuk Emre YΓΌcetΓΌrk
Ufuk Emre YΓΌcetΓΌrk

πŸ’»
WaterWhisperer
WaterWhisperer

πŸ“–
Marc Bauer
Marc Bauer

πŸ’» πŸ’΅
RohithPariki
RohithPariki

πŸ’»
Muaaz Bhyat
Muaaz Bhyat

πŸ’»
점[dot]
점[dot]

πŸ’»
Samuel
Samuel

πŸ“–
TastyHeadphones
TastyHeadphones

πŸ“–
Michael
Michael

πŸ’»
Battlelamb
Battlelamb

πŸ“– πŸ’»
markus
markus

πŸ“–
Drying
Drying

πŸ“–
Gaurav Vijay Jadhav
Gaurav Vijay Jadhav

πŸ’»
Anand B
Anand B

πŸ’»
AAA
AAA

πŸ“– πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

About

A fast, standalone terminal music player in Rust: native Spotify streaming plus local, Subsonic, radio, Qobuz and Youtube sources

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1.7k stars

Watchers

37 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages