nostream — a production-ready Nostr relay. Your relay, your rules.

/hero · nostream 3.5.1

01 Who it's for

One relay. Three ways to run it.

Whether you are opening a relay to everyone, charging for access, or keeping it private, nostream ships the knobs you need, without forking.

PUB 01

Public relay operators

Serve the open network without getting flattened by it.

  • Handles floods of traffic without slowing everyone else down
    Sliding-window rate limits with backoff hints clients can respect
  • Blocks spam before it lands, without turning people away
    Adaptive proof-of-work, event size and created_at limits
  • Grows with your audience by adding more machines
    Horizontal workers with Redis fan-out
PAID 02

Paid relay operators

Turn a relay into a service. Admission fees settle over Lightning.

  • Get paid the way you already do
    ZEBEDEE, Nodeless, OpenNode, LNbits and LNURL processors
  • Invite-only groups and member checks, built in
    Admission checks and NIP-43 invite codes
  • Set your own prices and member lists
    Admission fee schedules with pubkey whitelists
SELF 03

Self-hosters

A relay for you, your family or your community, on your own box.

  • One command and you are running
    nostream start, with Tor, I2P or nginx + certbot
  • Your posts stay yours — copy them out any time
    Import and export events as JSON or JSONL
  • You decide who can post and who can read
    Restricted kinds, pubkey allow lists and NIP-42 auth

02 Feature pillars

Everything a relay needs. Nothing it doesn't.

Protocol breadth, network reach and the ops tooling to keep it healthy, in one codebase you can read.

NIP

Speaks the whole protocol

Works with the Nostr apps your people already use — chat, feeds, search and encrypted groups — with nothing to configure.

25 NIPs implemented relay-side, from basic flow to auth, counts, search and encrypted payloads, plus Marmot MIPs 0–3 for E2EE group messaging.

NET

Reachable from anywhere

Publish an .onion or .i2p address with a flag, so people on censored or privacy-first networks can still reach you.

nostream start --tor --i2p, then nostream info --tor-hostname.

OPS

Stay on top of your relay

See how your relay is doing at a glance, spot trouble before your users do, and change settings without fear of breaking things.

Live metrics, NIP-66 network health, NIP-11 mismatch warnings and a validated settings editor.

LN

Charge for admission

Turn publish access into a service. Invoices settle over Lightning with the provider you already run.

Invoices via ZEBEDEE, Nodeless, OpenNode, LNbits or any LNURL-verify provider.

LIM

Keeps abusive traffic out

Keeps spam and abusive traffic from slowing the relay for everyone else, so normal clients stay fast.

Rate limits, adaptive proof-of-work, kind and size rules. Clients get a rate-limited hint with a backoff.

I/O

Your data, portable

Take your events with you. Back up, migrate, or seed a new relay whenever you want.

Import and export events as JSON or JSONL in batches.

$ nostream export --output backup.jsonl --format jsonl

03 Admin & observability

Know what your relay is actually doing.

A built-in console for operators: no SSH, no SQL, no guessing at 3am.

  • Login-gated so only you can reach it
  • Plugs into the monitoring you already run
  • Health endpoint for load balancers and zero-downtime deploys
  • Self-hosted probes, labelled as one monitor among many

Ship it

Run your own relay tonight.

Clone, set a secret, start. Docker Compose does the rest.

# clone and configure
$ git clone https://github.com/cameri/nostream.git && cd nostream
$ echo "SECRET=$(openssl rand -hex 128)" > .env
$ pnpm add -g . && nostream start