Wyze Doorbell Bridge

May 19, 2026 · View on GitHub

Offline RTSP/WebRTC bridge for the Wyze Video Doorbell Pro. Reverse-engineers the GUTES P2P protocol to stream H.264 video via go2rtc without cloud dependencies.

Requirements

  • Linux host with Docker (ARM64 native or x86_64 with QEMU binfmt)
  • Wyze account + API keys from developer-api-console.wyze.com
  • Doorbell and chime LAN IPs (find in your router's client list)

Quick Start

git clone https://github.com/carTloyal123/cryze.git
cd cryze
cp .env.example .env   # edit with your credentials + device IPs
docker compose up -d

First build downloads the Wyze APK (~400MB), extracts SDK libraries, compiles the C++ bridge, and bundles go2rtc. Takes ~3-5 minutes. Subsequent starts use cached images.

Stream Access

MethodURL
Web UIhttp://<host>:1984
RTSPrtsp://<host>:8554/doorbell
WebRTChttp://<host>:1984/stream.html?src=doorbell
ffplayffplay -rtsp_transport tcp rtsp://<host>:8554/doorbell

Services

ContainerPurpose
wyze-go2rtcStream server — launches bridge on-demand, serves RTSP/WebRTC/HLS
wyze-relayGUTES protocol relay — handles P2P signaling locally
wyze-networkNetwork intercept — ARP spoof, DNS intercept, iptables DNAT

Configuration

All settings via .env. See docs/configuration.md for the full variable reference.

Key settings in .env.example:

  • WYZE_EMAIL, WYZE_PASSWORD, WYZE_KEY_ID, WYZE_API_KEY — Wyze account credentials
  • DOORBELL_IP, CHIME_IP — device LAN IPs
  • P2P_URL — Mars server IP (|18.118.90.161 for standard, |127.0.0.1 for fully offline)

Further Reading

Development

scripts/into.sh              # Start go2rtc (dev mode)
scripts/into.sh build        # Compile bridge
scripts/into.sh run 30       # Run bridge for 30 seconds
scripts/into.sh shell        # Interactive shell in container