Skip to content

Nostr relay

A relay stores events and hands them to whoever asks. Armada’s communities ride across relays gift-wrapped, so a relay carrying yours holds sealed envelopes addressed to nobody it can identify — and it is not the only one holding them.

Any Nostr relay carries an Armada community. nostr.watch lists hundreds, run by people who have never heard of yours, and a community spread across a few of them survives any one of them going down.

Running your own does not make the community yours, faster, or more private. It adds a machine you now have to keep online, and if you point your members at only that machine you have rebuilt the single point of failure you left Discord to escape.

The good reasons are the public ones: the network is made of relays, and there are not many operators. Run one because other people’s events should have somewhere to go.

Soapbox runs ditto-relay: AGPL-3.0, written for Bun, storing events in OpenSearch. It is the heavy option — full-text search (NIP-50), negentropy sync (NIP-77), expiration, protected events, Prometheus metrics — and it is what relay.ditto.pub is.

If you want a relay rather than a search engine, the small implementations are the better first box: strfry (C++, LMDB, runs on almost nothing) and nostr-rs-relay (Rust, SQLite) both carry Armada traffic without a cluster underneath them.

Users add relays under Settings → App relays, and that list is theirs. To ship a default with a client you host, build with VITE_APP_RELAYS — see the web app’s configuration.

Note what the app relays are actually for: profiles, lists, and other ordinary Nostr traffic. A community’s own traffic follows the relay list that travels with its invite — Settings → Community relays — so adding a relay to the app list is not how somebody joins your community.

Every client on Nostr benefits from a relay that stays up and takes anonymous reads. Yours does not have to be big, and it does not have to be about Armada.

$ keep a light on