Local music player for desktop β built with Tauri 2, React 19 & Rust
WaveFlow is a desktop music player for the audio files you already own. It scans your folders, organizes everything by album, artist and genre, and plays it back through a fast, high-fidelity audio engine. No subscription, no streaming service, no account: your music stays on your machine.
Install β grab the bundle for your OS on the latest release; every release page lists the per-distro one-liner (AUR / COPR / apt / winget) and the standalone installers.
Immersive view Β· Canvas clip, lyrics synced word by word, romanization under each line
Desktop lyrics Β· a floating line above every window
Album artwork shown in the screenshots belongs to its respective rights holders. WaveFlow does not bundle or distribute any music.
π§ Playback Β· docs
- MP3, FLAC, WAV, AIFF, Ogg Vorbis, Opus, AAC, ALAC and DSD
- Gapless playback and a real two-decoder crossfade
- Exclusive output on Windows, Linux and macOS, and DSD over PCM (DoP), which sends DSD untouched to a compatible DAC (opt-in)
- ReplayGain, 6-band EQ with presets, speed 0.5Γβ2Γ, A-B repeat, sleep timer
- Seed and mood radio, album shuffle, OS media controls, a queue that survives a restart
π€ Lyrics Β· docs
- Synced lyrics from LRCLIB, Musixmatch, NetEase, Megalobiz and Genius β or from a plugin
- Word-by-word karaoke, with the word timing estimated when a provider only has lines
- Romanization for Japanese, Korean and Chinese, and translations beside the original
- In the lyrics panel, the immersive view, the mini-player and a floating desktop window
π Library Β· docs
- Folder scan with a live watcher; browse by album, artist, genre or folder
- Search and filters, with pinyin for Chinese titles
- A tag editor that keeps every tag it does not edit, and 5-star ratings written back to your files
- Duplicates, a "Needs attention" tab, multi-artist split
- Hi-Res badges, loudness and BPM analysis
πΆ Playlists Β· docs Β· smart playlists
- Drag-and-drop, M3U import and export, a header coloured from the cover
- Smart playlists built from rules, with a live count
- Daily Mix and On Repeat, generated from what you play
π¨ Interface Β· docs
- 5 skins Γ 14 themes, dark mode, a high-contrast mode
- Immersive now-playing with Canvas clips, animated covers and a cover slideshow
- Always-on-top mini-player, system tray, Windows taskbar buttons
- Statistics and WaveFlow Wrapped, all computed locally
- 17 languages including right-to-left, a separate library per profile, automatic backups
π Connections Β· docs
- Deezer artwork, Last.fm bios and scrobbling, TheAudioDB, Discord Rich Presence
- Optional DLNA / UPnP server and MPD server, so the clients you already use can play from or control WaveFlow
- Your own waveflow-server: its catalogue joins your library, and favourites, ratings and playlists follow you across devices (RFC-005)
- Everything fetched is cached locally, and an offline mode cuts all network access
- Sandboxed WebAssembly plugins with permissions, from an in-app store with verified installs
- Official plugins: Web Radio (30 000+ stations), Apple Motion Artwork (animated covers) and Release Radar (new releases from your artists)
- App β Tauri 2 Β· Rust Β· SQLite (sqlx, FTS5) Β· tokio
- Frontend β React 19 Β· TypeScript Β· Vite Β· Tailwind CSS 4 Β· Framer Motion
- Audio β symphonia + libopus (decoding) Β· cpal (output) Β· rubato (resampling) Β· rtrb (lock-free ring buffer)
- Metadata & images β lofty Β· image + fast_image_resize Β· resvg
- Plugins β wasmtime + WASI p2
- Toolchain β Bun
Requires Bun, Rust and the platform dependencies listed in CONTRIBUTING.md.
# Install dependencies
bun install
# Run the desktop app in development mode
bun run tauri dev
# Build for production
bun run tauri buildbun run dev # Vite dev server only (no Tauri shell)
bun run typecheck # TypeScript check
bun run lint # ESLint
bun run lint:fix # ESLint with auto-fix
bun run format # Prettier
# Rust backend
cargo check --manifest-path src-tauri/Cargo.toml --all-targets
cargo test --manifest-path src-tauri/Cargo.tomlPer-feature deep dives, architecture and storage layout live under docs/:
- Features β playback Β· library Β· playlists Β· smart playlists Β· integrations Β· plugins Β· DLNA / UPnP Β· MPD Β· UI & UX
- Architecture β cross-cutting invariants Β· crate layout Β· audio engine Β· database & paths
- Contributing β CONTRIBUTING.md Β· RELEASING.md
- π Bug? β Bug report
- β¨ Feature idea? β Discussions βΊ Ideas (chat first, graduate to a feature request issue once shape is clear)
- π Setup help / how-to? β Discussions βΊ Q&A
- π Show off your setup or playlist? β Discussions βΊ Show and tell
- π Security? β Private disclosure β never post vulnerabilities publicly.
English and French both welcome.
Copyright (C) 2026 InstaZDLL
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
See LICENSE for the full text. Third-party notices are listed in THIRD_PARTY_NOTICES.md.





