Find a file
dependabot[bot] f4f7210029
chore(deps): bump the version-updates group across 1 directory with 10 updates
Bumps the version-updates group with 10 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `6.0.2` | `7.0.0` |
| [actions/setup-node](https://github.com/actions/setup-node) | `6.3.0` | `6.4.0` |
| [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) | `4.0.0` | `4.1.0` |
| [dataaxiom/ghcr-cleanup-action](https://github.com/dataaxiom/ghcr-cleanup-action) | `1.0.16` | `1.2.2` |
| [docker/login-action](https://github.com/docker/login-action) | `3.6.0` | `4.4.0` |
| [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `3.11.1` | `4.2.0` |
| [docker/build-push-action](https://github.com/docker/build-push-action) | `6.18.0` | `7.3.0` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `7.0.0` | `7.0.1` |
| [docker/metadata-action](https://github.com/docker/metadata-action) | `6.0.0` | `6.2.0` |
| [marocchino/sticky-pull-request-comment](https://github.com/marocchino/sticky-pull-request-comment) | `3.0.3` | `3.0.5` |



Updates `actions/checkout` from 6.0.2 to 7.0.0
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](de0fac2e45...9c091bb21b)

Updates `actions/setup-node` from 6.3.0 to 6.4.0
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](53b83947a5...48b55a011b)

Updates `peaceiris/actions-gh-pages` from 4.0.0 to 4.1.0
- [Release notes](https://github.com/peaceiris/actions-gh-pages/releases)
- [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md)
- [Commits](4f9cc6602d...84c30a85c1)

Updates `dataaxiom/ghcr-cleanup-action` from 1.0.16 to 1.2.2
- [Release notes](https://github.com/dataaxiom/ghcr-cleanup-action/releases)
- [Commits](cd0cdb900b...d52806a0dc)

Updates `docker/login-action` from 3.6.0 to 4.4.0
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](5e57cd1181...af1e73f918)

Updates `docker/setup-buildx-action` from 3.11.1 to 4.2.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](e468171a9d...bb05f3f551)

Updates `docker/build-push-action` from 6.18.0 to 7.3.0
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](263435318d...53b7df96c9)

Updates `actions/upload-artifact` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](bbbca2ddaa...043fb46d1a)

Updates `docker/metadata-action` from 6.0.0 to 6.2.0
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](030e881283...dc80280410)

Updates `marocchino/sticky-pull-request-comment` from 3.0.3 to 3.0.5
- [Release notes](https://github.com/marocchino/sticky-pull-request-comment/releases)
- [Commits](d4d6b09364...5770ad5eb8)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: version-updates
- dependency-name: actions/setup-node
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: version-updates
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: version-updates
- dependency-name: dataaxiom/ghcr-cleanup-action
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: version-updates
- dependency-name: docker/build-push-action
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: version-updates
- dependency-name: docker/login-action
  dependency-version: 4.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: version-updates
- dependency-name: docker/metadata-action
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: version-updates
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: version-updates
- dependency-name: marocchino/sticky-pull-request-comment
  dependency-version: 3.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: version-updates
- dependency-name: peaceiris/actions-gh-pages
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: version-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-08 16:24:38 +00:00
.devcontainer chore: Add sqlite browser vscode extension to devcontainer 2026-05-06 02:56:34 +00:00
.github chore(deps): bump the version-updates group across 1 directory with 10 updates 2026-07-08 16:24:38 +00:00
.storybook fix(storybook): Fix duplicate msw workers due to vite hot reload 2026-06-24 14:13:19 +00:00
.vscode test: Tighter integration with act 2026-05-13 11:41:29 -04:00
assets refactor(discord): Update links and art 2026-02-17 21:05:26 +00:00
config feat(rocksky): Update configuration and document new token 2026-06-04 20:44:24 +00:00
deploy chore: Add kasm service as extenable compose file for dev 2026-02-26 19:12:21 +00:00
docker/root/etc/s6-overlay/s6-rc.d refactor(mpris): Remove socat service in favor of simplified dbus connection 2025-07-08 19:53:55 +00:00
docsite docs: Update atproto descriptions 2026-06-18 16:49:35 +00:00
flatpak chore: Update flatpak description 2025-03-31 12:12:28 -04:00
next poc multi page 2026-06-12 17:57:54 +00:00
patches feat(database): Implement (with patch) migration context 2026-05-13 15:10:48 -04:00
public fea(ui): Implement tanstack-query for ActivityDetails and mock in storybook 2026-06-10 20:44:51 +00:00
src fix(now playing): Fix realtime NP state handling 2026-07-08 15:43:42 +00:00
.dockerignore refactor(teal): Generate and use real lexicon definitions for tealfm implementation 2026-06-03 18:14:20 +00:00
.gitignore refactor(teal): Generate and use real lexicon definitions for tealfm implementation 2026-06-03 18:14:20 +00:00
.lnav.config.json docs: Add lnav config 2024-12-27 18:49:29 +00:00
.mocharc.json test: Setup transient di cache 2025-09-11 19:14:01 +00:00
.nvmrc chore!: Bump node to 24 2026-04-01 15:23:40 +00:00
cliff.toml chore: Update git-cliff workflow 2026-02-11 15:24:54 +00:00
CODE_OF_CONDUCT.md Add Contributor Covenant Code of Conduct 2026-03-27 13:15:33 -04:00
CONTRIBUTING.md chore: Refactor git/dev workflow to use master as unstable branch 2024-08-30 09:53:52 -04:00
docker-compose.dev.yml feat(docker): Add proper opencontainer labels 2026-04-16 02:05:38 +00:00
docker-compose.yml docs: Update Spotify docs and usage due to Redirect URI changes 2025-08-01 17:28:16 +00:00
Dockerfile chore: Override rate-limit-threshold to use new version with reduced dependencies 2026-05-05 11:46:16 +00:00
drizzle.config.ts port changes from pgllite branch 2026-05-12 16:28:36 +00:00
eslint.config.js chore: Add eslint plugin for mocha tests 2026-07-07 17:54:19 +00:00
index.html Update index.html 2024-01-19 11:05:34 -05:00
LICENSE Create LICENSE 2020-12-06 21:51:20 -05:00
package-lock.json chore: Add eslint plugin for mocha tests 2026-07-07 17:54:19 +00:00
package.json chore: Add eslint plugin for mocha tests 2026-07-07 17:54:19 +00:00
README.md docs: Update readme with new doc site base url 2026-04-07 12:39:41 +00:00
tsconfig.json feat(database): Initial database POC implementation 2026-05-06 02:56:34 +00:00
vite.config.ts keep names and sourcemap on build? 2026-06-30 20:28:07 +00:00

multi-scrobbler

Latest Release License: MIT Docker Pulls Docs

multi-scrobbler logo

A dockerized app that monitors your music listening activity from everywhere and scrobbles it anywhere.

Quick Start Guide

Why should I use this over a browser extension and/or mobile app scrobbler?

  • Platform independent -- Because multi-scrobbler communicates directly with service APIs it will scrobble everything you play regardless of where you play it. No more need for apps on every platform you use!
  • Open-source -- Get peace of mind knowing exactly how your personal data is being handled.
  • Track your activity regardless of where you listen -- Scrobble from many Sources to one Client with ease and without duplicating tracks.
  • Manage scrobbling for others -- Scrobble for your friends and family without any setup on their part. Easily silo sources to specific clients to keep plays separate.

But I already scrobble my music to Last.fm/ListenBrainz, is multi-scrobbler for me?

Yes! You can use Last.fm as a Source or Listenbrainz as a Source to forward scrobbles from your profile to any other Client! That way you can keep your current scrobble setup as-is but still get the benefit of capturing your data to a self-hosted location.

How Does multi-scrobbler (MS) Work?

You set up configurations for one or more Sources and one or more Clients. MS monitors all of your configured Sources. When new tracks are played by a Source MS grabs that information and then sends it (scrobbles it) to all Clients that Source is configured to forward to.

Source

A Source is a data source that contains information about music you are playing or have listened to, such as: a desktop player, web music player, or cloud music service. Examples are Spotify, Jellyfin, Plex, Youtube Music, Navidrome, etc...

Source configurations consist of:

  • A friendly name.
  • Any data needed to communicate or authenticate with the Source.
  • An optional list of Client names that the Source should scrobble to. If omitted the Source also scrobbles to all configured Clients.

Client

A Client is an application that stores the historical information about what music you have played (scrobbles). Examples are Koito, Last.fm, Listenbrainz...

Client configurations consist of:

  • A friendly name.
  • Any data needed to communicate or authenticate with the Client.

Quick Start

See the Quick Start Guide

Installation

See the Installation documentation

Configuration

See the Configuration documentation

Usage

A status page with statistics, recent logs, and some runtime configuration options can be found at

http://localhost:9078

Output is also provided to stdout/stderr as well as file if specified in configuration.

On first startup you may need to authorize Spotify and/or Last.fm by visiting the callback URL (which can also be accessed from the status page). Visit the status page above to find the applicable link to trigger this.

Help/FAQ

Having issues with connections or configuration? Check the FAQ before creating an issue!

Development

Detailed architecture and development guides for Sources/Clients

License

MIT