Overview
spotatui is a standalone music player written in Rust for terminal use, with a desktop application currently in preview. Spotify is optional, and the player can combine music from several services and local collections in one queue.
Beyond playback, spotatui includes an AI DJ inside the application and can let a coding agent act as DJ through MCP. It also provides a command-line interface for playback, search, and playlist management.
Key Features
- Plays music from Spotify, local files, Subsonic or Navidrome, internet radio, YouTube, and Qobuz, with Apple Music support on macOS.
- Mixes tracks from different sources in a shared play queue.
- Displays synchronized lyrics and a real-time audio visualizer.
- Mirrors a playlist onto Spotify, Qobuz, Subsonic, or YouTube through playlist sync.
- Supports Lua plugins for commands, key bindings, popups, and themes.
- Keeps local listening history with statistics and a shareable recap.
Getting Started
On first launch, spotatui asks which music sources to enable. Selecting Spotify begins a pairing flow that displays a code and opens Spotify's confirmation page; Spotify playback requires a Premium account, while the other sources can work without a Spotify account.
The terminal interface provides keyboard controls for search, source and device switching, queue management, and track playback. A built-in help view lists all available keys, while the command-line help describes CLI operations.
Installation and Builds
spotatui is available for macOS, Linux, WSL, Windows, and Arch Linux, and it can also be installed with Rust tooling. Homebrew, Nix, Void, Debian packages, and source builds are documented as additional options, while the desktop version is distributed through release installers.
Prebuilt terminal binaries include every music source, the MCP server, and the AI DJ. By contrast, the default Rust package installation and Nix flake build include Spotify only unless additional features are enabled. The terminal application can update itself, with an option to disable automatic updates when installation is managed by a package manager.