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

/hero · nostream 3.5.0

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.

  • Sliding-window rate limits with backoff hints clients can respect
  • Adaptive proof-of-work, event size and created_at limits
  • Horizontal workers with Redis fan-out
PAID 02

Paid relay operators

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

  • ZEBEDEE, Nodeless, OpenNode, LNbits and LNURL processors
  • Admission checks and NIP-43 invite codes
  • 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: nostream start, with Tor, I2P or nginx + certbot
  • Import and export events as JSON or JSONL
  • 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

Protocol breadth

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

Tor & I2P built in

Publish an .onion or .i2p address with a flag. nostream start --tor --i2p, then nostream info --tor-hostname.

OPS

Admin console

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

LN

Paid admission

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

LIM

Limits that hold

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

I/O

Your data, portable

Import and export events as JSON or JSONL in batches. Back up, migrate, or seed a new relay.

$ 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 with IP allow lists and rate limits
  • Prometheus-compatible metrics and OpenTelemetry hooks
  • /readyz for load balancers and blue/green 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