Lightweight Go 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
# Enter nix devshell
nix develop
# Run the server locally
go run . --host 127.0.0.1 --port 8100 --db abspitch.db
# Run tests
go test -v ./...POST /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.