No description
Find a file
2025-06-13 13:29:47 -04:00
.github/workflows docs: switch to official astro workflow 2025-06-13 01:36:38 -04:00
.vscode chore: initial public commit 2025-06-11 19:45:39 -04:00
assets chore: update README 2025-06-13 01:20:24 -04:00
client fix: reverse merge redirect + hotkey behavior 2025-06-13 13:17:16 -04:00
cmd/api chore: initial public commit 2025-06-11 19:45:39 -04:00
db chore: initial public commit 2025-06-11 19:45:39 -04:00
docs docs: update with new import cfg options 2025-06-13 05:39:42 -04:00
engine increase timeout in lbz relay 2025-06-13 13:29:47 -04:00
internal feat: time-gated imports via cfg 2025-06-13 05:36:41 -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
static feat: listenbrainz import 2025-06-12 23:35:17 -04:00
testing_init chore: initial public commit 2025-06-11 19:45:39 -04:00
Dockerfile chore: initial public commit 2025-06-11 19:45:39 -04:00
go.mod chore: initial public commit 2025-06-11 19:45:39 -04:00
go.sum chore: initial public commit 2025-06-11 19:45:39 -04:00
Makefile fix: makefile build client 2025-06-13 00:53:02 -04:00
README.md chore: update readme 2025-06-13 01:49:28 -04:00
sqlc.yaml chore: initial public commit 2025-06-11 19:45:39 -04:00

Koito

Koito is a modern, themeable, ListenBrainz-compatible scrobbler that I created because I am a data-addicted self-hoster that wanted something a little bit better than what is currently available for my listening habits.

This project is currently pre-release, and therefore you can expect bugs for the time being. 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.

Demo

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

Screenshots

screenshot one screenshot two screenshot three

Installation

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

services:
  koito:
    image: gabehf/koito:latest
    container_name: koito
    depends_on:
      - db
    environment:
      - KOITO_DATABASE_URL=postgres://postgres:secret_password@db:5432/koitodb
      - KOITO_ALLOWED_HOSTS=koito.example.com,192.168.0.100
    ports:
      - "4110:4110"
    volumes:
      - ./koito-data:/etc/koito
    restart: unless-stopped

  db:
    image: postgres:16
    container_name: psql
    restart: unless-stopped
    environment:
      POSTGRES_DB: koitodb
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: secret_password
    volumes:
      - ./db-data:/var/lib/postgresql/data

Be sure to replace secret_password with a random password of your choice, and set KOITO_ALLOWED_HOSTS to include the domain name or IP address you will be accessing Koito from when using either of the Docker methods described above.

Importing Data

See the data importing guide in the docs.

Full list of configuration options

See the configuration reference in the docs.