Koito is a modern, themeable scrobbler that you can use with any program that scrobbles to a custom ListenBrainz URL https://koito.io
  • Go 74.2%
  • TypeScript 21.7%
  • PLpgSQL 3.2%
  • CSS 0.6%
  • Dockerfile 0.2%
  • Other 0.1%
Find a file
2026-05-17 19:59:02 -04:00
.github chore: add pr template 2026-04-24 22:02:37 -04:00
.vscode chore: initial public commit 2025-06-11 19:45:39 -04:00
assets feat: Rewind (#116) 2025-12-31 18:44:55 -05:00
client Fix/change listen track model (#273) 2026-05-17 19:39:08 -04:00
cmd/api feat: reset password command (#254) 2026-04-28 21:59:06 -04:00
db Feat: Edit Artists (#199) 2026-04-30 21:42:05 -04:00
docs docs: change _FILE reference var 2026-05-01 00:02:19 -04:00
engine chore: rewrite api surface (#265) 2026-05-17 19:33:38 -04:00
internal chore: skip psql tests 2026-05-17 19:59:02 -04:00
queue chore: initial public commit 2025-06-11 19:45:39 -04:00
romanizer chore: initial public commit 2025-06-11 19:45:39 -04:00
test_assets feat: add client to koito export and import (#255) 2026-04-29 20:38:22 -04:00
testing_init chore: initial public commit 2025-06-11 19:45:39 -04:00
.env.example feat: refetch missing images on startup (#160) 2026-01-20 12:10:54 -05:00
.gitignore feat: refetch missing images on startup (#160) 2026-01-20 12:10:54 -05:00
Dockerfile fix: install yarn explicitly in dockerfile 2026-05-08 02:11:30 -04:00
go.mod feat: sqlite support (#248) 2026-04-26 22:15:35 -04:00
go.sum feat: sqlite support (#248) 2026-04-26 22:15:35 -04:00
LICENSE chore: LICENSE 2025-06-13 22:00:20 -04:00
Makefile feat: refetch missing images on startup (#160) 2026-01-20 12:10:54 -05:00
README.md Update README.md 2026-05-01 00:13:27 -04:00
sqlc.yaml chore: initial public commit 2025-06-11 19:45:39 -04:00

Koito logo

Koito (小糸) is a Japanese surname. It is also homophonous with the words 恋と (koi to), meaning "and/with love".

Ko-Fi

Koito is a modern, themeable ListenBrainz-compatible scrobbler for self-hosters who want control over their data and insights into their listening habits. It supports relaying to other compatible scrobblers, so you can try it safely without replacing your current setup.

This project is under active development and still considered "unstable", and therefore you can expect some bugs. If you don't want to replace your current scrobbler with Koito quite yet, you can set up a relay from Koito to another ListenBrainz-compatible scrobbler. This is what I've been doing for the entire development of this app and it hasn't failed me once. Or, you can always use something like multi-scrobbler.

Features

  • More performant than similar software
  • 🖌️ Sleek UI
  • 🔁 Compatible with anything that scrobbles to ListenBrainz
  • 🔌 Easy relay to your existing setup
  • 📂 Import support for Maloja, ListenBrainz, LastFM, and Spotify

Demo

You can view my public instance with my listening data at https://koito.mnrva.dev

Screenshots

screenshot one image image

Installation

See the installation guide, or, if you just want to cut to the chase, use this docker compose file with a minimal configuration:

services:
  koito:
    image: gabehf/koito:latest
    container_name: koito
    environment:
      - KOITO_SQLITE_ENABLED=true # will not be needed after v0.2.0
    ports:
      - "4110:4110"
    volumes:
      - ./koito:/etc/koito
    restart: unless-stopped

Importing Data

See the data importing guide in the docs.

Before importing, it is recommended you set up any image sources you want to have enabled. You can view the configuration options for image sources in the full list of configuration options.

Full list of configuration options

See the configuration reference in the docs.

Contributing

There are currently some known issues that I am actively working on, in addition to adding new features. If you want to contribute (especially more and more robust testing) feel free to fork the repository and make a pull request with your changes.

If you have any feature ideas, open a GitHub issue to let me know. I'm sorting through ideas to decide which data visualizations and customization options to add next.

You can also donate money to me, @gabehf, the primary developer, via the "sponsor" or "ko-fi" buttons, and I will spend that money on luxurious trips and fine cuisine in foreign countries, or rent.

Star History

Star History Chart

Albums that fueled development + notes

More relevant here than any of my other projects...

Not just during development, you can see my complete listening data on my live demo instance.

Random notes

  • I find it a little annoying when READMEs use emoji but everyone else is doing it so I felt like I had to...
  • About 50% of the reason I built this was minor/not-so-minor greivances with Maloja. Could I have just contributed to Maloja? Maybe, but I like building stuff and I like Koito's UI a lot more anyways.