STREAMING · NOSTR

zap.stream: live streaming on Nostr

End-to-end Nostr live streaming: Rust backend core, React frontend, native app. Lightning zaps, NIP-96 media, real-time FFmpeg ingestion.

STRATUM 01OVERVIEW

zap.stream is a live streaming platform where every stream is a Nostr event (NIP-53) and viewers tip with Lightning zaps. A streamer's identity, followers and chat live on Nostr rather than in a platform account.

The server, zap-stream-core, is written in Rust. It takes RTMP and SRT ingest, transcodes with FFmpeg into several renditions, segments to HLS and publishes the stream events to Nostr. Streamers pay for transcoding from a balance topped up over Lightning.

It ships as a Docker Compose stack so anyone can run their own server, behind a public IP or a Cloudflare tunnel, and a server can advertise itself so zap.stream picks it up as an ingest option. The web client is TypeScript and React, and there is a native app written in Rust.

STRATUM 02WHAT IT DOES

Ingest

RTMP and SRT in, decoded and re-encoded with FFmpeg in real time.

Delivery

HLS segmenting with multiple renditions, served straight from the core server.

Nostr

Streams published as NIP-53 live events, with live chat and zaps on the same protocol.

Payments

Streaming balances topped up over Lightning, with pay-per-minute transcoding.

Self-hosting

Docker Compose deploy with an admin UI, Cloudflare tunnel support and server discovery.

Clients

A React web app translated on Crowdin, and a native app in Rust.

Need something like this built?

The same engineers who wrote this take on client work. Tell us what you need and you will hear back from the person who would build it.

START A CONVERSATION
STRATUM 03MORE WORK