Floonet
Floonet is a network of Nostr relays for the Grin community. Anyone can run one, and anyone can run a name authority on one so people can claim (and optionally pay for) a name.
A Floonet relay is an ordinary Nostr relay with strong opinions. It stores only the handful of event kinds the Grin ecosystem actually uses, it says nothing about payments in its public metadata, it welcomes connections arriving through the Nym mixnet, and it ships hardened by default. Wallets like Goblin use Floonet relays to deliver gift-wrapped Grin payments and to resolve names like alice.
The two packages
Floonet ships as two relay packages. Both carry the same conventions; pick the one that fits how you like to operate.
| Package | Base | Shape |
|---|---|---|
| floonet-strfry | strfry (C++) | Stock strfry at a pinned ref plus a spec: a modular write-policy plugin, a bundled name authority, and a TLS proxy, deployed as one Docker Compose unit. |
| floonet-rs | nostr-rs-relay (Rust) | A single binary with an installer and a hardened systemd unit. Policy lives in a composable admission module; the name authority and the GoblinPay payment processor are built in. |
Both add the same four features, each configurable, optional, and modular:
- An event-kind whitelist (the keystone: default deny, see below).
- Authentication: NIP-42 plus pubkey whitelists.
- Paid access and paid names via GoblinPay (Grin).
- A name authority: the NIP-05 service that maps names to keys.
The whitelist keystone
The single most important design decision in Floonet is default deny. A Floonet relay accepts only the event kinds it has been explicitly told to allow, and drops everything else. The initial allowed set is exactly what a Grin payment wallet needs:
| Kind | What it is |
|---|---|
0 | Profile metadata |
3 | Contact list |
5 | Deletion request (NIP-09) |
13 | Seal (NIP-59) |
1059 | Gift wrap (NIP-59): the sealed envelope payments travel in |
10002 | Relay list (NIP-65) |
10050 | DM relay list (NIP-17) |
27235 | HTTP auth (NIP-98): used by the name authority |
Everything else, notes, reactions, long-form content, is rejected. This keeps a Floonet relay lean, cheap to run, and uninteresting to abuse. The list is one editable config value in both packages, so it can grow later without code changes. See The whitelist: default deny.
How to read these docs
- Concepts: the ideas every operator should know, whichever package they run.
- floonet-strfry and floonet-rs: deploy, configure, and extend each package.
- Operate: hardening, rate limits, and charging GRIN for relay resources.
- Reference: config keys, endpoints, and the allowed-kinds table.
Where these docs cite code, they use file:line references into the package source or the pinned upstream so you can read along.