vishwas@guardian:~$ ./privex --watch --case 02/11
[ OK ] mounting /dev/screen …
[ OK ] loading yolov8n.pt — window detector
[ OK ] easyocr ready · track-id cache warm
[ OK ] langgraph: memory | firewall | phishing | chat
[WARN] risk engine is deterministic. LLM is not in charge.
PRIVEX_
> A desktop AI guardian. The LLM suggests — code decides.
A Windows 'AI guardian' that watches the screen, blacks out like and while you're in a , builds a searchable of what you've been doing and checks text for — all routed through an agent graph where a deterministic risk engine, not the model, decides what needs .
THREAT MODEL: Agentic AI with access to personal data is risky when the model controls execution — and secrets leak through screen-sharing every day.
A Node agent screenshots every second, downsizes to 1280px and posts it with active-window metadata to the core.
YOLOv8 finds windows; each tracked window is cached as SAFE, SECRET or PENDING, and OCR runs only on new crops.
Trigger words mark a window SECRET; if a call is active, a click-through overlay draws black bars over it.
OCR text becomes one-line memories in pgvector, entities go to Neo4j, and a nightly cycle consolidates and purges.
A LangGraph router picks the memory, firewall, phishing or chat agent; a hard-coded risk node sets approval, and every event lands in a hash-chained audit log.
# LLM ROUTES, CODE DECIDES """ The risk engine is a hard-coded table — the file literally says “NEVER USE AN LLM HERE”. """open privex-core/core/graph.py ↗
# TRACK-ID CACHED OCR """ YOLO runs every frame, but OCR only re-runs for new or changed windows, throttled per window. """open privex-core/services/frame_worker.py ↗
# CLICK-THROUGH OVERLAY """ An always-on-top transparent window using Win32 styles, gated by meeting detection from window titles and the mic/camera registry. """open privex-core/os_integration/overlay.py ↗