Winamp for your shell.
Playlists, a 10-band EQ, visualizers, synced lyrics, remote control, and a Lua plugin system — streaming from Spotify, Qobuz, YouTube Music, Plex, Jellyfin, Emby, Navidrome, and 30,000+ radio stations.
Click a station above to tune in live — right here in your browser.
$ cliamp https://radio.cliamp.stream/lofi/stream.pls$ curl -fsSL …/install.sh | sh
COPIED
$ brew install bjarneo/cliamp/cliamp
COPIED
$ yay -S cliamp
COPIED
$ nix run github:bjarneo/cliamp
COPIED
$ go install github.com/bjarneo/cliamp@latest
COPIED
HOME is unset, config lives under %APPDATA%\cliamp.
Stream from everywhere. Every provider runs through the same playlist, EQ, visualizer, and lyrics pipeline — your config follows you across services. Run cliamp setup for an interactive wizard that walks you through Navidrome, Plex, Jellyfin, Emby, Audiobookshelf, Spotify, Qobuz, NetEase, and YouTube Music.
client_id for a private Web API quota; playback is authorized separately. Search with Ctrl+F; Development Mode paging is automatic. Pre-built Windows releases include Spotify support.[qobuz] enabled = true. Stream lossless FLAC up to 24-bit/192kHz from your subscription. Browse favorites & playlists, search with Ctrl+F. Sign in once via OAuth in your browser.cookies_from in your config.[soundcloud] enabled = true. Search with Ctrl+F, browse curated genre playlists, or add user for your profile. cookies_from unlocks Go+ tracks via your browser session.cliamp setup after signing in at music.163.com, then choose your browser. Browse liked songs, account playlists, saved playlists, and charts with browser-cookie playback.Sign in at music.163.com, then run cliamp setup. Choose NetEase Cloud Music, pick the browser you used, and the wizard validates the session before writing config.
[netease]
enabled = true
cookies_from = "chrome"
user_id = "your-account-user-id"
After setup, press M to open NetEase and Ctrl+F to search. Playback uses yt-dlp with the same browser cookie source.
Parametric EQ presets plus a persistent Custom curve that survives preset changes and restarts.
21 contrast-checked built-in themes and spectrum, waveform, particle, and true-stereo modes. Stereo provides dedicated L/R horizontal LED peak meters. Hot-swap with t / v.
TOML playlists with dynamic directory sources (--dir), M3U/M3U8/PLS import/export, duplicate-safe writes, and TUI/CLI sort tools.
Auto-recorded listening history. Browse it as a virtual playlist or run cliamp history from the shell.
Play from URLs, internet radio, remote M3U playlists, and HLS (.m3u8) live streams via ffmpeg.
Embedded local lyrics first, then LRCLIB/NetEase fallback. Auto-scrolling for timestamped lyrics.
Seamless transitions with preloaded next-track buffering.
Desktop integration. Hardware media keys, playerctl, and embedded local cover art.
Drop-in Quickshell now-playing card with a Winamp 2-style spectrum, tracking your active Omarchy theme. Setup.
Configurable sample rate (22kHz-192kHz), up to 5 seconds of buffering, and resampling.
ICY/Shoutcast metadata for the current song on internet radio, plus API-based now-playing for FIP and NTS.
ID3v2, Vorbis comments, MP4 atoms - artist, album, genre, year, lyrics, cover art.
Override volume, shuffle, repeat, theme, EQ, sample rate per-session.
Generate completion scripts for Bash, Zsh, Fish, and PowerShell.
File logs at ~/.config/cliamp/cliamp.log. Set log_level in config or --log-level on the CLI: debug, info, warn, error.
Run --upgrade to update to the latest release in-terminal.
Reference any string in config.toml from the environment with ${VAR} or $VAR. Keep passwords and tokens out of the file.
Control a running instance from another terminal via local-socket IPC. Run with --daemon for headless playback driven entirely by scripts or Waybar. Subscribe to plugin events on the same socket for a push NDJSON stream instead of polling.
Lua 5.1 sandboxed plugin system. Hook events, add visualizers, push data. Publish namespaced events with p:publish(); retained events replay to new subscribers, so local companion apps get current state the moment they connect. Values convert to JSON up to 64 levels deep, and cyclic references become null.
Press Ctrl+S to save the current track to ~/Music.
Full, compact, and minimal layouts keep playback usable in terminal splits and small SSH sessions.
Restore the last playlist removal or queue clear with Ctrl+Z.
Search, URLs, playlist names, and jump prompts support cursor movement, paste, word deletion, and clear-line editing.