New project just released: Compass 🧭 For a long time I've wondered how bad things would be if @PABLOF7z's wss://purplepag.es relay went down, since it's the only dedicated kind 10002 indexer I'm aware of, and is heavily relied on for bootstrapping user relay selections, which is a key part of keeping nostr decentralized. So I stood up another one at wss://indexer.coracle.social. Regular users don't need to do anything, but I encourage client developers to add this to your list of relays you check for NIP 65 kind 10002 relay selections. I've also open-sourced the project at so anyone who wants to can run their own. The project also supports mirroring other indexers via `strfry router`, but I have left that as an opt-in feature. Unless you expect significant load on your indexer, mirroring would only increase the number of unnecessary connections made to other indexers, so please be considerate when setting up mirrors.

Replies (32)

Does it store kind 10002? Because that should really be the thing that gets indexed, rather than profiles (although that's also helpful). Also, I'm not sure what you mean by lightweight, a blossom server is out of scope for what I'm trying to do. Although the fact that it's dockerized does make it easier to deploy.
yes. it stores: 0,3,10002. also, blossom server can be disabled. its just an additional option. if more people who run this relay think this is not useful we can simply remove it. it even discovers kind 5s (in future 62s) to respect deletions of profiles or account vanish requests. also, the reason that it's lightweight is because its based on khatru. and yes. docker makes it easy to run. you can replace it or just use it beside your current relay to see how they perform. 🫡🚀
also, pages domain specific relay is managable using nip-86. you even receive reports for example because of impersonation and then you can blacklist them. it can even be more improved. for example if the report is from admin, it will take the action itself rapidly.
I am using router to sync with purplepag.es and relay.nostr.band, so it should be reasonably complete. I'm using supported_nips = [65] to signal this, but it wouldn't hurt to be more explicit
How much space does this take up on disk? I imagine it is still relatively small, right? Would this be something a mobile relay could index, like Citrine? Maybe not index all pubkeys’ 10002s, but an extended WoT, like follows, their follows, and one more layer deep of follows. We’d end up with something similar to a DHT, but with each mobile relay only indexing the 10002s of those they are likely to want notes from regularly, so they have to make requests to the larger indexers far less often. Am I crazy here @greenart7c3?
most relays on ddsrs and alienos relay: are supporting nip-86. if you run them, you can use it. about nip86 client, we have nak: gui client? we don't have any. i had a project called mangostr: https://github.com/dezh-tech/mangostr but i don't have enough time to work on it and i wasn't able to receive a grant for it so i put incentives for more devs. then it's abandoned at least for now. you may want to develop yours. 🫡
This is good, I have found multiple instances of some users relay list not found in purplepag.es, I have came up with purpagepag.es, user.kindpag.es, relay.nos.social and relay.nostr.band as "bootstrap" user relays, and believe me, it's somewhat not enough, the other day I was trying to find a relay list of a particular user across 30+ popular relays until I eventually gave up, but primal somehow managed to find it like magic in their UI.
💯💯💯 What about other lists defined in nip51? Ive noted down a todo to setup an relay on nip51.nostrver.se and happy to mirror when it’s up
Lists should live on the user's outbox relays, the goal of compass is to have the minimum setup that allows for finding the correct relays to query based on the outbox model.
A relay that hosts as many kind 10002 events as it can find, and only those. This is necessary for bootstrapping relay selections.