# browser demo A dedicated worker owns the wasm client; the page only sends it a URI and shows the status. This is the deployment shape: no always-on service worker, no tab required beyond the document, and closing the tab closes the relay WebSocket (which closes the bridge's node socket). ```sh make web (cd bin/web && python3 -m http.server 8080) ``` Then open , paste the gateway URI printed by `nostrino-bridge`, and sync. The gateway and relay must be reachable from the browser; `ws://` is fine for localhost, a public relay needs `wss://`. The worker is cancelled with the page's cancel button or by terminating it. The wasm build's `nostrino.cancel()` aborts the current sync; the bridge releases the node connection when the stream resets or the socket closes.