Describe a song in plain words — instruments, mood, tempo, era, where you heard it — and get its name.
A community index of how songs sound. Nobody uploads audio: your browser reads your files, identifies each one by acoustic fingerprint (AcoustID + MusicBrainz), and boils it down to a 2 KB vector (LAION CLAP, run in the browser with WebGPU). Only the vector and the artist / title / album text are sent. Searching turns your sentence into the same kind of vector and ranks every stored song against it.
What the server stores, and what it never stores: web/legal.html.
web/— the site.app.js(search + folder scan),worker.js(Chromaprint via WASM + CLAP via transformers.js),tones.js(the two-tone technicolor palette),water.js(a port of hyprwater),wasm/(the fingerprinter).server/— FastAPI. SQLite, a brute-force vector index in RAM, the CLAP text tower on ONNX Runtime (CPU). Runs on a Raspberry Pi.fingerprint-wasm/— Chromaprint (rusty-chromaprint) compiled to WebAssembly.deploy/— the Pi install script and systemd unit.QUEUE.md— the working log: every decision, measurement and landmine, in order.
cd server && python -m venv .venv && .venv/bin/pip install -r requirements.txt
VIBEFIND_DATA=../data ACOUSTID_KEY=<your key from acoustid.org/new-application> .venv/bin/python -m uvicorn app:app --port 8080
Open http://localhost:8080. The text model (~240 MB) downloads on the first search; the browser downloads the audio model (~143 MB) on the first scan.
On a Raspberry Pi: deploy/pi-install.sh, then the unit in deploy/describesong.service.