musikcube
Self-hosted media & streaming tool that provides streame audio server with Linux/macOS/Windows/Android clients.
A terminal-based, self-hosted music player and streaming server, honestly reviewed. Not for everyone — but for the right person, it’s irreplaceable.
TL;DR
- What it is: A cross-platform, terminal-based music player, library manager, and streaming audio server written in C++. Runs natively on Windows, macOS, Linux, and Raspberry Pi [README].
- Who it’s for: Audiophiles and home lab enthusiasts who own their music library and want a distraction-free, resource-light player that doubles as a personal streaming server. Not for people who want a Spotify replacement with a pretty GUI [1].
- Cost savings: Spotify costs $10.99/mo minimum. musikcube costs $0 forever. If you own your music files, you spend nothing [1].
- Key strength: Genuinely lightweight — built in C++, runs fine on a Raspberry Pi, handles libraries of 250,000+ tracks without complaining. The streaming server turns your machine into a personal audio backend for Android via the musikdroid app [README][1].
- Key weakness: No iOS client. The built-in streaming server should not be exposed to the internet without a reverse proxy — and even then, proceed carefully. Plain text password storage in the config file is a real concern [README].
What is musikcube
musikcube is a terminal-based music player, audio engine, metadata indexer, and streaming server — all in one binary, written in C++. It runs in your terminal using a text-based UI with keyboard navigation, and it compiles and runs on Windows, macOS, and Linux. It also runs well on Raspberry Pi, which is the practical reason many people end up with it [README].
The project is written by Casey Langen and released under the BSD-3-Clause license. As of this review it has 4,718 GitHub stars. The website is minimal to the point of being almost blank — the real documentation lives on the GitHub wiki.
musikcube ships as three interconnected pieces. First, the terminal player itself with library management, playlists, and keyboard-driven navigation. Second, a built-in streaming server — a WebSocket service on port 7905 for metadata and an HTTP server on port 7906 for audio streaming. Third, musikdroid, a native Android app that connects to the server and acts as both a streaming client and remote control for whatever machine is running musikcube [README][1].
The GitHub description reads: “a cross-platform, terminal-based music player, audio engine, metadata indexer, and server in c++” — which is accurate and tells you immediately whether you’re in the right place [README].
One caveat worth front-loading: appmus.com [5] flags the project as potentially discontinued and shows “Windows only” as the platform — this is either outdated or refers to an older, unrelated Windows application that shared the same name. The GitHub repository at github.com/clangen/musikcube is actively maintained, cross-platform, and is the project this review covers.
Why people choose it
The XDA Developers review [1] gives the most personal account: the author was a Spotify user who owned a high-quality USB DAC/AMP setup and felt that Spotify’s audio delivery didn’t justify the hardware. musikcube entered the picture as a way to play a local FLAC library through the DAC without loading a full Electron app, without ads, without video previews, and without cache sprawl on a MacBook Air.
The practical reasons that appear in the sources:
It’s distraction-free by design. Spotify and similar apps have been slowly turning into content platforms — podcasts, videos, social feeds, algorithmic playlists. musikcube has a library list, a queue, and playback controls. That’s it. The terminal UI is not a limitation; for many users it’s the point [1].
It’s genuinely lightweight. C++ instead of Electron means a fraction of the memory and CPU overhead compared to Spotify Desktop, Plexamp, or even VLC in some configurations. On a Raspberry Pi with a DAC hat (IQaudIO DAC+, HiFiBerry DAC+), musikcube can output 24bit/192kHz audio comfortably while running on hardware that costs $50 [README].
It handles big libraries without breaking a sweat. The musikcore library is designed for collections of 250,000+ audio tracks. Tag indexing, fast search, and metadata management are first-class features — not afterthoughts bolted on when the project got too popular [README][5].
The streaming server makes it a home audio backend. This is the use case that pushes musikcube beyond a simple player. You run it on your home server or NAS, point musikdroid on your Android phone at it, and you have streaming playback from your personal library anywhere on your local network — or the internet, if you set up a reverse proxy [README][1].
It integrates with the scrobbling ecosystem. multi-scrobbler, a popular open-source scrobbling tool, lists musikcube as a supported source alongside Spotify, Plex, Jellyfin, and others [4]. If you use Last.fm or ListenBrainz to track your listening, musikcube fits cleanly into that stack.
LinuxLinks [3] compared it favorably to Siren (another terminal music player) and concluded: “Overall, it’s a long way short of musikcube” — which is damning with faint praise for Siren but a meaningful third-party endorsement for musikcube.
Features
Based on the GitHub README, the official website, and the XDA review:
Core player:
- Terminal UI with keyboard-driven navigation [README]
- Cross-platform: Windows, macOS, Linux, FreeBSD, OpenBSD, Raspberry Pi [README]
- Supports MP3, FLAC, and other formats via plugins [1]
- Gapless and crossfading playback [README]
- Play queue management with shuffle and repeat [README]
- Playlist CRUD — create, edit, delete playlists [README]
- Fast metadata search and library filtering [README][5]
- Supports libraries of 250,000+ tracks [README]
- Plugin architecture for audio formats, output devices, and services [README][1][5]
Audio quality:
- 24bit/192kHz output on Raspberry Pi with compatible DAC hardware [README]
- Plugin-based audio transcoding — useful for reducing bandwidth when streaming [1]
- USB DAC support (tested on macOS and Linux) [1]
Streaming server:
- WebSocket server on port 7905 for metadata [README]
- HTTP server on port 7906 for audio delivery [README]
- Supports optional transcoding for bandwidth-limited streaming [README]
- Full remote API documented for third-party client development [README]
- musikdroid Android client — streaming playback and remote control [README][1]
Library and metadata:
- SQLite-backed library database [merged profile]
- File scanning and tag indexing [README]
- Smart/dynamic playlists based on metadata rules [5]
- Last.fm scrobbling via multi-scrobbler integration [4]
What’s missing:
- No iOS client [1]
- No web UI for browser-based playback
- No native SSL/TLS — requires reverse proxy for secure remote access [README]
- No visual equalizer or waveform display (by design)
Pricing: streaming subscriptions vs self-hosted math
musikcube has no subscription tier, no cloud service, no freemium model. The software is BSD-3-Clause licensed and costs $0 [README].
The relevant cost comparison is not “SaaS vs self-hosted” — it’s “streaming subscriptions vs owning your music.”
Streaming service costs (2025 rates):
- Spotify Individual: $10.99/mo ($131.88/yr)
- Apple Music Individual: $10.99/mo ($131.88/yr)
- Tidal HiFi: $10.99/mo ($131.88/yr)
- Tidal HiFi Plus (lossless): $19.99/mo ($239.88/yr)
musikcube cost:
- Software: $0
- Raspberry Pi 4 (if you want a dedicated server): ~$55–$80 one-time
- DAC HAT for high-quality output: ~$30–$80 one-time
- A music library you already own or purchase: variable
Over 5 years, Spotify runs ~$660 per person. musikcube on a Raspberry Pi costs under $150 in hardware with no recurring fees — and the hardware is yours indefinitely.
The economics only work if you own or can acquire your music library. Services like Bandcamp, Qobuz’s purchase tier, and 7digital sell DRM-free FLAC downloads. A serious library of 1,000+ albums purchased at $8–$12 each is a different cost model than streaming, so the honest comparison depends on how you get your music.
The XDA review [1] frames it this way: the author realized they were paying for “Hi-Fi quality” on Spotify but getting compressed audio through hardware capable of much more. The decision to move to owned FLAC files + musikcube was as much about audio quality ceiling as it was about cost [1].
Deployment reality check
On macOS: brew install musikcube, then type musikcube in the terminal. That’s it. The XDA reviewer [1] notes Homebrew itself took a couple of minutes to download on a fresh machine; musikcube installation after that was fast.
On Linux: Multiple package manager options. Binaries available on the GitHub releases page. For Raspberry Pi, there are detailed wiki instructions including DAC HAT configuration [README].
On Windows: Download the build from GitHub releases, unpack to a directory, run from the terminal or Win+R dialog. No installer required. Also available via Chocolatey: choco install musikcube [README].
As a streaming server: This is where you need to be careful. musikcube enables its streaming server by default. The README is explicit and unusually honest about the security situation:
“It’s important to understand that, out of the box, the server (and remote api) should NOT be considered safe for use outside of a local network. The websockets service only supports a simple password challenge, and the audio http server just handles Basic authorization. It does not provide ssl or tls. The server also stores the password in plain text in a settings file on the local machine.” [README]
You can add SSL termination via reverse proxy (nginx, Caddy) — the wiki has a dedicated ssl-server-setup section — but this requires knowing what you’re doing. For local-network use only, the default setup is fine. For internet-facing deployment, treat this as a project, not a plug-and-play solution [README].
Realistic time estimates:
- Local player only on macOS/Linux: 5 minutes
- Local player on Windows: 10–15 minutes including downloading build
- Raspberry Pi as dedicated audio server: 1–2 hours including OS setup and DAC configuration
- Internet-facing streaming server with SSL: half a day if you haven’t done this before
No iOS client is a real gap. The XDA reviewer [1] explicitly calls this out: “It has an official musikdroid client for Android, but no love for iPhone and iPad.” If your phone is an iPhone, you can remote-control musikcube from a desktop but can’t stream to your phone [1].
Pros and Cons
Pros
- Zero cost, forever. BSD-3-Clause license — no subscription, no usage limits, no vendor lock-in [README].
- Genuinely lightweight. C++ application with a text UI. Runs on a Raspberry Pi serving 192kHz audio. Not an Electron app. Not a web app dressed up as a desktop app [README][1].
- Built-in streaming server. Most players make you install a separate server. musikcube ships with one — you get a local audio server and a player in one binary [README].
- 250,000+ track library support. Designed to handle serious music collections without pagination hacks or slowdown [README].
- Plugin architecture. Add format support, audio outputs, and service integrations without rebuilding from source [README][1][5].
- Scrobbler-friendly. Supported natively by multi-scrobbler — works with Last.fm, ListenBrainz, Maloja [4].
- Distraction-free. No ads, no algorithm, no social features. Just a music player [1].
- 24bit/192kHz output on Raspberry Pi with compatible DAC hardware — ceiling that streaming services don’t reach [README].
- Actively maintained on GitHub, contrary to what at least one external directory claims [5].
Cons
- No iOS client. musikdroid covers Android; iPhone users are out [1].
- Terminal-only UI — not a dealbreaker for the target user, but a real filter. If you want a mouse-friendly GUI, look at Plexamp or Navidrome [README].
- Streaming server security is rough by default. Plain text passwords, no SSL, Basic auth on the HTTP port. Fine for LAN use; requires a reverse proxy setup for anything else [README].
- No web UI. You can remote-control via musikdroid or third-party clients built against the API, but there’s no browser-based player out of the box [README].
- Scrobbling requires a third-party tool. Last.fm integration isn’t direct — you need multi-scrobbler or similar in your stack [4].
- No Spotify or YouTube Music integration. This is a local-library player. If your music lives in the cloud, musikcube isn’t your tool [README][1].
- Learning curve for keyboard navigation. The user guide is thorough, but muscle memory takes time to build. The XDA reviewer [1] notes playlist creation initially took time before it became natural.
- appmus.com lists it as potentially discontinued [5] — this appears to be either outdated or a database error conflating two projects with similar names. The GitHub repository is active. But it’s worth verifying the current release date before committing.
Who should use this / who shouldn’t
Use musikcube if:
- You own a music library (FLAC, MP3, lossless files) and want the best playback tool for it.
- You run a home server or Raspberry Pi and want to turn it into a personal audio streaming box.
- You have an Android phone and want to stream from your home library to it over local network.
- You use high-quality DAC hardware and are tired of streaming service compression ceilings.
- You want Last.fm or ListenBrainz scrobbling in your setup.
- You’re comfortable with the terminal or willing to spend an afternoon learning keyboard shortcuts.
Skip it (you want a GUI player) if:
- You want to browse your library with a mouse in a polished graphical interface. Look at Plexamp (paired with Plex) or Jellyfin.
Skip it (you want to stream from the cloud) if:
- Your music lives in Spotify, Apple Music, or YouTube Music. musikcube only plays files you own. There’s no streaming service integration.
Skip it (you have an iPhone) if:
- You need mobile streaming to iOS. There is no iPhone client. If Android + desktop is your setup, you’re covered. iPhone users are not [1].
Skip it (you want easy internet-facing access) if:
- You want to stream your library over the internet without setting up a reverse proxy and understanding basic server security. In that case, Navidrome with Tailscale or a proper SSL setup is the safer starting point.
Alternatives worth considering
- Navidrome — a web-based music server with a browser UI and broad client app support (Symfonium, Ultrasonic, Finamp). If you want a polished web interface and Subsonic API compatibility, Navidrome is the stronger choice for a home music server.
- Jellyfin (music) — primarily a media server but handles music libraries with a web UI, mobile apps, and iOS support. More setup complexity but much broader client coverage.
- Plexamp — Plex’s dedicated music player. Beautiful UI, great discovery features, iOS and Android clients. Requires a Plex Media Server license for full features ($120 one-time or $5/mo). Not open source.
- MPD (Music Player Daemon) — the older, more spartan alternative. No built-in UI — you pair it with a separate client (ncmpcpp, Cantata). More configuration, more flexibility. musikcube is easier to get running.
- Beets — not a player, but the gold standard for music library management and tag cleanup. Often runs alongside musikcube or Navidrome.
- Spotify — if your library lives in a streaming service rather than local files, musikcube is the wrong category entirely. Spotify’s $10.99/mo buys you 100M+ tracks; musikcube plays what you own [1].
Bottom line
musikcube is a very good tool solving a specific problem: playing and serving a local music library with minimal overhead and maximum audio quality headroom. It’s not a Spotify replacement in the sense that it won’t fetch tracks you don’t own — it’s a Spotify replacement in the sense that if you own your music, you no longer need a streaming subscription, and you get a better listening experience on serious hardware. The streaming server is the killer feature for home lab setups: one Raspberry Pi running musikcube becomes a personal audio backend for every Android device in your house. The gaps are real — no iOS, no web UI, rough security defaults on the server side — but they’re known gaps the project has never pretended to close. If you’re already comfortable with a terminal and you own a music library, the case for musikcube is straightforward: it costs nothing, handles any library size, and gets out of your way.
Sources
- Samir Makwana, XDA Developers — “I might just replace Spotify with this free command-line tool” (Dec 4, 2025). https://www.xda-developers.com/i-might-just-replace-spotify-with-this-free-command-line-tool/
- Medevel — “11 Free Cloud Media Players for Windows, Linux, macOS and Android”. https://medevel.com/11-cloud-media-player/
- LinuxLinks — “Siren - text-based audio player - Summary” (Last updated Aug 11, 2021). https://www.linuxlinks.com/siren-text-based-audio-player/4/
- LinuxLinks — “multi-scrobbler - scrobble music”. https://www.linuxlinks.com/multi-scrobbler-scrobble-music/
- Appmus — “musikCube: Features, Alternatives & Analysis (2026)”. https://appmus.com/software/musikcube
Primary sources:
- GitHub repository and README: https://github.com/clangen/musikcube (4,718 stars, BSD-3-Clause license)
- Official website: https://musikcube.com/
- Wiki / User Guide: https://github.com/clangen/musikcube/wiki/user-guide
- SSL server setup guide: https://github.com/clangen/musikcube/wiki/ssl-server-setup
- Remote API documentation: https://github.com/clangen/musikcube/wiki/remote-api-documentation
Features
Mobile & Desktop
- Mobile App
Category
Related Media & Streaming Tools
View all 334 →Immich
95KHigh-performance self-hosted photo and video management — automatic backup, ML-powered search, and a Google Photos-like experience on your own server.
Jellyfin
49KThe volunteer-built media solution that puts you in control of your media. Stream movies, shows, music, and photos to any device from your own server.
PhotoPrism
39KAI-Powered Photos App for the Decentralized Web. Tag and find pictures automatically without getting in your way.
Cobalt
39KSave what you love without ads, tracking, paywalls or other nonsense. Just paste the link and you're ready to rock.
qBittorrent
36KAn open-source software alternative to uTorrent. Feature-rich and runs on all major platforms.
SRS
29KSimple, high efficiency, realtime video server. Supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and GB28181.