~/audio/cliamp

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.

MIT licensedGo 1.26Linux / macOS / Windows
$ cliamp --provider radio tty1
C L I A M P[Playlist]
Lofi Hip Hop Radio
00:00 / 00:00 ■ Stopped (click to play) ◌ Buffering... ● Streaming

            
━━━━━━━━━━━━━━━━━━━━ STREAMING ━━━━━━━━━━━━━━━━━━━━
EQ [Rock] +5 +4 +2 -1 -2 +2 +4 +5 +5 +5 VOL +0dB
SRC [Radio] 1/9
▸─ Playlist ── [Shuffle] [Repeat: Off] [1/12] ──
 1. Lofi Hip Hop Radio
 2. EDM Pulse
 3. Synthwave Nights
 4. Omarchy Radio
 5. NCS Radio
 6. NCS House
 7. NCS Dubstep
 8. NCS Drum & Bass
 9. NCS Trap
10. NCS Phonk
11. NCS Pop
12. NCS Chill
↑↓ Scroll Enter Play Spc ▶❚❚ f Fav Tab Focus ? Keys
SPD [1x] ↓ 0.7 MB  32 KB/s

Select a station to play it live in this browser.

$ cliamp https://radio.cliamp.stream/lofi/stream.pls
01

install.sh

Build from source. See the README. Windows builds are in Releases. If HOME is not set, the config is in %APPDATA%\cliamp.
Next: configure providers

Run setup

Use the interactive TUI to configure Navidrome, Lyrion, Plex, Jellyfin, Emby, Spotify, Qobuz, Tidal, Mixcloud, NetEase, and YouTube Music. The TUI opens each provider credential page and writes the required block to the config file. The TUI tests supported server connections during setup. Mixcloud browser-session or OAuth credentials are optional and are tested when you use them.

02

demo.mp4

03

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.

OAuth · cached
Spotify
Stream your Premium library. Set your developer 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.
OAuth · lossless
Qobuz
Enable Qobuz: set [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.
OAuth · lossless
Tidal
Enable Tidal: set [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.
yt-dlp
YouTube
Search videos with Ctrl+F. Then play, append, or queue a result.
Cookies · OAuth
YT Music
Browse playlists and Liked Music with browser cookies. Browser cookies need no OAuth setup. You can use custom Google Cloud credentials instead. Set cookies_from in your config.
Media server
Plex
Browse albums. Stream from your Plex Media Server.
Media server
Jellyfin
Open with an alphabetical artist → album → track hierarchy. Use buffered gapless playback.
Media server
Emby
Browse your Emby music library. Use an API key or username and password.
Subsonic API
Navidrome
Browse your self-hosted library. View synced lyrics.
Media server
Lyrion
Browse a Lyrion Music Server (LMS) library: playlists, artists, albums, and search.
Media server
Audiobookshelf
Listen to audiobooks and podcasts from your server. Browse authors and hosts, books and shows. Sync listening position and resume.
Provider · yt-dlp
SoundCloud
Enable SoundCloud: set [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.
Public API · yt-dlp
Mixcloud
Enable Mixcloud: set [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.
Provider · yt-dlp
NetEase
Run 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.
yt-dlp
Bandcamp
Paste a Bandcamp URL to play it.
yt-dlp
Bilibili
Play audio from Bilibili videos with yt-dlp.
30k+ stations
Radio
Browse stations by country, tag, or name. View ICY metadata.
RSS feeds
Podcasts
Give a podcast RSS URL to listen in the terminal.
Local
Files
Play MP3, FLAC, OGG, Opus, WAV, AAC, ALAC, and WMA files. The app reads ID3 tags.
NetEase Cloud Music

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.

04

features

10-Band Equalizer

Use parametric EQ presets. The persistent Custom curve remains after preset changes and restarts.

Themes & Visualizers

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.

Playlists

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.

Recently Played

The app records listening history automatically. Browse it as a virtual playlist or run cliamp history.

HTTP Streaming

Play URLs, internet radio, remote M3U playlists, and HLS (.m3u8) streams. The app uses decoded-audio jitter buffering for live radio.

Synced Lyrics

Use embedded local lyrics first. The app uses LRCLIB/NetEase if needed. It auto-scrolls timestamped lyrics.

Gapless Playback

The app preloads the next track for seamless transitions.

MPRIS / Media Keys

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.

Audio Quality

Set the sample rate and buffering time (up to 5 seconds). Use resampling.

Live Radio Metadata

View ICY/Shoutcast metadata for the current internet-radio song. Get API-based now-playing data for FIP and NTS.

Radio by Location

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.

Embedded Tag Reading

Read ID3v2, Vorbis comments, and MP4 atoms: artist, album, genre, year, lyrics, and cover art.

CLI Flags

Use flags to override volume, shuffle, repeat, theme, EQ, and sample rate for a session. Persisted boolean options support matching --no-* flags.

Shell Completion

Generate completion scripts for Bash, Zsh, Fish, and PowerShell.

Diagnostic Logging

Write logs to ~/.config/cliamp/cliamp.log. Set log_level in the config or --log-level on the CLI: debug, info, warn, error.

Self-Update

Run cliamp upgrade for stable releases. Run cliamp upgrade --prerelease to test beta releases.

$
Env-Interpolated Secrets

Read any string in config.toml from the environment with ${VAR} or $VAR. Keep passwords and tokens out of the file.

cliamp:// Links

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.

Remote Control

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.

Lua Plugins

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.

Save to Disk

Press Ctrl+S to save the current track to ~/Music.

Responsive TUI

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.

Undo Queue Edits

Press Ctrl+Z to restore the last playlist removal or queue clear.

Consistent Keyboard Input

Use cursor movement, paste, word deletion, and clear-line editing in search, URL, playlist-name, and jump prompts.

05

community-plugins

Last.fm scrobbling
@tetsuo76
Stereo LED matrix visualizer
@AlexZeitler
Vacuum-tube amplifier visualizer
@8bit64k
Concentric-ring spectrum visualizer
@8bit64k
gpodder.net subscription, progress, and download sync
@sollymay
Floating cliamp for the herdr multiplexer. It keeps playing when hidden and has now-playing and transport key bindings.
@coryshaw1
06

radio.stats

LIVE
-
listening now
-
all-time high
-
total sessions
-
listening hours
Daily activity
Listeners by country
Top Countries
Listeners by country live radio telemetry