wireweave / nostr + webrtc
npm i wireweave

nostr. webrtc. zero backend.

wireweave is the networking layer pulled out of zellous. p2p voice, chat, channels, servers, ban/role/settings — every byte moves through public nostr relays. import, wire, ship.

one package. thirteen modules.

wireweave ships as a single esm package. every subsystem is its own export so you tree-shake whatever you do not use.

npm i wireweave nostr-tools
# then in browser
import { createWireweave } from 'wireweave';
const ww = createWireweave({ nostrTools, xstate, storage, relays });

everything EventTarget, everything real.

no fake relays. no stubs. wireweave talks to live public nostr relays and live webrtc peers from the first line. the api is EventTarget all the way down so you can subscribe to any surface without owning the loop.

const voice = ww.ensureVoice();
voice.addEventListener('peer-joined', e => console.log(e.detail));
await voice.connect('general');

13 pieces, each its own file.

relay-pool, auth, fsm, voice, chat, channels, servers, message, bans, roles, settings, media, pages. open src/ — no sprawl, no monolith.