A lightweight command line music player for Navidrome, written in Go.
I found that Feishin client is very slow on MacOS. To be honest, we don't need a GUI for listening to music. So I built this app to play Navidrome music from terminal. Hope you guys like it.
- 🚀 Fast and lightweight
- 🎨 Terminal-based UI with colors and progress display
- ⏯ Play/pause/skip controls with real-time progress
- 🔍 Integrated search functionality
- 🔊 Volume control
- 📊 Song information display (artist, album, bitrate, format, etc.)
- ⌨️ Intuitive keyboard shortcuts
- 📝 Pagination support (multiple pages of songs)
- 🛠 Written in pure Go
brew install mpv# Add the tap
brew tap yhkl-dev/navicli
# Install navicli
brew install navicli
# Verify installation
navicli --helpTo update NaviCLI in the future:
brew upgrade navicliTo uninstall:
brew uninstall navicli
brew untap yhkl-dev/navicliDownload the latest pre-built binary from Releases:
# For Apple Silicon (M1/M2/M3):
curl -L https://github.com/yhkl-dev/NaviCLI/releases/latest/download/release.tar.gz -o release.tar.gz
tar xzf release.tar.gz
chmod +x navicli-darwin-arm64
sudo mv navicli-darwin-arm64 /usr/local/bin/navicligit clone https://github.com/yhkl-dev/NaviCLI.git
cd NaviCLI
go build -o navicli .
sudo mv navicli /usr/local/bin/sudo apt install libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev libmpv-dev mpv
git clone https://github.com/yhkl-dev/NaviCLI.git
cd NaviCLI
go build -o navicli .
sudo mv navicli /usr/local/bin/Create a config file at ~/.config/config.toml:
[server]
url = "https://your-navidrome-server.com"
username = "your-username"
password = "your-password"navicliPlayback Controls:
Space: Play/PausenorN: Next trackporP: Previous track→: Next track (alternative)←: Previous track (alternative)+or=: Volume up (+5%)-or_: Volume down (-5%)
Navigation:
↑/↓: Select song in list<or>: Previous/Next page[or]: Previous/Next page (alternative)PgUp/PgDn: Previous/Next page (alternative)/: Open search?: Show help panelqorQ: Show playback queueESC: Close search/modal or quit (when not in search mode)Ctrl+C: Force quit
- Press
/to open the search box at the top - Type keywords to search
- Press
Enterto execute search - Results display in the main list
- Use
↑↓keys to select andEnterto play - Press
ESCto clear search and restore original list - Press
Tabor↓to switch focus from search box to list
When playing a song, you can see:
- Song title and play status (playing/paused)
- Technical info: Duration, Format, File size
- Quality info: Bitrate, Sample rate
- Metadata: Artist, Album, Track number
- Real-time progress bar with current time and total duration
- Current volume level
# Build
go build -o navicli .
# Run tests
go test ./...- Publish to Homebrew
- Add lyrics support
- Add playlist support
- Add favorites/bookmarking
- Add shuffle/repeat modes
- Cross-platform builds (Linux/Windows)
PRs are welcome! Please open an issue first to discuss what you'd like to change.

