Koito
Koito is a scrobbler. It sits behind whatever you actually play music with, records every track that gets played, and turns that stream of events into something worth looking at: top artists, top albums, listening hours, and a history you can scroll back through.
It speaks the ListenBrainz API, which is the useful part. Anything that can scrobble to ListenBrainz can scrobble to Koito instead, and that covers Navidrome, most Android and iOS music players, and the desktop bridges people use for Spotify and Apple Music. Nothing needs to know Koito exists by name.
Get a 7-day trial of ElfHosted Koito! 
How do I access Koito?
Koito is available:
Signed-in users see their own URLs
The addresses above show the general pattern. Sign in and these become your personal, clickable links.
Why would I want this?
- Your history stops belonging to somebody else. Last.fm has your listening data going back years and can decide tomorrow what you may do with it. Koito keeps the same data where you can export it.
- It runs alongside your existing scrobbler, not instead of it. Koito can relay everything it receives on to Last.fm or ListenBrainz, so you can run it for a few months and lose nothing if you decide it is not for you.
- It brings your old history with it. Imports work from Spotify, Last.fm, ListenBrainz and Maloja, so you start with your full history rather than an empty page.
First login
Koito ships with a starting account of elfie / changemeelfie. Change the password from the Account tab in Koito's settings the first time you sign in.
Your ElfHosted login already stands in front of the Koito web interface, so this second password is not what keeps strangers out. It is what protects your API Keys page, and that key is the one thing worth guarding: anyone holding it can write listens into your history.
Getting your API key
Press ++backslash++ (or click the settings icon), sign in on the Account tab, then open the API Keys tab. The key shown there is what every scrobble client authenticates with.
Scrobbling from Navidrome
Point Navidrome at Koito with ElfBot:
Quick-paste into Navidrome's environment variables using ElfBotND_LISTENBRAINZ_ENABLED=true
ND_LISTENBRAINZ_BASEURL=https://<your username>-koito.elfhosted.com/apis/listenbrainz/1
Then in Navidrome, open Settings, then Personal, and turn on Scrobble to ListenBrainz. It will ask for a token: paste in your Koito API key.
Scrobbling from a phone or desktop
Any ListenBrainz-compatible client works the same way. Give it:
| Setting | Value |
| API URL | https://<your username>-koito.elfhosted.com/apis/listenbrainz/1 |
| Token | Your Koito API key |
Some clients want the address without the trailing /1. If a client rejects the URL above, try it without.
The scrobble endpoint is reachable without an ElfHosted login, because a phone cannot complete a browser sign-in. It is protected by your API key instead, and rejects anything that does not carry one. Everything else, including the page that shows you that key, stays behind your ElfHosted login.
Showing album art
Koito can pull artwork from your Navidrome library rather than the internet. Set these with ElfBot:
Quick-paste into Koito's environment variables using ElfBotKOITO_SUBSONIC_URL=https://<your username>-navidrome.elfhosted.com
KOITO_SUBSONIC_PARAMS=u=<navidrome user>&t=<token>&s=<salt>
The three parameters come out of any authenticated Navidrome request. Open Navidrome in a browser, press ++f12++, look at the Network tab, and copy them from the query string of a getCoverArt call.
Koito refuses to start if these are wrong
Koito validates the Subsonic settings during startup and exits if they fail. If Koito stops coming up after you set these, that is why. Clear them with ElfBot and it will start again.
Importing your history
Koito reads import files from import inside its config folder, and picks them up when it next starts.
- Get your export: Spotify, Last.fm via ghan.nl, ListenBrainz, or the
Export button on another Maloja instance. - Copy the file into
/storage/config/koito/import/ using FileBrowser. - Restart Koito from ElfBot. The import starts on its own.
The filename matters, because that is how Koito decides which format it is looking at. Keep Streaming_History_Audio in Spotify filenames, recenttracks for Last.fm, listenbrainz for ListenBrainz, and maloja for Maloja.
Large imports take a while
Every unfamiliar artist means a MusicBrainz lookup, and those are rate limited to one per second, by MusicBrainz and not by us. A decade of Last.fm history can take hours. It runs in the background and you can use Koito while it works.
Relaying to Last.fm or ListenBrainz
If you are not ready to leave your existing scrobbler, Koito will forward everything it receives to another ListenBrainz-compatible server. Set this with ElfBot:
Quick-paste into Koito's environment variables using ElfBotKOITO_ENABLE_LBZ_RELAY=true
KOITO_LBZ_RELAY_URL=https://api.listenbrainz.org/1
KOITO_LBZ_RELAY_TOKEN=<your listenbrainz token>
Restart Koito afterwards. The relay URL needs the full path to the other server's endpoint, not just its hostname.
Koito or Maloja?
Both record the same thing. Maloja is the older and steadier of the two, speaks more scrobble dialects, and has a plainer interface. Koito is the newer one, is faster with a large history, and looks considerably better.
Koito's own author describes the project as unstable and still moving, so expect the occasional rough edge on upgrade. If that matters more to you than the interface does, run Maloja instead. Both can import from the other, so the choice is not permanent.
Koito also works with
How do I get support for Koito?
-
For general use of Koito, refer to the official site or to one of the links in the resources section below.
-
For specific support re your ElfHosted configuration / account, see the ElfHosted support options!
You can contribute directly to the development of Koito using the following:
Koito resources
Your content, your responsibility
ElfHosted provides Koito as a hosted application — we do not supply content, accounts, or third-party credentials. You are responsible for ensuring that your use of this app complies with applicable laws and our Acceptable Use Policy. If you have questions about what is or isn't permitted, please reach out — we're happy to help.
What users say..
We're rocking some excellent 



TrustPilot Reviews, and here's what some of our usersfriends say..
I am new here, but today I learned realized that Elfhosted is one of the best free and open source software communities I've seen, and FOSS communities have been at the center of my life since the 90s (Perl, PHP, Symfony, Drupal, Ethereum, etc.). Great open software built by great people who care = great community, and that is something special.
You've done an amazing job @Funky Penguelf with the platform you provide and this place has an awesome mix of active community caretakers and software creators that I've seen here so far like BSM, Spoked, LayeZee and other elf vengers. Keep up the energy, productivity and community and take time to enjoy it and appreciate each other!




@skwah (Discord)
As a happy Elfhosted customer—who also self hosts MANY things across about 10 severs (dedicated, VPSes, and VMs running on Synology), I wouldn’t switch to self hosting the services I get from Elfhosted. They just work with very little effort configuring things, and the support the owner and his team provides is second to none. Plus I love being part of a fledgling—but quickly growing—enterprise.




/u/jatguy. (Reddit)
I’ve been using this service for a while now, and honestly, it’s a game-changer compared to anything else I’ve tried for managing my media library. The support is fantastic—super quick, and if the staff aren’t around (which rarely happens), the community steps up right away. I can’t imagine going back to any other platform.
Before this, I had my own setup with a NUC, NAS, and tools like Sonarr and Radarr. It worked pretty well for a while, and my internet speed was high enough to stream without any buffering. But in the end, it wasn’t worth the time or headache of managing all the storage and keeping everything running smoothly.
Now, with this service, everything runs smoothly in 1080p+ with no buffering issues. The interface is really easy to use, which makes managing everything a breeze. Plus, having a whole community of smart people available for guidance is a huge bonus.
I was sold from the start, which is why I quickly upgraded from a 1-month to a 3-month subscription, and I’m planning to switch to a 1-year plan soon. This service totally pays for itself, and I’m sure you won’t be disappointed. It’s been really impressive.




@seapound (Discord)
Best possible options for anyone looking for the do-it-all option along with the best customer service ive experienced in this space so far. Id rate it a 6 if I could but its limited to 5/5...




@hashmelters (Discord)
(responding to a discussion re the cost of ElfHosted vs mainstream streaming / self-hosting):
I didn't know that the goal of this project was to compete with large companies running/renting entire DCs. I was under the impression that the goal of this project was to manage the updating of almost selfhosted applications on a shared platform with other users. Basically, be my sysadmin for me.
That being said, paying for services is the 'easy button'. There is a real world cost incurred for the time saved. Time is money. Time is the most valuable currency that exists. Once time is spent, it's forever lost, one cannot retrieve it again (yet). In my mind, there are 3 options for use of time with respect to: mainstream, selfhosting, elfhosted.
-
mainstream - my time is valuable and I don't want curated content and I don't care what content that I have the ability to consume. I only like what's popular.
-
elfhosted - my time is valuable, I want my own curated content without being forced to browse past the same damn entry 500 times just to find out that I can't watch the movie I want because it's not available in my current location or was removed last week from mainstream providers.
-
selfhost - I care about costs and I have nothing but time to waste or I want to learn about the backend of the systems involved. I'll pay for my own VPS/homelab, electricity, manage the OS, manage app updates, figure out how to make the apps talk nice to each other, create my own beautiful frontend.
I know how much my time is worth, does that reddit poster know how much their time is worth? Without knowing what you are worth, you can't make effective capital expenditures with respect to the time it will take to recoup the capital.
I know I don't need elfhosted at all for my use case. I choose to stay with elfhosted because it's my 'easy button'. It's an efficient capital expense for the amount of time it saves me managing my own hardware, apps and saves me electricity costs. I'm also in a situation where I don't have upload bandwidth from my home to serve HD content to myself remotely. If I lived back in a city, I would still be here. My time is worth $$/hr.




@cobra2 (Discord)
"Just wanted to check in here and let @Darth-Penguini and anyone/everyone else know...WOW. I have been struggling with storage for years, maintenance of Docker containers, upkeep, all of it. Elfhosted is so freeing. It's an amazing service that I hope to be a member of for a long, long time!"




@Fingers91 (Discord)
"I would recommend ElfHosted to anyone. It has been great so far and made life a lot easier than running my own setups. If you’re in the fence give them a try and help support this great community."




Zestyclose_Teacher20 (Reddit)
"thanks for the help and must say this is the best host I every had for my server 🙂 10/10 🙂 All other places I have try have I got a lot buff etc. Your host can even give me full power on a 4K Remux on 200GB big movie file . That's damn awesome 😄"




@tjelite (Discord)
"What an amazing support system these guys have Chris and Layzee i think it was! Both are very patient with me even though I am a newbie at all this. Very thorough and explained everything step by step with me
I couldn’t ask for anything better than the service I have received by these guys! Happy happy client❤️"




@dead.potahto (Discord)
"Very happy customer. Great service"




@ronney67 (Discord)
"Very good customer service, frequent updates, and excelent uptime!!!!!"




@ed.guim (Discord)
"I had my own plex-arrs setup on hetzner for years. Yesterday I deleted everything as elfhosted has gone above and beyond it. And it has a fantastic, active community as well! Very friendly, helpful and like-minded folks always willing to help and improve the system. Top notch!"




@alon.hearter (Discord)
"Absolutely Amazed with the patience and professionalism of all Elf-Venger Staff including bossman penguin❤️"




@dead.potahto (Discord)
"@BSM went above and beyond to make sure I had all the one on one support needed with my sub. Thank you for your patience! Elfhosted continues to be Elftastic !!"




@bfmc1 (Discord)
"really enjoying the service from elfhosted. The setup is really easy from the guides on the website. And the help on the discord channel is really quick."




@jrhd13 (Discord)
"Support is amazing, and once you find a setup which works best for you it works perfectly, very happy 😊"




@fiendclub (Discord)
"great fast service, resolved my problem and really friendly"




@allan.st.minimum (Discord)
"Great service and sorted out a billing issue super quick and easy."




@scottcall707 (Discord)
"Very friendly support, resolved a problem with my account! I also appreciate the community that has been built around the service!"




@leo1305 (Discord)
"excellent customer service and very fast replies"




@yo.hohoho (Discord)
"Loved the simplicity, experience and support"




@y.adhish (Discord)
"Very friendly help as always, problem solved, one happy elf here!"




@badfurday0 (Discord)
"Great Helpful and Fast support. Thanks!"




@.mxrcy (Discord)