AI phone-detection for exams and secure areas. Vigil watches your cameras (webcam, phone, or CCTV), flags phones in real time, and alerts a person — with a cropped photo and the location — for them to confirm. Everything runs on your own computer; your video never leaves the building.
Vigil is a native desktop app — it opens in its own window. No Terminal, no
browser, no localhost to type.
Download it and open it:
- macOS — download
Vigil.dmg, open it, drag Vigil into Applications. First launch: System Settings → Privacy & Security → Open Anyway (a one-time step for unsigned apps). - Windows — download
Vigil.zip, unzip, run Vigil.exe (SmartScreen: More info → Run anyway).
First launch prepares the AI on-device, then asks you to create an admin account. Full step-by-step: see INSTALL.md.
Check for updates any time from Settings → Updates.
Running from source instead? The
Vigil.command(macOS) /Vigil-Windows.bat/Vigil-Linux.shlaunchers set up a venv and run the server. To build the native app locally, seedesktop.py+vigil.spec(PyInstaller). CI builds and signs installers in.github/workflows/release.yml.
- Live monitor — many cameras at once, phones boxed in real time (with tiling for spotting phones far away).
- Alerts — a phone triggers an alert card with a cropped photo + location; a human clicks Confirm or Dismiss (the AI never accuses on its own).
- Evidence log — a searchable, timestamped history for disputes.
- Accounts & roles — admins manage cameras and users; invigilators just receive alerts.
- Notifications — an in-app notification centre groups new detections; alerts never interrupt the live view.
- Fast to drive — command palette (⌘K / Ctrl-K), keyboard shortcuts (press
?), evidence multi-select + CSV export, light/dark themes.
Add a camera from + Add camera: leave the address blank for this computer's webcam, or paste a stream URL:
- Phone (test): the free IP Webcam app →
http://<phone-ip>:8080/video(phone and computer on the same WiFi). - CCTV: an
rtsp://…URL from the camera.
Vigil ships with a solid general model. To make it sharper for your cameras and stop specific false alarms, fine-tune it on your own footage — see FINETUNING.md.
CONFIDENCE, REQUIRED_HITS (false-alarm control), IMG_SIZE, TILING /
TILE_COLS / TILE_ROWS (range vs speed), MODEL_NAME (which model to use).
It's a FastAPI + Ultralytics YOLO + OpenCV app (app.py), SQLite for the evidence
log and users. Run directly with:
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python -m uvicorn app:app --port 8000Runs on Apple Silicon GPU (MPS) automatically when available.
AGPL-3.0. Vigil's detection is built on Ultralytics YOLO, which is AGPL-3.0 — strong copyleft, so the combined work is AGPL-3.0 as well. In practice: anyone who receives a Vigil build is entitled to the complete corresponding source under the same terms, which is why this repository is public.
Licences for every bundled component are listed in THIRD-PARTY-NOTICES.md.