I’ve been building an experimental nostr relay with the goal of improving bandwidth efficiency and performance of nostr clients. the idea is simple: instead of connecting the phone to a dozen relays and deduplicating events locally, push that logic into a “proxy relay” in the cloud. - duplicate events are never sent to the client, improving both bandwidth usage and performance - the proxy maintains a local database of events to further speed up queries - your client IP address is only visible to your proxy, not the upstream relays - you can define separate upstream read and write relays - nip-42 + allowlist auth to optionally restrict access if you look at my set of relays you’ll see I’m only connected to one - that’s my private relay proxy. I’ve been using this setup with damus for the better part of a week and so far so good. the code is free and open source at https://github.com/bndw/nostr-relay-proxy
how do we tap into this is we can yet
This is the future
This sounds awesome. It seems like this could solve so many problems (most of which you listed in your post). Have you seen any issues with it in your week of usage?
the main issue I’m tracking is related to the 3rd party lib I depend on for the lmdb, and I’ve only seen it pop up on a fresh openbsd server. I think the os is missing an expected c lib. sometimes I notice the main timeline in damus seems to stop receiving new events after a while and I simply relaunch the app. I’m not sure where that is being caused. if you give it a try let me know what you think!
If wanted to run this now on my own vps, would it work? Any major downsides or issues you have experienced?
nope, I think you nailed the next set of challenges. the static relay list works fine for me in single player mode, but I’m not sure the best solution to make it dynamic. afaik a pubkey only defines one relay list? as for auth I’m not sure the best approach, I’ve yet to play with any of the remote signing solutions that have emerged