Spotify is one of my favorite music streaming apps on my phone and computers. Lately, I have been using Spotify only to enjoy my limited library, and streaming songs to my speakers over Bluetooth did not sound impressive. Eventually, I realized that owning high-quality audio and a library is the only way to make the most of my audio gear.

Recently, I discovered musikcube, a Terminal-based audio tool that lets me play my music library without fuss in my home lab. When I want to try out new music, I fire up my Python-based Spotify recommender to discover new songs and artists. After trying this setup only for a few days, I might replace Spotify and other streaming apps with musikcube, a free command-line tool.

👁 Spicetify on a MacBook Pro
Spicetify is the best way to make your Spotify client actually good

If you want to improve your Spotify client with themes and extensions, look no further than Spicetify.

Here’s why I want to replace Spotify with musikcube

Distraction-free playback at higher quality

Spotify's desktop app is good, but it eats up resources and accumulates a lot of cache over time. Although it's not a problem on my desktop, I often need to free up storage on my MacBook Air or phone. That’s why I store all the media in my home lab instead. So it is convenient to play local files and stream the music from my home server. Besides, I can create new playlists and cycle between them with a keyboard shortcut.

With musikcube, I get to play the collection of music I own without paying extra for “Hi-Fi” quality. I can run a variety of audio files from .MP3 to.FLAC using this tool. Its plugins help support various audio formats, support audio transcoding to save bandwidth, and handle output devices depending on the setup. Most importantly, running it from the Terminal gives me a minimalist, distraction-free experience of playing audio. It snips off the video previews, relentless ads, and social feeds. Creating new playlists took quite some time initially, but it was worth it.

Running locally, musikcube is fast, responsive, and efficient for playing music and podcasts compared to Spotify or other music streaming apps. The best part is that it can run natively on Windows, Linux, and macOS. It has an official musikdroid client for Android, but no love for iPhone and iPad. Next, I plug my USB DAC/AMP directly into the machine and hook it to my speakers or headphones for higher-quality audio output.

Installing and setting up musikcube in Terminal

Really easy to install and use

Getting musikcube to work in the Terminal is straightforward on most platforms. Using it on Mac requires Homebrew, which took a couple of minutes to download. Following that, installing musikcube with brew is quick. The fun part is that I had to type musikcube in the command line to launch the app's Terminal UI.

On my Windows 11 desktop, I downloaded the latest build of musikcube from its GitHub releases page and unpacked it to the root of the drive to run it directly from the Terminal. Building the musikcube using source binaries from scratch is an option, but I chose otherwise. Installing musikcube on Linux has a bunch of options. For my home lab, I chose to deploy musikcube on Linux Mint and set it up in under 5 minutes. It works on Debian 13, too. I downloaded the latest .deb file from the releases page and installed it.

Adding a library of songs saved on Windows and macOS required browsing through the Terminal UI. To make library management easier, musikcube also detects and allows mapping SMB shares as music paths. However, those music paths only work till I actively load the SMB shares on the respective operating systems.

Using keyboard shortcuts is essential for using musikcube. On macOS, I enable the setting to use the Option key as the Meta key for keyboard shortcuts (Preferences -> Profiles -> Keyboard -> Use Option as Meta key). Things were quite easy with the ALT key being the Meta key on Windows. However, I needed to change a few shortcuts by editing the hotkeys.json file so that they don’t overlap with my custom ones. Thankfully, the app also includes a hotkey tester to ensure the correct ones work every time.

Tackling the musikcube audio server setup

Easy way to play music remotely

For me, the musikcube tool as a music player and audio engine works most of the time. To access my music library on the move, the musikcube server setup requires a domain name and a Nginx reverse proxy. It ensures that the server uses SSL, and Certbot is the best option for creating a valid certificate. If that feels daunting, you can use Caddy to set up a reverse proxy. That’s the safest method to access and use the audio server library remotely.

But I chose another path. I have already set up and installed Tailscale on my home server to access the self-hosted apps and VMs remotely. So, using that to access my musikcube audio server remotely was a breeze, with no additional setup. I use a custom Tailnet name to access the musikcube audio server from anywhere to stream from my own library and adjust the audio format and transcoding to save bandwidth.

Minimalist approach to playing music

Although I've been a foobar2000 user for years, I’ve started enjoying my favorite tracks using musikcube lately. Running inside the Terminal, it seldom gets in the way or chews a lot of resources. It’s cool, doesn’t take up a lot of resources, and is accessible from anywhere without fussing over specific clients. The musikcube’s distraction-free experience is a solid advantage over the resource-heavy Spotify app and even other music streaming apps.