Lila is a free, open source desktop audio player that transforms any song into aesthetic slowed and reverb lofi tracks. Built with Rust (Tauri 2) and React/Next.js, it delivers native performance across Windows, macOS, and Linux — no Electron bloat, no subscriptions, no ads. Perfect for your self-hosted music workflow or homelab setup.
Create dreamy slowed + reverb edits, nightcore, or vaporwave-style audio — all offline, all private, all yours.
| Feature | Description |
|---|---|
| 🎚️ Speed & Pitch Control | Slow down or speed up audio from 0.65x to 1.35x |
| 🌊 Lush Reverb | Add customizable reverb depth for that signature lofi sound |
| 📀 Vinyl Crackle | Authentic vinyl noise overlay for vintage warmth |
| 📊 Waveform Visualizer | Real-time audio visualization with seek support |
| 💾 Export to WAV | Save your slowed + reverb creations as high-quality audio |
| 🔁 Loop Playback | Seamless looping for continuous listening |
| 🪶 Lightweight | ~10MB app size, minimal resource usage (Rust-powered) |
| 🔒 Privacy-First | 100% offline — your music never leaves your device |
Head to Releases and download for your platform:
- Windows:
.msior.exeinstaller - macOS:
.dmg(Intel & Apple Silicon) - Linux:
.AppImageor.deb
Why isn't the app signed?
Lila is a free, open source project. Code signing certificates cost $99–$400/year from Apple and Microsoft. We'd rather spend that on coffee. ☕ You can always build from source if you prefer.
macOS: "Lila Player is damaged and can't be opened"
macOS quarantines unsigned apps downloaded from the internet. To fix:
xattr -d com.apple.quarantine /Applications/Lila\ Player.appThen open Lila Player again.
Windows: "Windows protected your PC" (SmartScreen)
Windows SmartScreen blocks unsigned apps. To run anyway:
- Click "More info"
- Click "Run anyway"
If "Run anyway" doesn't appear: Right-click the installer → Properties → check "Unblock" → Apply.
Linux: AppImage won't run
Make it executable first:
chmod +x Lila.Player-*.AppImage
./Lila.Player-*.AppImageUpdate version in both package.json and src-tauri/tauri.conf.json. Pushing to master triggers GitHub Actions to build and release binaries automatically.
-
Node.js (v20+ LTS recommended, v24 LTS latest)
# Verify installation node --version npm --versionDownload from nodejs.org if not installed.
-
Rust
macOS / Linux:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Windows (PowerShell):
winget install --id Rustlang.Rustup rustup default stable-msvc
Verify installation:
rustc --version cargo --version
Install system dependencies:
sudo apt update
sudo apt install -y libwebkit2gtk-4.1-dev build-essential curl wget file \
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-devsudo dnf install gcc make pkg-config openssl-devel webkit2gtk4.1-devel gtk3-devel librsvg2-develsudo pacman -S webkit2gtk-4.1 base-devel curl wget file openssl appmenu-gtk-module libappindicator-gtk3 librsvg-
Clone the repository:
git clone https://github.com/ph33nx/lila-player cd lila-player -
Install dependencies:
npm install
-
Start development server:
npm run tauri dev
-
Build for production:
npm run tauri build
| Command | Description |
|---|---|
npm run tauri dev |
Start Tauri app in dev mode |
npm run tauri build |
Build production desktop app |
npm run lint |
Run ESLint |
npm run format |
Format code with Prettier |
npm run typecheck |
Run TypeScript type checking |
npm run deps:check |
Check for dependency updates |
npm run deps:upgrade |
Upgrade to latest minor versions |
npm run deps:latest |
Upgrade to latest versions (including major) |
- Frontend: Next.js 15, React 19, TailwindCSS
- Desktop: Tauri 2 (Rust)
- Audio: Web Audio API
- UI Components: Radix UI, Framer Motion
MIT
