New project just released: Compass 🧭

For a long time I've wondered how bad things would be if nostr:nprofile1qyd8wumn8ghj7urewfsk66ty9enxjct5dfskvtnrdakj7qgdwaehxw309anrw73wd9hj7qghwaehxw309aex2mrp0yh8qunfd4skctnwv46z7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uqzp75cf0tahv5z7plpdeaws7ex52nmnwgtwfr2g3m37r844evqrr6j46j6hr'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 https://github.com/coracle-social/compass 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.

Reply to this note

Please Login to reply.

Discussion

Tysm for this.

no need to use strfry. pages domain specific relay is out there, a long time:

https://github.com/dezh-tech/ddsr/tree/main/pages

its much more lightweight, anyone can run one of them and the discovery part can improve more overtime.

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. 🫡🚀

Cool, sounds very good. You should add that extra info to the readme! One other question, does it mirror other relays?

what do you mean by mirror?

here is an update:

https://github.com/dezh-tech/ddsr/releases/tag/pages%40v1.0.2

readme updated.

blossom removed, moderator option added.

admins can call nip-86 endpoints. moderators can send reports (kind 1984) and relay will delete it from database rapidly.

i still believe we can improve discovery. you may want to take a look and contribute.

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.

Any good nip-86 management apps? id like to try and setup a relay that supports it and play around with it

most relays on ddsrs and alienos relay:

https://github.com/dezh-tech/alienos

are supporting nip-86. if you run them, you can use it.

about nip86 client, we have nak:

https://nak.nostr.com

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. 🫡

ddsr looks really cool, ill have to try to run a few relays

thanks a lot. yes, of course. you can try them. 🫡

nak

Thank you for building this, now running https://profiles.nostrver.se/ 💯

Oh, your welcome. 🫡

I'm glad to hear you are using it. I appreciate any kind of feedback and feature requests. 🚀🤝

I'm not a Go expert, but I've played with Khatru in the past.

All adjustments I'm pushing to this repo for now: https://github.com/nostrver-se/ddsr/tree/main/pages

Great! Feel free to make a PR as well. Or I can just add them myself.

i too mirror purplepag.es on profiles.nostr1.com. the question i have for you and pablof, are you using router to grab from 'the big relays'? or just organic (inbound connections only).

it would be good to put some tags in our nip66 for this kind of relay so that a nip66 can return a set and help decentralization.

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

That's awesome, thanks!

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 nostr:npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5?

Each event is about 500 bytes, so to index all 100k 10002s on purplepag.es would only take around 50 megabytes, so yeah, totally doable

That's wild... A mobile relay could easily index all the pubkeys the owner would ever care about.

oh. maybe ill run one at indexer.nostrelites.org. thank you sir.

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.

The magic of indexing every discoverable relay in existence.

💯💯💯

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.

Ok that makes sense yes 💯

[insert rant about DHTs]

What is the definition of an indexer?

A relay that hosts as many kind 10002 events as it can find, and only those. This is necessary for bootstrapping relay selections.

Beer sometime this week?