A modern, high-fidelity music player built with Electron, Vite, and Vue. EchoVault is designed to provide a clean, responsive interface and rich playback features for local lossless audio collections.
- EchoVault CLI — Official command-line interface for EchoVault.
- Overview
- Features
- Screenshots
- Installation (Development)
- Available Commands
- Build & Distribution
- Project Structure
- Contribute
EchoVault is a desktop music player for lossless audio (FLAC/WAV/ALAC) and everyday formats (MP3/M4A/AAC/OGG), built on Electron + Vite + Vue 3.
- FLAC, WAV, ALAC, MP3, M4A, AAC, OGG
- Byte-range audio streaming with real seek support — no full-file decode before playback
- 10-band graphic equalizer with 9 presets (Flat, Bass/Treble Booster & Reducer, Vocal Booster, Rock, Pop, Jazz, Classical, Electronic, Acoustic) plus manual per-band override
- Adaptive loudness normalization (live RMS-based gain)
- Output device selection, persisted across restarts
- Playback at the output device's native sample rate
- Perceptual (cubic) volume taper
- One-click MP3 → FLAC upscaling via a locally-downloaded ONNX model
- Inline per-track progress (download + inference phases) right in the song list
- Enhanced result is added as a new track alongside the original
- Automatic recursive folder scanning
- Live folder watching — new/removed files are picked up automatically, no manual rescan
- Metadata + embedded cover art indexing
- Instant startup through local SQLite caching
- Listening stats: recently played, top played tracks & artists
- Full-screen now-playing view with synced, scrolling lyrics
- Like/unlike, shuffle, repeat, and queue controls built in
- Floating glass player bar with a color tint sampled from the current cover art
- Quick-access equalizer, queue, immersive mode, and mini player toggles
- Resizable queue panel with per-track thumbnails and now-playing highlight
- Compact, always-on-top overlay window for playback on the side
- Create, delete, and manage playlists
- Add or remove tracks from any song list
- Connect your account and scrobble what you listen to
- Light & dark themes with 8 accent colors
- Customizable keyboard shortcuts
- Local user profile with avatar
- Windows
- macOS
- Linux
Follow these steps to clone the repository and set up your development environment.
git clone https://github.com/ACS-lessgo/EchoVault.git
cd EchoVaultMake sure you have Node.js v20.20.2 installed (see .nvmrc), then run:
npm installThis will start the Vite renderer and Electron main process:
npm run startAfter the build completes, an Electron window should open automatically.
npm run start | Run EchoVault in development mode using Vite + Electron
npm run make | Build and package the app for your current platform
npm run publish | Package and publish to GitHub Releases (requires GITHUB_TOKEN)
npm run package | Create a distributable package without publishingnpm run lint is currently a no-op and there are no automated tests wired up.
To create a packaged release version for your OS:
npm run makeOutput builds are generated in:
out/make/Typical build outputs:
- Windows:
.exeinstaller - macOS:
.zip - Linux:
.AppImageand.deb
If you want to publish directly to GitHub Releases:
export GITHUB_TOKEN=your_token_here
npm run publishEchoVault/
├── src/
│ ├── main.js # Electron main process
│ ├── preload.js # Renderer <-> main bridge
│ ├── frontend/ # Vite + Vue app source (components, store, views, router, locales)
│ └── backend/
│ ├── db/ # SQLite schema and queries
│ └── main/ # IPC handlers, scanner, watcher, player, enhance
│
├── forge.config.js # Electron Forge configuration
├── vite.main.config.mjs # Vite configuration for main process
├── vite.preload.config.mjs # Vite configuration for preload
├── vite.renderer.config.mjs # Vite configuration for renderer
├── enhancer-manifest.json # Pinned AI enhancement model/binary manifest
├── package.json
├── CHANGELOG.md
└── README.mdThis project is licensed under the MIT License.
Create a feature branch:
git checkout -b feature/your-feature-nameCommit your changes:
git commit -m "Added new feature: your description"Push the branch and open a Pull Request :)





