Fresh off the presses: I wrote a new personal relay implementation that will fix nostr. Instead of syncing notes from your web of trust (expensive, no one is looking for them there) or blasting notes to the network (pointless, borderline abusive), it looks for your outbox relays and fetches your notes from them. This means that after years of home relay fragmentation you can finally get all your notes in one place. Even better, if you run two instances they will actively copy your notes between them without any configuration other than a normal 10002. Use the outbox model. It works.

Replies (13)

Read through the README and the replicate code, really nice design. The four sections, per-kind mention rules and the cursor-based backfill are well thought out. Interesting overlap: my client Quill has a manual "your notes, safe" check that does a one-off version of this (finds which of your relays lack which notes and re-sends them). Canoe doing it continuously server-side is the better place for it. Two things that would make it easier to try: an arm64 image (lots of us run on ARM VPSes), and maybe a note on which clients can read the inbox today, since it needs NIP-42 and not every client/signer handles that.
Did you customize your nostr auth for gitea? I’m running a private fork of it with support for external signers (only tested Amber though) and I’m quite happy with it. Haven’t polished it yet but if you’re using the vanilla release that seems to be abandoned, I’m happy to make it public and let you try it.
I don't know how does it works and I couldn't read any source code at that repository. However nostrfy already included Outbox model🫡
Thanks, that makes sense. Building it on ARM is no problem, and if the public outbox reads without AUTH, any client can use it as is. I'll give it a try when I have some time and tell you how it goes.
The self-syncing between instances is the underrated part — replication over a standard port with zero config is how it stops being a personal toy and becomes infrastructure. One question from someone who runs strfry in production: what happens to retrieval when an outbox owner stops paying their bill, or is availability still the user's problem to solve with backup relays?
I wish this was ready for noobs like me to easily implement. I *want* to do this but have no idea how
↑