Skip to content

Webcam Proctoring & Focus Monitoring (SimpleProctor)

SimpleProctor (quizaccess_simpleproctor) is an in-house Moodle Quiz Access Rule subplugin engineered for ExamNode. It provides lightweight, privacy-respecting candidate presence verification and focus-loss auditing without requiring third-party SaaS licenses (e.g. Respondus Monitor, Smowl).

  • Zero Third-Party Cloud Streaming: Unlike commercial proctoring tools, no video is transmitted to external AI vendors. Low-resolution JPEGs (~15KB) are saved directly into Moodle’s Core File Storage.
  • Deterministic Focus Tracking: Automatically detects when a student navigates away from the quiz window, switches browser tabs, or activates secondary applications.
  • Hardware Camera Arbitration: Automatically detects when a qtype_recordrtc audio/video question is active on the page and yields hardware control immediately, preventing camera resource collisions or black video screens.
  • Lightweight Candidate Experience: Throttled camera capture ensures older student laptops and MacBooks run cool and quiet during high-stakes sessions.
  • Standalone Portability: Operates out of the box on any standard Moodle 4.5+ LTS site with zero external dependencies. If no AI provider is configured, it falls back instantly to deterministic psychometric heuristics with 0s latency.

  1. In your course, navigate to the target Quiz and click Settings.
  2. Scroll to the Simple Webcam Proctoring header.
  3. Check Enable webcam monitoring.
  4. Configure options:
    • Snapshot capture frequency: Default is Every 60 seconds (recommended balance of evidence vs storage).
    • Capture snapshot on tab switch / window blur: Keep checked to record immediate evidence whenever a student clicks away.
  5. Save and return to course.

Method B: Automated CLI / API Provisioning

Section titled “Method B: Automated CLI / API Provisioning”

If using the ExamNode automated provisioner (local_examprovision), pass the --proctor flag:

Terminal window
php local/examprovision/cli/provision_exam.php \
--code=ICT302 \
--name="Final Examination" \
--oralbookends \
--proctor

When candidates attempt a proctored quiz:

  1. Pre-Attempt Security Notice: On the quiz landing page, candidates see:

    “🔒 Webcam Verification Active: This assessment captures periodic camera snapshots to verify candidate presence. Please ensure your webcam is enabled and unimpeded.”

  2. Browser Permission Grant: The browser prompts for camera access (Allow).
  3. Floating HUD Widget:
    • A compact 180×135 floating video feed appears docked in the bottom-right corner.
    • 🟢 Camera Active: Indicates live, unimpeded monitoring.
    • 🔴 Focus Lost: Flashes in red when the student clicks outside the window, triggering an immediate background snapshot.
    • ❌ Camera Blocked: Alerts the student if camera access was revoked or obscured.

Markers do not need to watch hours of video. Reviewing an attempt takes under 30 seconds using the chronological snapshot timeline.

From the Quiz Attempt Review screen (/mod/quiz/review.php?attempt=XYZ), navigate to:

https://examnode.com.au/mod/quiz/accessrule/simpleproctor/review.php?attempt=XYZ
Badge Event Trigger Invigilator Action
🚀 Attempt Started (Blue) Initial snapshot after camera stream warms up. Verify face matches student ID on record.
🟢 Routine Check (Gray) Periodic capture (every 60s). Glance across thumbnails to verify continuous presence.
🔴 Window Blur (Red) Candidate switched browser tabs or clicked off-screen. Primary Audit Point: Check timestamp. Did blur coincide with a difficult question?
🏁 Attempt Submitted (Green) Captured at the exact moment the final submit button was clicked. Final identity check.

5. Forensic Psychometrics & Peer Benchmarking (Live)

Section titled “5. Forensic Psychometrics & Peer Benchmarking (Live)”

Beyond oral viva defenses and camera snapshots, the async AI evaluator now cross-references physical telemetry with objective, cohort-relative response patterns automatically on every submitted attempt. See the dedicated Forensic Psychometrics & Peer Benchmarking guide for full detail, including how z-scores and distractor collusion markers are calculated and where they surface on the review screen. In summary:

  1. Anomalous Time-to-Answer (Z-Score): Each question’s dwell time is compared against the cohort mean/standard deviation for that same slot. A z-score below -2.0 flags a candidate who finished markedly faster than their peers on that specific question.
  2. Blur-to-Response Correlation: A Red Window Blur event recorded shortly before a question is answered correctly is surfaced to the AI evaluator alongside the z-score and response text.
  3. Collusion & Distractor Fingerprinting: Across large cohorts, selecting a multiple-choice distractor chosen by fewer than 15% of the class (with more than 3 responses recorded) is tagged as a collusion_marker and passed into the LLM evaluation prompt.

6. Standalone Portability & Global Settings (v1.2.0)

Section titled “6. Standalone Portability & Global Settings (v1.2.0)”

SimpleProctor is engineered to be 100% portable. It can be deployed on any standard Moodle 4.5+ LTS instance (e.g. Murdoch University’s core LMS or sandbox) independent of the ExamNode Docker/Ollama architecture.

Site administrators can configure SimpleProctor at Site Administration ▸ Plugins ▸ Activity modules ▸ Quiz ▸ Access rules ▸ Simple Webcam Proctor:

  • Enable AI telemetry evaluation: Master switch. When enabled, the ad-hoc background task evaluates attempt anomalies. When disabled, the plugin instantly applies deterministic psychometric heuristics (timing Z-scores, collusion markers, blur frequencies) with zero latency.
  • Ollama API endpoint URL: Configurable HTTP endpoint for local LLM inference (e.g. http://ollama:11434/api/generate or left blank).
  • Ollama connection timeout: Configurable timeout (default 5s, with a 2s connection timeout) ensuring background cron workers never hang if the external AI service is unreachable.

SimpleProctor ships with pre-compiled, minified AMD assets and sourcemaps in amd/build/proctor.min.js. Developers modifying amd/src/proctor.js can rebuild assets cleanly using the bundled tool:

Terminal window
npm install
npm run build