GitHub: https://github.com/daya0576/nightwatcher

Background

As a first-time parent, to reduce anxiety, I set up two cameras for quick glances:

  • A room overview camera (Tplink IPC45AW)
  • A dedicated baby monitor (Aqara G100)

Both cameras have been integrated into HomeKit and shared with my family (through Home Assistant ONVIF)

Constraints

The user experience of HomeKit was frustrating for several reasons:

  1. Performance Issues: High latency and frequent freezing, taking 2-3 seconds to load screenshots and stream video. And the image quality is limited to low resolution.
  2. Cross Platform Support: HomeKit only works within Apple ecosystem, so it’s impossible to view all the cameras at the same time on my Android tablet.
  3. Privacy & Extensibility: Both of the montors provide advanced AI detection features, but the streaming must be processed through the cloud with unknown algorithms.
  4. Simplicity: Tried several existing open source solutions, but they are a bit too complex and put me off.

Fortunately, both cameras support RTSP (Real Time Streaming Protocol) for video stream consuming.

The Solution: Night Watcher

Nightwatchers? The name comes from the lateest DLC of my favorate game “Against the Storm”.

Due to these limitations, I decided to create a micro web-based IP camera viewer: https://github.com/daya0576/nightwatcher

  1. Performance: Blazing fast without any delay.
  2. Cross Platform Support: Works on any device with a browser.
  3. Privacy & Extensibility: Local models and custom detection support.
  4. Simplicity: Minimal navigations and css styles.

Demo

2025-08-27 19-19-26.2025-08-27 19_24_27

Interesting story

My sweet got recognized as an apple by YOLO 🀣🀣🀣:

Next…

  • PWA web app
  • Dockerlization
  • User friendly custom detection pipeline
  • Refine camera configuration
  • Train a YOLO11 model on my custom dataset

Final words

As a full-time parent, I created this small project as a toy during my baby’s nap times. It works wonderfully, and my wife quickly took to it :p

I hope you enjoy it and feel free to contribute.

4DD287FD-24AB-4564-ADD5-1E4D1D0AD86D_1_102_o