Browse by type
TuneLog is a self-hosted music recommendation system for Navidrome. It learns from listening behavior such as skips, partial plays, full plays, and repeats to generate personalized playlists and improve search results.
sql Querysocketioresearch like which python module to use and stuffPlaylist Page was re written using claude ai[!important] Migrated from Mono Repo to Multi Repo Please Re download the ghcr-docker-compose.yaml file
This feature lets user sync there local starred song from navidrome to listenbrainz. Read here Push Heart
This feature uses ListenBrainz recommendation data and matches it against songs already available in your library to automatically generate personalized playlists.
For setup instructions and details, see the ListenBrainz Collaborative Filtering documentation.
mkdir tunelog && cd tunelog
curl -o .env https://raw.githubusercontent.com/adiiverma40/tunelog/main/.env.example
curl -o ghcr-compose.yaml https://raw.githubusercontent.com/adiiverma40/tunelog/main/ghcr-compose.yaml
docker compose -f ghcr-compose.yaml up -d
Update:
docker compose -f ghcr-compose.yaml pull
Edit .env before starting the stack.
[!NOTE] You will have to manually Added or change the docker compose files for volume mounts
mkdir -p tunelog && cd tunelog
git clone https://github.com/adiiverma40/tunelog-backend
git clone https://github.com/adiiverma40/tunelog-frontend
curl -o .env https://raw.githubusercontent.com/adiiverma40/tunelog/main/.env.example
Backend
cd tunelog-backend
docker compose up --build
Frontend
cd tunelog-frontend
docker compose up --build
[!note] Note for Windows Users : PowerShell's default curl command may throw an SSL/Revocation error. If the curl commands below fail, simply download the .env.example file manually from the repository, place it in the respective folders, and rename it to .env. Or create .env file and paste the below config in both folders
Backend:
git clone https://github.com/adiiverma40/tunelog-backend
cd tunelog-backend
curl -o .env https://raw.githubusercontent.com/adiiverma40/tunelog/main/.env.example
cp .env.example .env
pip install -r requirements.txt
python3 error.py
Frontend:
git clone https://github.com/adiiverma40/tunelog-frontend
cd tunelog-frontend
curl -o .env https://raw.githubusercontent.com/adiiverma40/tunelog/main/.env.example
npm install
npm run dev
Update .env with your Navidrome details and the addresses you want to allow.
# ================================================
# NAVIDROME CONFIG
# ================================================
BASE_URL=http://navidrome-navidrome-1:4533 # Base URL for Navidrome Server
ADMIN_USERNAME=adii # Admin Username for Navidrome Server
ADMIN_PASSWORD=1234 # Admin password for Navidrome Server
# ===============================================
# DASHBOARD CONFIG
# ==============================================
VITE_URL=http://192.168.29.118:5173 # URL for Dashboard.
VITE_SERVER_PORT=8000 # PORT on which Uvicorn(fastapi) server will be of Dashboard
# Add additional origins separated by commas, or use * to allow all.
ALLOWED_ORIGINS=http://localhost:5173,http://192.168.29.118:5173,*
# VITE_API_URL=http://192.168.29.118:8000 # NO NEED FOR THIS
# VITE_NAVIDROME_URL=http://192.168.29.118:4533 # NO NEED FOR THIS
MY_DOMAIN=192.168.29.118
# ================================================
# LOGGING
# ================================================
LOG_DIR=/app/logs
LOG_MAX_SIZE=10 MB
LOG_RETENTION_DAYS=7 days
LOG_LEVEL=DEBUG
# =================================================
# PROXY
# =================================================
PROXY_PORT=4534
Note: Navidrome/subsonic client like
symfoniumscrobble data to navidrome and navidrome reports that tolistenbrainz, So Do not add those apps inpano appscrobble list or it will create two list of same songItunesFuzzy: Songs that are new or that is not in either
itunesormusicbrainz, such as ofsmall creatorswill be markedunmatchedas api will returnnone
In the dashboard there is a jam section, if you wish to use jam go to jam and now playing section in the dashboard
features
config you can toggle some features for jam like only host reorder queue, only host clear queue and moreRequirements
VITE_NAVIDROME_URL in .env for search and album artsSetup
user profile
users sectionFor better artist mapping, you can add this to navidrome.toml:
Tags.Artist.Aliases = ["artist", "artists"]
Then run a full library scan in Navidrome.
The proxy layer is optional. When enabled, client search requests are routed through TuneLog before falling back to Navidrome.
To use it:
PROXY_PORT in .env if neededTuneLog uses implicit feedback from Navidrome activity to score tracks:
The playlist engine combines those scores with recency and discovery logic to keep playlists balanced.
TuneLog/
├── backend/
│ ├── main.py
│ ├── playlist.py
│ ├── library.py
│ ├── db.py
│ └── Data/
├── frontend/
└── compose.yaml
data/ if needed.browse all types & interfaces →
$ claude mcp add tunelog \
-- python -m otcore.mcp_server <graph>