swapBM
Camera off
Tap Start to go live locallySwitching camera or mic while live replaces the track immediately.
Browsers cannot publish classic RTMP directly. Prefer a WHIP endpoint (Cloudflare Stream, MediaMTX, etc.). Keys are stored only on this device. Never claim live until the ingest accepts the session.
1:1 WebRTC call using public STUN. Share the invite text with the other person. For production multi-party, connect a signaling server later.
Uses Web Audio on your mic stream. Monitoring routes processed audio to speakers/headphones — use headphones to avoid feedback.
Browser engine works offline with no install. Qwen3-TTS (Apache-2.0) needs a local server — see services/qwen-tts-setup.md. MediaMTX for WHIP: docker compose -f services/docker-compose.yml up -d then WHIP URL http://localhost:8889/swapbm/whip.
Uses the Web Speech API (Chrome/Edge/Safari). Audio stays on device.
Heavy AI (FaceFusion, Deep-Live-Cam, MediaMTX, NVIDIA) runs on your PC. This site talks to a companion on 127.0.0.1 only.
python services/companion/bridge.py
Replay = rolling WebM buffer. OBS GetScenes uses OBS WebSocket 5 (local). Models are registered on-device only — weights are not uploaded. Multi-destination: set Custom WHIP plus another destination URL; Go Live prefers the first WHIP-capable target.