For about 3 years, I self-hosted my security camera system on the Synology surveillance station. It fit a lot of my needs, but I hated the hardware lock in. I was getting more and more frustrated with Synology's behavior, but I didn't find any alternatives I liked better.
So on Christmas 2025 I decided to put Claude Code to the test. I fully transitioned to this about two weeks later. I've been running 14 IP cameras doing 24/7 recording with live streaming and ML-powered detection.
The stack is FastAPI + React + PostgreSQL, orchestrated with Docker. Video is handled by FFmpeg with a single process per camera that does both live HLS streaming and MP4 recording simultaneously, so you don't burn multiple RTSP connections per camera.
It runs YOLO11 via ONNX Runtime on live HLS segments (no extra RTSP connections needed), uses background subtraction to skip static frames, and has a finite state machine that tracks object arrivals, departures, and state changes rather than just firing "person detected" over and over. Each event gets a snapshot with bounding boxes and an extracted video clip. There's also a Vision LLM integration that can describe what's happening in a scene.
Storage uses a tiered system (hot/warm/cold) with automatic migration, so recordings age off from fast local storage to larger drives and optionally to S3 (that part is still in-progress).
It supports GPU acceleration but also runs fine in CPU-only mode.
I know nothing about React, I've never been a front-end developer, so that's 99.99% Claude. I have edited some CSS though. I've personally done more work on the backend, but it's still mostly Claude. This is currently running behind my home VPN only, so the user management/authentication is kind of weak at the moment. I'd love feedback!