KO
Back to Projects
BrainStream

BrainStream

A solo personal music acquisition + normalization pipeline designed to satisfy recommendation diversity, metadata consistency, and one-person operability simultaneously

Mar 2026 - Mar 2026 Less than a month

Tech Stack

PythonFastAPISQLiteMutagenDockerDocker ComposeGHCRListenBrainzMusicBrainzNavidrome

Overview

A solo personal pipeline that turns my own ListenBrainz listening history into a continuously growing self-hosted music library on Navidrome. Python (FastAPI) + a single SQLite + Docker Compose run BrainStream and Navidrome side by side, closing the loop “recommendation → normalization → acquisition → library import → external client response” inside one container stack.

To run this loop without a commercial SaaS, three things had to be satisfied at once: recommendations can’t get trapped in an echo chamber, metadata has to stay consistent across the whole library, and a multi-stage pipeline that crashes mid-stage has to resume safely while still being small enough for one person to operate. Every design decision rolls up to those three axes.

Tech Stack

My Role

Solo personal side project. I designed the pipeline, integrated all external APIs, wrote the metadata and tagging logic, the FastAPI web UI, the Subsonic proxy, the Docker Compose packaging, and the GHCR release workflow — and I’m the only operator.

Key Contributions

Troubleshooting

Impact

A personal automation that closes the loop “my listening history → my library” entirely in code, without depending on a commercial SaaS. The most satisfying part is that recommendation diversity, metadata accuracy, and saga-recoverability don’t trade off against each other — the design pushes domain normalization onto MusicBrainz, shapes fallbacks asymmetrically based on each external API’s trust profile, and keeps the runtime small enough that one person can keep operating it.

View All Projects
Close