That's Chaco. He's live right now (probably sleeping).
How we got here
I bought a Wyze Cam v4 a while back for checking in on the boy when we'd travel. Pretty standard pet owner stuff. The camera sat on a shelf in the living room, and it was fun to occasionally get the "Pet detected" push notification on the Wyze app to know the boy was still alive.
Then last week Chaco fell off our balcony on the 3rd floor and broke a bunch of bones. He broke his pelvis in 2 places and shattered both ankles.

The vet told us strict cage rest for 8 weeks. And for the first few days this was easy. He was still pretty conked out from post-op meds and recovering quietly. But then his will to live overpowered the sedatives.
One thing that kept happening was the bandages on his legs would fall off. Without them, his ankles arent' protected and can't heal properly. And it was driving us crazy because every time this happened we'd have to drive to the hospital immediately to get new splints and bandages.
At the height of this, we visited the ER 6 times in 5 days. There was one day in particular where he kicked it off Sunday morning, Sunday evening again at 11pm, and then Monday morning at 5am. Safe to say the staff at SAGE know us very well at this point.
That's when the camera we barely used became the most important thing in the apartment.
We moved it right above the cage to start monitoring him 24/7. Every time he shifts, every time he tries to stand, we can see it.
See we originally thought he was kicking the bandages off. But nothing during the day suggested that. So on that Monday morning, we looked at the footage around 5am and confirmed a different story: the bandages were getting caught under his own weight when he tried to flip sides in the middle of the night, presumably because one side would get sore.
This unlocked a lot of "debugging" we could suddenly do with the setup. We switched to a smaller cage. Change his medication schedule. Took out the bed with high walls.
A lot of the stories were also hilarious and at one point someone said they would pay to see a livestream. That's how ChacoCam was born.
The setup
The key for this was no extra hardware. I wanted to see if we could just do this with the camera I bought. After some research, we found an open source project called docker-wyze-bridge that connects to Wyze cameras and re-streams them.
The thing about Wyze cameras is that they use a proprietary peer-to-peer protocol called IOTC to communicate. The bridge software needs a native Linux library to speak this protocol — there's no macOS version. And Docker Desktop for Mac runs containers inside a hidden Linux VM that can't reach devices on your local network.
So you end up in this weird situation where all the components are there but they just can't talk to each other.
Here's everything we tried:
-
Docker with port mapping — Container starts, sees the camera in the Wyze API, tries to connect...
IOTC_ER_TIMEOUT. The Docker VM's NAT network can't reach the camera's P2P protocol. -
Docker with
network_mode: host— On Linux this gives the container real network access. On Mac, "host" still means the Docker VM. Same timeout. -
NET_MODE=LANandIOTC_FORCE_CLOUD— Various env vars to force different connection modes. None of them can overcome the fundamental networking limitation. -
Running natively via pip — No pip package exists. Tried running from source but the native
.solibrary is Linux-only ELF binary. Dead end. -
Lima VM with bridged networking — This one finally worked. ✅
Lima is a lightweight Linux VM manager for Mac. The key difference from Docker Desktop is that Lima supports bridged networking through socket_vmnet, which gives the VM a real IP address on your actual WiFi network. So instead of being trapped behind Docker's virtual network, the VM sits on the same subnet as the camera and can talk to it directly.
Boom.
The final architecture:
Mac (192.168.4.48)
└── Lima VM (192.168.4.51) — Ubuntu, bridged to WiFi
└── Docker container — wyze-bridge, host networking
├── P2P connection → Wyze Cam (192.168.4.31)
└── RTMP push → Twitch (sfo ingest server)
It took about 2 hours to get everything working. Setting up Lima, installing socket_vmnet, configuring bridged networking, dealing with sudoers permissions, copying the Docker compose files into the VM — a lot of little things that each took a few minutes to figure out.
Try it out
I open sourced the entire setup here: github.com/douglasqian/wyze-twitch-stream
It includes setup scripts for both macOS and Linux, a full README with troubleshooting, and even a section specifically for AI agents so your coding assistant can set it up for you.
All you need is a Wyze camera, a Twitch account, and a computer that stays on. If you're on Linux or a Raspberry Pi, it's literally a one-command setup.
Final thoughts
I'm sharing this for mostly 2 reasons:
- If you are a pet parent dealing with post-op care, effectively monitoring your pet is probably also driving you nuts. Set this up. Trust me - it helps.
- Maybe Chaco will get famous through this. I wouldn't mind some ads paying down the insane medical bill. Luckily pet insurance will cover a lot of it, but trust me you don't want to know.
All in all what matters is that Chaco is doing well. 7 more weeks of cage rest to go. Tune in to twitch.tv/chacocam and keep him company.