Summary
Eagle's Known Challenges section states:
"Face-blur mode by default; GDPR note in docs"
This is documented as an existing, default privacy feature — not a planned one. However, examining the pipeline:
- Detection model:
yolov8n.onnx is YOLOv8 Nano, a general object detection model trained on COCO classes (person, car, bottle, etc.). It does not detect or localize faces — it detects full body bounding boxes.
- No face detection service: The
services/ directory contains detection/, tracking/, reasoning/, and memory/ — there is no face_detection/ or anonymization/ module.
- No blur utilities:
libs/utils/ contains frame processing helpers, but no face-blurring or anonymization utilities are documented or implemented.
Why this matters critically:
Eagle is a real-time surveillance system being contributed to by 36 forks. Users deploying Eagle in production environments may believe face-blurring is active by default (per the README), when it is not. In EU jurisdictions, deploying a surveillance system without proper face anonymization under the mistaken belief that it's enabled constitutes a GDPR violation — with fines up to 4% of annual revenue or €20 million.
Proposed Fix
Immediate (documentation fix):
Change the README to accurately reflect the current state:
| Privacy Concerns | Face-blur mode is planned (not yet implemented). Currently, Eagle captures and displays video with full person visibility. Deploy only in environments where surveillance is legally authorized. |
Full implementation:
- Add
services/anonymization/face_blur.py using OpenCV or insightface:
import cv2
def blur_faces(frame: np.ndarray, face_boxes: list) -> np.ndarray:
for (x, y, w, h) in face_boxes:
roi = frame[y:y+h, x:x+w]
frame[y:y+h, x:x+w] = cv2.GaussianBlur(roi, (99, 99), 30)
return frame
- Integrate a face detection step (using
YOLOv8-face or insightface) into the detection pipeline before frames are passed to VLM captioning
- Add
EAGLE_FACE_BLUR=true environment variable to enable/disable (default: true)
Acceptance Criteria
Labels: privacy, security, feature, priority: high
Summary
Eagle's Known Challenges section states:
This is documented as an existing, default privacy feature — not a planned one. However, examining the pipeline:
yolov8n.onnxis YOLOv8 Nano, a general object detection model trained on COCO classes (person, car, bottle, etc.). It does not detect or localize faces — it detects full body bounding boxes.services/directory containsdetection/,tracking/,reasoning/, andmemory/— there is noface_detection/oranonymization/module.libs/utils/contains frame processing helpers, but no face-blurring or anonymization utilities are documented or implemented.Why this matters critically:
Eagle is a real-time surveillance system being contributed to by 36 forks. Users deploying Eagle in production environments may believe face-blurring is active by default (per the README), when it is not. In EU jurisdictions, deploying a surveillance system without proper face anonymization under the mistaken belief that it's enabled constitutes a GDPR violation — with fines up to 4% of annual revenue or €20 million.
Proposed Fix
Immediate (documentation fix):
Change the README to accurately reflect the current state:
| Privacy Concerns | Face-blur mode is planned (not yet implemented). Currently, Eagle captures and displays video with full person visibility. Deploy only in environments where surveillance is legally authorized. |
Full implementation:
services/anonymization/face_blur.pyusing OpenCV orinsightface:YOLOv8-faceorinsightface) into the detection pipeline before frames are passed to VLM captioningEAGLE_FACE_BLUR=trueenvironment variable to enable/disable (default:true)Acceptance Criteria
services/anonymization/face_blur.pyimplemented with face detection + Gaussian blurEAGLE_FACE_BLURenvironment variable documented in.env.exampleLabels:
privacy,security,feature,priority: high