opensourceprojects.dev

A broadsheet for software that doesn't ask for your email

Open-source music streaming with plugins for metadata and audio sources
GitHub RepoViews7

Project Description

View on GitHub

A Music Streamer That Doesn't Own Your Library

You've probably got your music scattered across a few services, a folder of local files, and maybe a playlist or two you've been rebuilding by hand since 2014. What if the player itself didn't care where the music came from, and let you plug in your own sources instead? That's the idea behind Spotube, a cross-platform open-source music streaming platform built around plugins.

What It Does

Spotube is a desktop and mobile music streaming app where the metadata, playlists, and audio sources all come from plugins. Instead of hardcoding a single streaming service, it hands those responsibilities to community-built (or self-built) plugins, so the app becomes a shell you fill with whatever music services you want.

Under the hood, it's a Kotlin Multiplatform and Compose Multiplatform app. The desktop build uses the Nucleus Gradle plugin and ships as a GraalVM native image—an ahead-of-time compiled binary that runs without a JVM installed. There's also a Rust library in the composeApp module, built through Gobley. Playback control happens locally rather than on a server, and the project states plainly that it collects no telemetry, diagnostics, or user data.

Why It's Cool

  • The plugin model is the whole point. Rather than arguing about which streaming service is best, Spotube sidesteps the question. Any platform or custom music service can be supported through a plugin, and the community is already building them for popular platforms.

  • Downloads come with tagged metadata. The README lists freely downloadable tracks with tagged metadata as a feature. That's a small detail that matters a lot if you've ever tried to make a downloaded track library look tidy in another player.

  • Time-synced lyrics regardless of plugin support. This is a clever bit of separation—lyrics work even when the underlying plugin doesn't provide them, so the experience stays consistent across sources.

  • It's genuinely light. Small binary size and low data usage are called out directly. Native compilation helps here: no JVM to carry around, just a binary.

  • Local playback control. Routing playback locally instead of through a server is both a privacy and a latency win, and it fits the decentralized framing the project uses.

The honest caveat is that the plugin ecosystem is the product. The app is only as useful as the plugins available for it—or the ones you're willing to write. That's a real tradeoff, not a footnote.

How to Try It

The easiest path is downloading a build from the official website at spotube.cc. If you want the latest code, nightly builds are available at spotube.cc/downloads/nightly.

Building from source is more involved, so here's the short version from the README:

  1. Install JDK 21 to run Gradle (the Gradle daemon JDK and GraalVM toolchain get provisioned automatically).
  2. Install Rust via rustup and cargo—the composeApp Rust library builds through Gobley.
  3. For Android builds, install the Android SDK.
  4. One dependency isn't on Maven Central yet. Clone kdroidFilter/ComposeNativeWebview at the commit pinned in spotube-release-binary.yml (COMPOSE_WEBVIEW_COMMIT) and run ./gradlew publishToMavenLocal inside it.
  5. On Linux, install the runtime libraries yourself if you're building from source—including VLC. The .deb and .rpm packages pull these in as dependencies, and only the .AppImage is fully self-contained (it bundles VLC, GTK 3, and WebKitGTK).

For Debian/Ubuntu, the README gives this line:

sudo apt-get install libvlc5 vlc-plugin-base libwebkit2gtk-4.1-0 libgtk-3-0 libasound2 libgl1 libxtst6 libxi6 libxrender1

Fedora users will want the dnf equivalent (the README's table was truncated in what I could see, so check the repo for the full command). The full instructions live at github.com/team-spotube/spotube.

Final Thoughts

Spotube is best suited to people who are comfortable assembling their own setup and don't mind the plugin model's rough edges—developers, tinkerers, and anyone who's tired of their listening history living on someone else's server. If you want a polished, zero-configuration streaming app, this isn't that, and the README doesn't pretend otherwise. But if the idea of a player where you own the sources appeals to you, it's a solid starting point—and the project's framing as "a small step towards the decentralized music streaming era" is refreshingly modest about what it is.


Follow @githubprojects for more developer tools and open source projects.

Back to Projects
Project ID: spotubeLast updated: October 28, 2026 at 02:50 AM