Architecture
How the Vleer app is put together
Vleer is a native desktop app written in Rust with a GPU-rendered UI. It plays the music you already own, keeps an index of it in a local database, and uses a few small online services to clean up metadata, find lyrics and stay up to date. No account is required.
Components
Library
Vleer scans the folders in library.paths and keeps watching them for changes. Everything it learns is stored in a SQLite database (library.db) in the data directory. Your files are never modified.
Supported formats: FLAC, MP3, OGG Vorbis, Opus, AAC, WAV and more.
Each song is identified by a fingerprint of its audio data, not by its path or tags. Renaming, moving or retagging a file doesn't break favorites, playlists or play history.
Metadata
Tags in the wild are messy. After scanning, Vleer asks the OpenMusicMetadata API to identify each song, album and artist. The response is used to:
- fix names
- merge duplicate artists
- fill in missing years and artwork
Matching is done by ISRC and UPC where tags have them, and by name otherwise. Results are cached locally and the original files stay untouched.
Playback
Audio is decoded and played locally, with loudness normalization from ReplayGain tags, a 10-band parametric equalizer and a spectrum visualizer. Playback is exposed to the operating system through the native media controls on Linux, macOS and Windows.
Lyrics
Vleer reads lyrics embedded in the file first and falls back to synced lyrics from LRCLIB.
Integrations
- Last.fm scrobbling, after connecting your account
- Discord Rich Presence, off by default
Updates
Vleer checks the Vleer API for new releases on the stable or nightly channel. Downloads are verified against a minisign signature before they are installed. On Linux only installs from the install script self-update; AppImage, AUR and Homebrew installs update through their own tooling.
Telemetry
Opt-in and off by default. When enabled, Vleer sends only its version, the operating system and the number of songs in your library, tied to a random UUID. See Telemetry.
Data Flow
- Scan - Vleer reads tags and audio fingerprints from your folders into
library.db - Identify - new songs, albums and artists are matched against OpenMusicMetadata
- Enrich - corrected names, merged artists, years and artwork are stored alongside your data
- Browse and play - the UI reads from the local database, so it stays fast and works offline
- Extras - lyrics, scrobbles and presence are fetched or sent while a song plays
Services
| Service | Used for | Docs |
|---|---|---|
api.vleer.app/metadata | Song, album and artist metadata | OpenMusicMetadata |
api.vleer.app/update | Update checks | Vleer API |
api.vleer.app/download | Download redirects for the website | Vleer API |
api.vleer.app/telemetry | Opt-in usage statistics | Vleer API |
| LRCLIB | Synced lyrics | |
| Last.fm | Scrobbling |
Roadmap
Not final, and none of this is shipped yet:
- Navidrome, Subsonic and OpenSubsonic support
- Soulseek integration
- Recommendations based on your listening habits