
Blob.slice() and a generator, so a multi-gigabyte file streams with flat memory use.bufferedamountlow, with at most 8 shards in flight. Without this, a large file kills the tab.paired · direct or paired · relayed.paired · direct means the file went straight between the devices; paired · relayed means its encrypted packets passed through the TURN server. Only relayed transfers count against the TURN quota.max-message-size: 262144 in Chrome, and other browsers differ, so shards (256 KB–25 MB) are cut into frames sized from pc.sctp.maxMessageSize at runtime.GET /turn, which mints short-lived credentials from the provider and is CORS-restricted to the site. The TURN server forwards DTLS packets it cannot decrypt.VITE_SIGNAL_URL is inlined at build time, so it must exist in the build environment before the build runs.npm run turn:check https://<relay-host>/turn. It gathers ICE with iceTransportPolicy: "relay", so only candidates the TURN server itself issued can appear, and says which layer failed if none do: hostname resolution, blocked UDP, or refused credentials.fileId, were written by hand. The transport layer (framing, storage, transfer state machine), the relay, the deployment and the UI were written with AI assistance, reviewed and tested, and hardened against the bugs that real devices and real networks turned up; the design decisions and trade-offs in docs/decisions/ are documented as they were reasoned through.Posted Sep 23, 2026
Developed Shardrop, a secure browser-based file transfer tool using WebRTC.