- Python
- FastAPI
- YOLO
- WebSockets
- Vue
Cyrys
Face detection, person tracking, identification, and automated watchlist monitoring, built as Python microservices.
Cyrys reads a video stream, detects and tracks people in it, identifies faces against stored embeddings, and checks what it finds against a watchlist. The system is in active development, and most of the work so far has been architectural: making a pipeline that has to keep up with a live stream actually keep up with it.
The service count came down from 20 to 12. The reduction came from removing redundancy and improving parallel processing, and it had a second effect that was not obvious up front: fewer services writing to disk at the same time meant less lock contention between them.
Three separate deduplication systems (face-based, automatic, and profile-enhanced matching) were merged into a single service behind one API, without giving up profile-based matching accuracy. Watchlist monitoring moved into the stream-processing pipeline itself, with automatic face checks, live alerts over WebSockets, and cooldowns so a single subject cannot flood the alert channel.
The largest real-time win was moving face processing off the main detection thread and onto asynchronous processing. Throughout the refactor, the public API stayed compatible, with backward-compatible endpoints and migration guides.
- 20 → 12 services
- 3 → 1 deduplication systems
- Live WebSocket alerts
- Async face pipeline