I Built Orchestro: A Lightweight Spotify-Style Music Player for Local Music
We've all been there.
You open a desktop app just to play some local music, check Task Manager, and find it using hundreds of megabytes of RAM with a bunch of background processes running.
Modern music apps are built around streaming, accounts, recommendations, telemetry, and ads. That's great when you want a streaming service, but it feels like overkill when all you want to do is listen to the .mp3 and .flac files already sitting on your computer.
So I built Orchestro.
It's an open-source, local-first music player with a Spotify-inspired interface, built using Tauri 2, React, TypeScript, and Rust.
🔗 Project
GitHub: https://github.com/Kryiocifer/Orchestro

Built with: Tauri 2 · React · TypeScript · Rust · Vite · Tailwind CSS
🎵 What is Orchestro?
Orchestro is designed to make local music feel like a modern streaming app — without actually requiring a streaming service.
You can import your existing music collection, browse albums and artists, create playlists, manage your queue, and play your music completely locally.
It supports formats such as:
.mp3.flac.wav.ogg
There are no accounts, cloud libraries, or external API keys required for basic playback.
⚡ Why Tauri 2?
For the desktop framework, I considered Electron, but I didn't want to bundle an entire Chromium runtime and Node.js environment for a relatively simple music player.
Tauri 2 was a much better fit.
The frontend can still be built with the tools I already enjoy using — React, TypeScript, Vite, and Tailwind — while Rust handles the native desktop side.
Tauri also gives the application a proper capability-based permission system, which is particularly useful when working with local files.
📂 Importing Music
One of the main goals was to make adding music as simple as possible.
Instead of manually entering metadata or configuring complicated library folders, you can just drag your music into Orchestro.
Using music-metadata, the application extracts information such as:
- Song title
- Artist
- Album
- Duration
- Embedded album artwork
After processing, the track is immediately added to the local library.
Small things like this make managing a large music collection much less tedious.
🎨 A Spotify-Inspired Experience
I wanted Orchestro to feel familiar without trying to recreate Spotify itself.
It includes features such as:
- Custom playlists
- Playback queue
- Seek and volume controls
- Album artwork
- Right-click context menus
- Toast notifications
- Local music library management
For example, right-clicking a track lets you interact with it directly instead of navigating through multiple screens.
A simplified version of the context-menu handling looks like this:
const handleContextMenu = (
e: React.MouseEvent,
song: Song
) => {
e.preventDefault();
setMenuPosition({
x: e.clientX,
y: e.clientY
});
setSelectedSong(song);
setIsOpen(true);
};
🔒 Local-First by Design
One of the biggest reasons I wanted to build Orchestro was privacy.
Your music library and playlists stay on your machine.
There's no requirement for:
- An account
- Cloud storage
- Cloud synchronization
- Tracking
- Telemetry
If your music is already on your computer, Orchestro should be able to work with it.
🧠 What I Learned
Building Orchestro taught me quite a bit about desktop development.
The biggest difference from building a web application was dealing with things like filesystem access, native permissions, application packaging, and communication between the React frontend and Rust backend.
Tauri 2's capability system was especially interesting. Native functionality isn't simply exposed to the frontend by default — permissions have to be explicitly configured.
I also got a much better understanding of how local-first applications can avoid a surprising amount of unnecessary infrastructure.
🚀 What's Next?
The current version focuses on the core local music experience, but there's more planned:
- 🎵
yt-dlpintegration for downloading audio - 🎹 Global media keys
- 🖥️ System tray mini-player
- ↕️ Drag-to-reorder playlists
- 🔎 In-library search and filtering
- 🎨 More customization options
The goal is to keep Orchestro lightweight while adding the features that actually make a local music library enjoyable to use.
💻 Try It Out
Orchestro is free and open source.
If you have a local music collection and want a modern Spotify-style experience without a heavyweight streaming client, give it a try.
GitHub: https://github.com/Kryiocifer/Orchestro
If you find it useful, a ⭐ on GitHub is always appreciated!
And if you have ideas or suggestions, feel free to open an issue.
Thanks for reading! 🎵

Top comments (0)