← Back to the workshop
Everyday tools

Home Monitor

Your home cameras, with familiar faces recognised on your own server and a calm timeline of who came by.

Home Monitor is self-hosted: each person runs their own private copy.

The overview, with alert settings, camera status counts, and snapshots from three demo cameras

About The App

Home Monitor is a self-hosted view of your home cameras. A small collector next to the cameras samples their snapshots and sends frames when something moves. Your own server then looks for people and faces, and shows the results in an installable web app, with a timeline of the day.

Continuous video stays on the cameras’ SD cards; the server keeps only selected snapshots. Person and face recognition run on the server’s own processor, so no outside service ever receives your images.

Recognition is an estimate. Home Monitor matches faces conservatively and leaves unclear ones unidentified, but it does not check that a face is live, guarantee an identification, or follow a person from one camera to another. Enrol only people who agree to it, and check unexpected matches yourself.

Gallery

The scenes, people, and events in these screenshots are generated by the app’s demo; no real camera images are used.

How it works

  1. Collect next to the cameras. A small machine near the cameras checks each one’s snapshot every two seconds, and uploads frames only when something moves, plus one every 15 seconds.
  2. Recognise on your server. The server finds people and faces on its processor, without a graphics card, and compares faces with a private library of the people you have enrolled.
  3. Review in the app. The installable web app shows the latest snapshots, who was recognised, and a timeline of the day for each camera.
  4. Get a discreet alert. Optional notifications say only that something happened, with no image or name, and can be snoozed on every device at once while you are in the yard.

Features

  • Familiar faces: Enrol people with their consent, and each event is marked as recognised, as an unrecognised face, or as a person whose face could not be seen clearly.
  • A day at a glance: The activity timeline shows each camera’s events through the day, filtered by camera, result, and time, next to the periods when a camera was offline or alerts were snoozed.
  • Alerts that give nothing away: Push notifications are encrypted and contain no images or names. You can be alerted only for unrecognised faces, and snooze alerts on all devices at once.
  • Invitation-only access: Each phone or computer is activated with an invitation and can be revoked at any time. For now, every invited device has full access, including the face library.
  • Storage that stays small: Events are deleted by age and by total size, enrolled faces are kept separately, and private images never enter the app’s offline cache.
  • Try it without cameras: A local demo draws invented scenes and people, uses no real recognition, and deletes itself when you stop it.

Under the hood

Home Monitor has two parts. The collector needs only Python and Pillow. The server runs Python 3.12 with FastAPI and SQLite, and uses OpenCV and ONNX Runtime with three small models: YOLOX-Nano finds people, YuNet finds faces, and SFace compares them. It is designed for ARM64 processors without a graphics card. You and the collector reach the server privately through Tailscale; optional public access goes through Cloudflare Tunnel and a hardened Caddy listener. The project is open source under the GPL-3.0-or-later licence.