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 | MusicTUI | Apple-Music-CLI-Player | apple-music-tui (Rust) | apple-music-tui (npm) | lazyAppleMusic | applemusic-cli |
|---|---|---|---|---|---|---|
| Interface | Tabbed TUI + CLI + Claude Code skill | CLI + now-playing widget | TUI | TUI | TUI | CLI only |
| Backend | Native Music.app (AppleScript + Apple Music API) | Native Music.app (AppleScript) | Native Music.app (JXA) | Requires Cider running as backend player | Native Music.app | Native Music.app (AppleScript) |
| Playback / transport | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Multi-room AirPlay with per-speaker volume | ✓ verified against live network sessions, self-healing | toggle 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 queues | list by artist/album/playlist/genre | — | — | playlists only | local tracks only |
| Catalog search (full Apple Music) | ✓ catalog + your library, numbered replayable results | local library | ✓ | ✓ | — | local only |
| Playlist create / edit / share | ✓ incl. iMessage & email share, temp playlists | play only | — | search/play | browse/play | browse/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 suite | 485 tests, run in CI | — | not stated | not stated | not stated | — |
| Language | Swift | Shell + AppleScript | Rust | TypeScript | Go | TypeScript |
| Extra requirements | Swift 5.9+ to build; Apple Developer account only for search/library/discovery | Viu, fzf | Rust 1.70+ | Cider (paid app), Node | Go toolchain | Node |
Feature rows come from each README as of July 2026. Star counts move; check the repos.
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.
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.
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.
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.
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.
The homepage has an 80-second demo of the TUI: playlists, speakers, library, and an album playing as its own queue.
View on GitHub ↗