Tourmaline analyses your listening history from your Teal.fm scrobbles. All fetching, analysis, and enrichment runs server-side. The server resolves your identity, fetches scrobbles from your PDS, computes the profile, and enriches top artists — then sends the results to your browser for display. No data is persisted between visits; the in-memory session cache is lost when the serverless function cold-starts.
The network requests made are:
slingshot.microcosm.blue) — resolves your
AT Protocol handle to a DID and PDS URL. This is a standard identity lookup. No
personally identifiable data beyond your handle is sent.fm.teal.alpha.feed.play records from
your Personal Data Server. Reading is unauthenticated. If you choose to share your
personality profile to Bluesky, Tourmaline will use OAuth to publish the post and will
also create a usage record in your repository via the click.croft.toolkit.use lexicon. This record contains the total number of
scrobbles analysed and a timestamp.cdn.bsky.app.Scrobbles are held in an in-memory session on the server for the duration of the analysis. This session expires after 10 minutes of inactivity and is never written to disk. No persistent database is used.
Your handle or DID is resolved to a PDS URL via Slingshot.
fm.teal.alpha.feed.play records are fetched page by page from your
PDS. Fetched in batches to stay within serverless function time limits.
Scrobbles are aggregated into top artists, tracks, albums, daily counts, genre profiles, mood mapping, era preference, diversity scoring, and obscurity indexing. All date range presets are computed at once so switching is instant.
Top artists are enriched with genre data from MusicBrainz, listener counts from Last.fm, and images from Deezer. This runs in batches on the server after the base profile is already computed.
Not analysed: Private/hidden scrobbles. Only fm.teal.alpha.feed.play records visible on your PDS are read.
Tourmaline is free software released under the GNU Affero General Public License v3.0 (AGPL-3.0-only).
In short: you are free to use, modify, and redistribute this software, but any modified version you run as a network service must also be released under the same licence with its source code made available.
The full licence text is included in the repository.
Contributions via GitHub are always welcome. The full contributor list is maintained there.
fm.teal.alpha lexicon this tool reads from