WebRTC signalling over the existing chat socket, keys derived from the Signal session, and an SFU that forwards frames it cannot read.