How Radio Stations and Favorites Work in cliamp

Updated

cliamp treats internet radio as a first-class source: you can browse roughly 58,000 stations by country or genre, press f to favorite the highlighted station, and your favorites persist locally by station URL and name — including region details — across restarts. On Linux and macOS, favorite changes are also shared between running cliamp instances through a file lock, so two terminals won't overwrite each other's edits.

Browsing and playing radio

Radio is one of the providers cliamp ships with, alongside streaming services, self-hosted libraries, local files, and podcasts. The site's own example shows the direct route:

cliamp --provider radio

You can also pass a station playlist URL directly:

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

Inside the app, the Catalog is where you browse stations by country or genre, and search results are another place stations appear. Once you pick a station and press play, it joins the same playback pipeline as everything else — playlist, 10-band EQ, visualizers, and synced lyrics — so radio isn't a separate mode with its own controls.

Favoriting a station

The action is a single key: press f while a station is selected in the Catalog, in search results, or in the playback playlist after browsing countries or genres. The page evidence describes this as "radio favorites follow the station," which matters for a live stream: what gets saved is the station itself, not whatever song happens to be playing at that moment.

A few behaviors worth knowing before you rely on it:

  • Saved by URL and name. Favorites live locally under Radio → Favorites, keyed by the station URL and labeled with the station name. Region and other station details are retained after a restart.
  • M3U/PLS wrappers keep the original station URL after playback resolution, so favoriting a wrapped stream doesn't save a temporary resolved link.
  • Toggling is non-destructive. Turning a favorite on or off preserves your selected station and any catalog pages you've already loaded, including while a page is still loading.
  • Favoriting doesn't trigger extra work. It won't fetch more catalog stations or interrupt a station load in progress.

The star badge and what it counts

The header's star badge counts all starred rows, including rows currently offscreen — so the number reflects your full set of favorites, not just what's visible in the current view. It uses the same meaning as the row markers next to individual stations.

One layout detail: radio favorites don't reserve a star column in playlists that contain no favorited stations, so a playlist with no favorites won't show an empty column.

Multiple instances and sync behavior

On Linux and macOS, favorite mutations preserve other cliamp instances' changes through a shared file lock. In practice, if you have cliamp open in two terminals and star a station in one, the other instance's write won't clobber it.

If you're scripting against cliamp rather than using the TUI, note the documented constraint: IPC clients use the stable URL-based favorite IDs returned by provider.playlists; positional favorite IDs are not supported. Build your integration around the URL ID, not the row position.

Practical checklist

Task How
Start in radio mode cliamp --provider radio
Play a specific station file cliamp <station .pls/.m3u URL>
Browse stations Catalog, by country or genre
Favorite / unfavorite Press f on the selected station
Find saved favorites Radio → Favorites
Confirm total favorites Star badge in the header

If a station won't play, the likely gap is a missing optional dependency rather than a favorites problem: the install notes list ffmpeg for AAC, ALAC, Opus, and WMA, and yt-dlp for sources like YouTube, SoundCloud, Mixcloud, Bandcamp, Bilibili, and NetEase. Install cliamp itself with the one-line script (curl -fsSL https://cliamp.stream/install.sh | sh), Homebrew, AUR, Nix, or go install; Windows builds are in Releases.