
Vigilo (Real-Time AI Exam Proctoring, Rust)
Webcam proctoring for online exams: flags an empty seat, a second person, a phone, a turned head, wandering eyes and a changed identity, with hold timers so blinks and glances don't become alerts. Native desktop app, demo on request.
What it does
Vigilo is webcam proctoring for online exams. It opens, turns the camera on, and watches for the things that matter during a test: nobody in front of the camera, a second person in the frame, a phone in shot, a head turned away from the screen, eyes off the screen, and whether the person sitting the exam is still the person who enrolled.
It reports violations rather than raw readings. Each one has to hold for a set time and clear a threshold before it's raised, so a dropped frame, a blink or someone glancing at the keyboard doesn't turn into an alert a proctor has to dismiss.
The source code is private. If you'd like to see it working on your own exams, request a demo below.
What it catches
- Never seen: no face at all in the first 10 seconds of the session.
- No face: the candidate leaves the frame for 2.5 seconds.
- Multiple faces: a second person stays in frame for 2 seconds.
- Head turned away: more than 30° sideways or 25° up or down for 1.5 seconds, the pattern of reading notes or a second monitor.
- Gaze off screen: eyes off the display for 1.2 seconds, measured separately from where the head points, so a candidate looking down at a phone without moving their head is still caught.
- Prohibited object: a phone held in view for a second.
- Identity mismatch: three failed face checks in a row against the enrolled candidate, about 15 seconds of confirmed mismatch, so lighting changes don't trigger it.
- Signal lost: the camera covered, blocked or frozen for 5 seconds. A proctoring tool that goes blind should say so rather than report a clean session.
Each rule carries a severity (low, medium, high or critical) so a reviewer can triage: a brief glance is logged for context, while a second person or a failed identity check is flagged straight away.
How it fits your exams
Every threshold, hold time and severity is adjustable in the app's settings, so it can be stricter for a high-stakes certification and more forgiving for a practice quiz. Changes apply on the next frame without restarting the camera, and they're saved between sessions.
Detection runs on the candidate's own machine, on the CPU. There's no GPU requirement and no video sent to a server for analysis. The installers bundle everything they need, so there is nothing else to install first. They're available for Windows (setup and MSI), macOS on Apple Silicon, and Linux (deb, rpm, Arch and AppImage).
On an Intel i7-11850H laptop CPU it checks face, head pose and gaze 15 times a second, with a median of 27 ms per check, while capturing at 30 fps.
How it decides
Five AI models do the watching: face detection, head pose, gaze, object detection and face identity. They run at different rates because they answer questions that change at different speeds. Where the eyes are pointing changes many times a second; whether it's the same person doesn't.
Detection and decisions are kept separate. The models only report what they see in each frame, and a decision layer applies the timers and thresholds. That makes the rules testable: a recorded session replays through them in well under a second with the same result every time, so thresholds are tuned against real footage instead of guesswork.
It's a native desktop app written in Rust, a rebuild of the proctoring module from DeepScreen. The browser-based version it replaced managed 5 to 12 frames a second.
Current limits
- Phones are detected reliably; books are not. Spotting a book held open needs a model trained on exam footage, which isn't built yet.
- Identity checks need a one-time enrolment at the start of each session. Enrolment isn't saved to disk, which keeps biometric data off the machine but means it's repeated every session.
- No session report or evidence capture yet. Violations are shown live; a written report per session is the next piece of work.
- x86 machines need a CPU with AVX2, which covers Intel Haswell and AMD Zen and newer. Apple Silicon Macs are unaffected.
Request a demo
Vigilo isn't publicly downloadable. If you run online exams and want to see it, request a demo through the contact form and I'll set one up. The message is filled in for you.
