cliamp
Winamp for the shell. No browser tab required.
Use playlists, a 10-band EQ, visualizers, synced lyrics, remote control, and Lua plugins. Stream from Spotify, Qobuz, Tidal, YouTube Music, Plex, Jellyfin, Emby, Navidrome, Lyrion, and about 58,000 radio stations.
Select a station to play it live in this browser.
$ cliamp https://radio.cliamp.stream/lofi/stream.plsinstall.sh
HOME is not set, the config is in %APPDATA%\cliamp.
demo.mp4
sources
Use all providers with the same playlist, EQ, visualizer, and lyrics pipeline. Your config works across services. Run cliamp setup to configure Navidrome, Lyrion, Plex, Jellyfin, Emby, Audiobookshelf, Spotify, Qobuz, Tidal, Mixcloud, NetEase, and YouTube Music.
client_id to use a private Web API quota. Authorize playback separately. Search with Ctrl+F. The app handles Development Mode paging. Pre-built Windows releases support Spotify.[qobuz] enabled = true. Stream lossless FLAC from your subscription, up to 24-bit/192kHz. Browse favorites and playlists. Search with Ctrl+F. Sign in once with OAuth in your browser.[tidal] enabled = true. Stream lossless FLAC at CD quality from your subscription. Browse favorite tracks, artists, albums, and your playlists. Favorite artists and albums open the hierarchical browser, also reachable with N. Search tracks and albums with Ctrl+F. Album results appear first and expand to the full track list. Sign in once by approving a link.tidal.com device code.cookies_from in your config.[soundcloud] enabled = true. Search with Ctrl+F, browse curated genre playlists, or add user for your profile. cookies_from lets you play Go+ tracks from your browser session.[mixcloud] enabled = true. Browse account Stream and Favorites, followed Creators, recent and popular shows, collections, and creator Uploads and Favorites. Search shows and discover live genres and tags. View locally favorited style charts, restricted-show warnings, and resume. Press Shift+X to open. Browser cookies support signed-in playback.cliamp setup after you sign in at music.163.com. Then select your browser. Browse liked songs, account playlists, saved playlists, and charts. Use browser cookies for playback.Browser session setup
Sign in at music.163.com. Then run cliamp setup. Select NetEase Cloud Music and the browser you used. The wizard checks the session before it writes the 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 and the same browser cookie source.
features
Use parametric EQ presets. The persistent Custom curve remains after preset changes and restarts.
Use 21 built-in themes with contrast checks. Select spectrum, mirrored spectrum, waveform, particle, and true-stereo modes. Wave, Scope, and Heartbeat run at 60 FPS. Use --visualizer-60fps for smoother animation in other modes. Stereo has separate L/R horizontal LED peak meters. Press t / v to change them.
Use TOML playlists and dynamic [[dir]] directory sources. In the playlist manager (D), add, remove, and turn recursive search on or off. Create, rename, delete, and fill playlists with folders or files in the manager (a/r/d). Use cross-playlist favorites (n). Import and export M3U/M3U8/PLS files. The app prevents duplicate writes and sorts in the TUI or CLI.
The app records listening history automatically. Browse it as a virtual playlist or run cliamp history.
Play URLs, internet radio, remote M3U playlists, and HLS (.m3u8) streams. The app uses decoded-audio jitter buffering for live radio.
Use embedded local lyrics first. The app uses LRCLIB/NetEase if needed. It auto-scrolls timestamped lyrics.
The app preloads the next track for seamless transitions.
The app integrates with the desktop. Use hardware media keys on Linux (MPRIS, playerctl), macOS (Control Centre, Lock Screen), and Windows. The app shows embedded local cover art.
Set the sample rate and buffering time (up to 5 seconds). Use resampling.
View ICY/Shoutcast metadata for the current internet-radio song. Get API-based now-playing data for FIP and NTS.
Cut 58,000 stations down by where they broadcast from. Press N to browse 241 countries grouped by region, and f to pin the ones you listen to; Enter on a country loads its stations as a playlist. cliamp never works out where you are on its own: a "Use my location" row offers it, and only if you accept does it read your country from the system timezone. Never a geo-IP lookup. Radio guide.
Read ID3v2, Vorbis comments, and MP4 atoms: artist, album, genre, year, lyrics, and cover art.
Use flags to override volume, shuffle, repeat, theme, EQ, and sample rate for a session. Persisted boolean options support matching --no-* flags.
Generate completion scripts for Bash, Zsh, Fish, and PowerShell.
Write logs to ~/.config/cliamp/cliamp.log. Set log_level in the config or --log-level on the CLI: debug, info, warn, error.
Run cliamp upgrade for stable releases. Run cliamp upgrade --prerelease to test beta releases.
Read any string in config.toml from the environment with ${VAR} or $VAR. Keep passwords and tokens out of the file.
Start a song from a browser, a chat message, or a script. Open cliamp://play?url=... or cliamp://play?provider=navidrome&album=... and it plays. Links reach a running instance over IPC, or start the player. The installer registers the scheme on Linux; only http and https targets are accepted, and cliamp protocol unregister removes it. URL scheme guide.
Control a running instance or build a GUI with V2-only local-socket IPC. It provides complete state snapshots, jobs, live playlist and provider controls, and push NDJSON events. Run with --daemon for headless playback from scripts or a desktop widget. Upgrade guide.
Use sandboxed Lua 5.1 plugins. Handle events, add visualizers, and send data. Publish namespaced events with p:publish(). Retained events go to new subscribers, so local companion apps get the current state when they connect. Values convert to JSON up to 64 levels deep. Cyclic references become null.
Press Ctrl+S to save the current track to ~/Music.
Use full, compact, minimal, and simplified layouts in terminal splits and small SSH sessions. Simplified mode shows artist and title, plus a time and seek-progress strip. It has no visualizer or playlist. Hide the key-binding hint bar with --no-help-bar, restore it with --help-bar, or toggle it with Ctrl+G.
Press Ctrl+Z to restore the last playlist removal or queue clear.
Use cursor movement, paste, word deletion, and clear-line editing in search, URL, playlist-name, and jump prompts.