♫ music — compare

Apple Music in the terminal: how the projects actually compare

Most terminal projects for Apple Music are transport wrappers. Play, pause, skip, volume, sometimes a search. That's useful, and some do it with real charm. MusicTUI makes a different bet: the terminal as a full Apple Music client. A tabbed TUI, multi-room AirPlay that verifies its routes against actual network sessions, library browsing with real cover art, playlist management, an equalizer, and a natural-language layer for Claude Code.

Claims about the other projects come from their own READMEs as of July 2026, linked so you can check. If something is out of date, open an issue and I'll update it.

♫ Feature by feature

Feature MusicTUI Apple-Music-CLI-Player apple-music-tui (Rust) apple-music-tui (npm) lazyAppleMusic applemusic-cli
InterfaceTabbed TUI + CLI + Claude Code skillCLI + now-playing widgetTUITUITUICLI only
BackendNative Music.app (AppleScript + Apple Music API)Native Music.app (AppleScript)Native Music.app (JXA)Requires Cider running as backend playerNative Music.appNative Music.app (AppleScript)
Playback / transport
Multi-room AirPlay with per-speaker volume✓ verified against live network sessions, self-healingtoggle snippet for one output
Album art in terminal✓ Now, Library, and Playlists panes (true pixels on Kitty/WezTerm/Ghostty/iTerm2; chafa fallback)✓ widget (Viu)✓ (iTerm2/Kitty/WezTerm graphics)not stated
Library browsing (artists / albums / songs)✓ with 12″/EP-vs-album filter and album-scoped queueslist by artist/album/playlist/genreplaylists onlylocal tracks only
Catalog search (full Apple Music)✓ catalog + your library, numbered replayable resultslocal librarylocal only
Playlist create / edit / share✓ incl. iMessage & email share, temp playlistsplay onlysearch/playbrowse/playbrowse/play
Discovery (similar, new releases, mixes, heavy rotation)radio stations
Equalizer✓ eight venue presets written into Music.app
Natural-language control (LLM)✓ Claude Code plugin, /music skill
Test suite485 tests, run in CInot statednot statednot stated
LanguageSwiftShell + AppleScriptRustTypeScriptGoTypeScript
Extra requirementsSwift 5.9+ to build; Apple Developer account only for search/library/discoveryViu, fzfRust 1.70+Cider (paid app), NodeGo toolchainNode

Feature rows come from each README as of July 2026. Star counts move; check the repos.

♫ The other projects

Apple-Music-CLI-Player: the incumbent

The most established project here (~170+ stars) and the lightest: a shell script you can read in one sitting, with a charming now-playing widget and fzf-driven fuzzy playback. If you want zero build steps and transport with taste, it's a fine choice. It doesn't try to be a client: no catalog search, no playlist management, one-output AirPlay via an optional snippet.

apple-music-tui (Rust): the vim-keys remote

A Rust remote controller with vim keys. Its artwork renders through the iTerm2/Kitty/WezTerm graphics protocols, same as MusicTUI since 3.6.0. Scope is playback, volume, progress, and search. Early days (no stars yet when I checked), and worth watching.

apple-music-tui (npm): the Cider route

A TypeScript TUI that drives Cider rather than Music.app, which means Cider must be installed and running as the actual player. Full transport, search, and radio stations; self-described as in active development with bugs and missing features. If you already live in Cider, this fits; if you want the native Music.app (and your AirPlay groups), it's a second app in the chain.

lazyAppleMusic and applemusic-cli: early sketches

A Go/Bubble Tea TUI with playlist browsing and a known-issues list, and a single-commit TypeScript CLI for transport and local search. Both are honest early-stage projects, not daily drivers yet.

♫ Where MusicTUI is behind

MusicTUI is macOS-only by design (it drives the real Music.app, which is the point, but the Cider-based TUI can reach further). And catalog search, playlist CRUD via API, and discovery need an Apple Developer account ($99/yr), because Apple gates its API that way; playback, the TUI, AirPlay routing, and library browsing all work without it.

See it run

The homepage has an 80-second demo of the TUI: playlists, speakers, library, and an album playing as its own queue.

View on GitHub ↗