Streaming clients live in Electron and eat half a gig of RAM to play a song. The TUI side is fragmented: ncspot does Spotify, ncmpcpp does local, rmpc does MPD, every internet-radio tool is its own thing. Nothing unifies them, and nothing renders album art inline in the list — you scroll a blob of text and pretend it's a library. I wanted one keyboard-driven app where local FLAC, Spotify, SomaFM, YouTube and internet radio share a single queue, a single search, and a single library tree, with real album covers next to every row using the Kitty graphics protocol.
Demo
Terminal previewOverview
A terminal-native music library aggregator that unifies local files via MPD, Spotify, YouTube, SomaFM, and internet radio into a single queue with inline album art.
Terminal-native music library aggregator (local, Spotify, YouTube, SomaFM, radio) with inline album-art thumbs.
From the maintainer
Run "fuga", hit "/" for global search, type an artist name. Results come back grouped by source — local matches from your MPD library, Spotify tracks/albums/artists, SomaFM channels. Press Enter on any row to play; press "a" to queue. Switch between sources in the same session without losing your queue. Jump to the Now Playing tab to see the cover full-size, or stay on Library and notice every row has its real thumbnail inline.
Source-plugin architecture behind one "MusicSource" trait — local (MPD), Spotify (embedded librespot + Web API), SomaFM, YouTube, internet radio all implement the same five methods, so the UI never branches on source. One unified queue owns playback dispatch and stops the previous backend before the next starts (no double audio across source boundaries). Inline album art via Kitty Unicode placeholders, fetched scroll-aware with a bounded-concurrency LRU cache, so 100-row playlists don't hammer the Spotify CDN. Octant-block fallback for non-Kitty terminals. No daemon, no web UI, no plugin system — single foreground Rust binary, Cargo only.
v0.2.0 just shipped (mercury-paged playlists, source-themed selection, mono preset). Currently Linux and macOS only. Next: BSD support, then Windows 11 native build (halfblocks thumbnails only — Windows Terminal has no Kitty graphics).
Latest Release
Local library: dedupe album tracks when the same song exists as two files on disk; Directories root lists files at every level.
Now playing: the whole now-playing row (border, progress, volume) follows the color of the playing source, not the active tab.
Navigation: arrow-key nav (↑↓ move, ←/→ back/descend, PgUp/PgDn) alongside vim keys.
Spotify: force-refresh (r) reloads the current view bypassing cache; a background poller auto-refreshes the open Liked/playlist view when it changes externally.
UI: expanded-art overlay waits for the image to decode; dim/secondary text is readable on dark terminals.
Discussions