Lightweight FastAPI backend serving as a track embedding store for OpenSubsonic servers. Uses SQLite and sqlite-vec for 1024-dimensional vector similarity searches.
docker run -d \
-p 8100:8100 \
-v ./data:/data \
ghcr.io/xoconoch/abspitch:latestDatabase is saved at /data/abspitch.db.
This is supposed to run in the same machine as your subsonic server. Since it lacks any form of authentication, it is highly encouraged not to expose to the public internet.
Once you have this running, you must populate it with the absmouth client so that you can actually start exploring your music collection.
abspitch-nv: Navidrome plugin
# Set up virtual environment and dependencies
python -m venv .venv
source .venv/bin/activate
pip install -e .
# Run the server locally
abspitch --host 127.0.0.1 --port 8100 --db abspitch.dbPOST /tracks- Insert or replace track and its 1024-d embedding.DELETE /tracks/{id}- Delete track and refresh artist average embedding.GET /tracks- Paginated track list.GET /tracks/count- Get total track count.
GET /tracks/{id}/neighbors- K-nearest tracks (cosine similarity).GET /tracks/{id}/neighbors/by-artists- K-nearest tracks filtered to list of artist IDs.GET /artists/{id}/neighbors- K-nearest artists (cosine similarity of averaged track embeddings).GET /sonic-path- Greedy path (playlist) connecting start and end track in embedding space.