Implementations
Relay software operators actually run
Pick based on hardware, language comfort, and whether you need payments or plugins on day one. All of these speak the core protocol.
| Software | Stack | Fits | Operator notes |
|---|---|---|---|
| strfry | C++, LMDB | Public and paid relays, Umbrel | Fast, compact on disk, write-policy plugins, JSONL export, Negentropy sync. The default “boring infrastructure” choice. |
| nostr-rs-relay | Rust, SQLite | Personal relays, small VPS, Pi | Single binary, light footprint. Plan for SQLite vacuum and online backup on busy instances. |
| nostream | TypeScript, Postgres | Paid relays with admin tooling | Lightning hooks, richer moderation surfaces, heavier operational footprint. |
| khatru / rnostr / nostrd | Go or Rust, often LMDB | Custom relays, libraries | Embeddable frameworks when you want policy in code rather than a plugin script. |
| GRAIN and filter proxies | Go / sidecar | Fine-grained allow/deny | Whitelists, mute-list imports, IP cost accounting. Sit in front of a store-and-forward relay. |
Typical production box: 2+ cores, 4–8 GB RAM, SSD with room to grow, a domain pointing at a dedicated IPv4, and a reverse proxy. A $5–$10 VPS is enough for a personal relay. Public firehoses are not.