Skip to content

Latest commit

History

1,355 Commits

Folders and files

NameName
Last commit message
Last commit date

WaveFlow logo

WaveFlow

Local music player for desktop — built with Tauri 2, React 19 & Rust

VersionDownloadsTauri 2React 19RustLicensePlatform


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, all in a clean, Spotify-inspired interface. No streaming, no cloud, 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.

Screenshots

Home view with profile-aware greeting, mood radio and recently playedVirtualised library albums grid
Home · profile-aware greeting, mood radio, Daily Mix carouselLibrary · virtualised album grid with Hi-Res badges and A-Z jump
Album detail view with multi-disc grouping and side now-playing panelFullscreen Now Playing view with real-time spectrum visualizer
Album detail · multi-disc grouping, side Now Playing panel with artist bioImmersive Now Playing · full-bleed artwork with real-time spectrum visualizer
Apple Music style fullscreen karaoke lyricsWaveFlow Wrapped year-in-review with top tracks, average tempo and longest streak
Karaoke lyrics · Apple-Music-style word-level highlight with click-to-seekWrapped · year-in-review with top tracks, average tempo, longest streak — local & private

Cover art shown in the screenshots above remains the property of its respective rights holders. WaveFlow is a local-file player — no music content is bundled, and you must legally own the files in your library.

Features

AreaHighlightsDeep dive
PlaybackSymphonia + cpal, lock-free 3-thread engine, real dual-decoder crossfade, gapless, ReplayGain, 6-band EQ (20 presets), WASAPI Exclusive bit-perfect output (Windows, opt-in, transparent cpal fallback), DSD → PCM, variable playback speed (0.5×–2×), spectrum visualizer, sleep timer, seed + mood radio, A-B repeat, output-device picker, OS media controls (SMTC / MPRIS / MediaRemote), persistent queue with shuffle / repeat / auto-advancedocs
LibraryFolder scanning + filesystem watcher, on-demand audio analysis (peak, loudness, ReplayGain, BPM), Hi-Res badges, multi-artist split, POPM 5-star ratings, A-Z navigator, multi-select action bardocs
PlaylistsDrag-and-drop reorder (virtualised), bulk add from any source, M3U import / export with basename-fallback matching, likes, recently-playeddocs
Smart playlistsAuto-generated Daily Mix family bucketed by tempo, with composite artist-photo covers rendered from your Deezer cachedocs
IntegrationsDeezer (artwork + labels), Last.fm (bios + scrobbling with retry queue) with a TheAudioDB bio-source option, LRCLIB + Musixmatch (with translation language picker) / NetEase / Megalobiz / Genius lyrics, Discord Rich Presence ("Listening to WaveFlow" with cover + progress bar), native OS track-change notifications, built-in DLNA / UPnP media server — all cached locally for offline usedocs
Sync & sharingOpt-in multi-device sync against a self-hosted waveflow-server (playlists, library, likes, ratings — HLC + payload-hash digest, last-write-wins, OAuth-loopback browser handshake), public playlist share links, optional account-bound mode per profileRFC-003
PluginsRFC-002 plugin SDK — wasmtime sandbox with permission gates, manifest-declared host APIs + per-plugin settings; in-app plugin store with a curated catalogue and blake3-verified installs; two official plugins — Web Radio (30 000+ radio-browser.info stations through the cpal engine, live ICY "now playing", per-profile favorites + country browsing, offline catalogue snapshot) and Apple Motion Artwork (animated album covers behind the now-playing view)docs · RFC-002
UI & UXSpotify-style 3-panel layout with 5 skins (Studio / Editorial broadsheet / Lounge listening-room / Pulse OLED-neon / Liquid Apple Vibrancy) × 14 OKLCH theme presets, Framer Motion micro-interactions, immersive fullscreen now-playing with word-level karaoke lyrics, always-on-top mini-player, customizable player-bar layout, system tray, statistics dashboard with JSON export, WaveFlow Wrapped year-in-review, virtual scroll for 6000+ tracks, dark mode (View Transitions API), 17 locales (RTL-aware), per-profile isolated DB with scheduled auto-backup, signed auto-updaterdocs

Tech Stack

LayerTechnologies
Desktop shellTauri 2.11 (tray icon, opener, dialog, updater, notification, single-instance plugins)
OS media controlssouvlaki 0.8 (SMTC / MPRIS / MediaRemote bridge)
Discord Rich Presencediscord-rich-presence 1.1 (local IPC named pipe, no auth)
FrontendReact 19, TypeScript, Vite 8, Tailwind CSS 4, framer-motion 12, Lucide icons, @dnd-kit (drag-and-drop), @tanstack/react-virtual (virtualization), @fontsource (bundled woff2 for skin typography — local-first, no Google Fonts at runtime)
BackendRust, SQLite (sqlx 0.9), FTS5 contentless full-text search, BLAKE3 hashing, tokio
Audiosymphonia 0.6 (decode), cpal 0.17 (output), rubato 3.0 (resample), rtrb 0.3 (SPSC ring)
Metadata extractionlofty 0.24 (tags, embedded art, POPM, INITIALKEY)
Imagingimage 0.25 + fast_image_resize 6 (SIMD thumbnails) + resvg/usvg/tiny-skia (smart-playlist composite covers)
Filesystem watchernotify 8 (debounced rescans of watched folders)
Plugin runtimewasmtime + WASI p2 (RFC-002 plugin sandbox with permission gates)
External APIsDeezer public API (no auth) + Last.fm (read + signed methods via md-5 + reqwest 0.12 with rustls) + LRCLIB / Musixmatch / NetEase / Megalobiz / Genius lyrics + optional waveflow-server for multi-device sync
Package managerBun

Getting Started

# Install dependencies
bun install
# Run the desktop app in development mode
bun run tauri dev
# Build for production
bun run tauri build

Development Commands

bun 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.toml

Documentation

Per-feature deep dives, architecture and storage layout live under docs/:

Community

English and French both welcome.

License

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.

About

🌊 WaveFlow — Spotify-style desktop music player for your local library. Lock-free Rust audio (FLAC/MP3/DSD up to DSD1024), 6-band EQ, ReplayGain, gapless, crossfade, synced lyrics (LRCLIB), Last.fm scrobbling, DLNA server.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

41 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages