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.





