Skip to content

Repository files navigation

FLAC Cafe

CI Latest Release License: MIT Platform: Windows

FLAC Cafe is an open-source, Windows-first desktop app for local music collections. It is built around a better local AutoDJ: scan downloaded files, keep ratings and play history in SQLite, analyze similarity when optional ML is installed, and generate useful queues without depending on a streaming service.

This is beta software. The core app is usable, but release builds still need broad real-library testing.

Screenshots

These screenshots use a small demo library so the public docs do not expose a real local collection.

Library Albums
FLAC Cafe library track table FLAC Cafe album browse view
AutoDJ Now Playing
FLAC Cafe AutoDJ queue generation FLAC Cafe Now Playing lyrics view
File Management
FLAC Cafe file management tools

Download

Windows beta installers are published on the GitHub Releases page. The app is designed for local files first; no streaming account is required.

What Works

  • Local library scanning with progress, missing-file cleanup, duplicate review, and messy metadata tolerance.
  • SQLite-backed ratings, play history, playlists, lyrics, recommendation history, podcasts, audiobooks, and web radio bookmarks.
  • Optional metadata and rating writes back to files when the setting is enabled.
  • MusicBee-inspired library tools for filename-to-tag inference, MusicBrainz auto-tagging, acoustic fingerprints, volume tags, tag backups, CSV cleanup, file organization previews, desktop-library stats import, and cache cleanup.
  • Rust-owned local playback, URL/radio playback, CD track preparation, queue controls, fade/crossfade, sleep timer, lyrics, visualizers, artist info, and media-key integration.
  • AutoDJ with beginner and advanced controls, temperature sampling, cooldowns, unrated exploration, seed-track similarity, and optional CLAP audio embeddings.
  • Album, artist, playlist, audiobook, podcast, radio, source-folder, history, and file-management views.
  • Optional CD detection, live CD preview/playback, MusicBrainz disc lookup, and FLAC/MP3/WAV ripping workflows.
  • Theme and font customization through JSON theme files plus in-app settings.
  • Manifest-based extension and skin discovery for advanced customization experiments.
  • MSI packaging helpers for Windows, including bundled Chromaprint and CD helper tools.

Stack

  • Desktop shell: Tauri v2
  • Frontend: React, TypeScript, Vite, Tailwind CSS
  • Backend: Rust app-facing controller plus Python expert workers for optional ML library work
  • Optional analysis: CLAP through Transformers and Torch

The MVP started with FastAPI because it kept music logic in Python and made early testing simple. The desktop build now uses Rust as the app-facing controller for SQLite reads, lightweight mutations, local media URLs, Lofty-based tag reads/writes, MusicBrainz/AcoustID matching, podcast feed/download work, scrobbling flows, external-library imports, CD workflows, audio conversion orchestration, CLAP runtime setup/status jobs, and all frontend-facing dispatch. Python remains an expert subprocess for the places where the Python ecosystem is still clearly useful: CLAP/Torch dependency checks, runtime package installation, and model inference. CLAP analysis uses a persistent Python model worker so Torch stays warm during a batch. The packaged app no longer bundles, starts, or routes through a Python HTTP server.

Repo Layout

backend/       Python expert-worker modules and shared schema/data helpers
frontend/      React/TypeScript UI, typed API clients, themes, player surfaces
src-tauri/     Tauri v2 shell, Rust commands, Python expert bridge, Windows media controls, Rust playback
scripts/       Windows dev, test, validation, packaging, and runtime helpers
docs/          maintainer guides, feature docs, release docs, and project structure
extensions/    sample extension/skin manifests

For the detailed tree, ownership notes, and ignored/generated directories, see Project Structure.

Development

Create the Python environment for packaging and optional CLAP development. The base sidecar runtime is currently standard-library only, but packaging needs PyInstaller:

python -m venv .venv
.\.venv\Scripts\python -m pip install -r backend\requirements.txt

Install frontend dependencies:

npm.cmd install

Run the desktop shell:

npm.cmd run desktop

npm.cmd run dev is now a Windows-friendly alias for the desktop shell. The Python side runs as named worker calls instead of a long-running HTTP backend. If an old dev server is still running:

.\scripts\stop_dev.ps1

Optional CLAP Runtime

The base app does not need Torch or CLAP. From the Analysis page, use Install CLAP and choose CPU or NVIDIA CUDA. Packaged builds create an app-managed runtime under %LOCALAPPDATA%\FLAC Cafe\ml-runtime.

Manual dev install:

# CPU Torch
.\.venv\Scripts\python.exe -m pip install torch --index-url https://download.pytorch.org/whl/cpu
.\.venv\Scripts\python.exe -m pip install -r backend\requirements-clap.txt

# NVIDIA CUDA Torch
.\.venv\Scripts\python.exe -m pip install torch --index-url https://download.pytorch.org/whl/cu128
.\.venv\Scripts\python.exe -m pip install -r backend\requirements-clap.txt

Checks

npm.cmd run check
npm.cmd run test
npm.cmd run build
cargo check --manifest-path src-tauri\Cargo.toml --all-targets

Packaging

npm.cmd run package:msi

The Windows MSI product version must be numeric, so beta builds use a numeric Windows product version such as 0.5.0 and a release/installer label such as 0.5.0-beta.

Before publishing, follow docs/release-checklist.md. Public beta releases should use a versioned tag such as v0.5.0-beta and be marked as a prerelease on GitHub.

More Docs

About

A local music app with good recommendations.

Resources

Contributing

Security policy

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages