network-user
back to all projects
Bot 12 Sep 2026 beta

.eye

DotEye

One camera or four, one Telegram chat: the bot reports entries, exits, and alarms only when an event occurs.

the essence

DotEye turns a camera into a local presence sensor. It reads webcam, RTSP, or MJPEG input, tracks people entering and leaving, and sends an event with a frame to Telegram. The chat controls arming, quiet hours, zones, face references, voice, and alarms. Remote inference runs in a separate AES-GCM-protected path with a local fallback.

scale

size and timeframe: what stands behind the product.

10.8k LOC lines in the current repository
13 модулей pytest test modules
4 камеры maximum sources in one run
3 бэкенда local detection backends: YOLO, YuNet, and motion
2 режима presence and identity
AES-256 for frames and embeddings

architecture

local pipeline frames commands settings optional event outbox alarm webcam · RTSP · MJPEG Telegram aiogram panel YOLO · YuNet · motion remote inference IoU tracker presence · identity siren + TTS SQLite WAL + outbox

Frame sources, one reader per camera, and reconnect backoff

  • YOLO · YuNet · motion frames

Commands, notifications, frames, and the admin panel

  • aiogram panel commands

FSM dialogs and per-camera settings over Runtime

  • YOLO · YuNet · motion settings

Detection with auto-degradation and optional remote inference

  • remote inference optional
  • IoU tracker

Bounded HTTP transport, AES-GCM, HMAC, and local fallback

Enter, active, and exit states instead of per-frame spam

  • presence · identity
  • siren + TTS alarm

Box crops, embeddings, and comparison with references

  • SQLite WAL + outbox event

Voice loop in a separate thread, without blocking the pipeline

People, embeddings, events, settings, and retry delivery

  • Telegram outbox
Tap a module to see its role in the system.

stack

stack by layer · 19
  • Language 1
  • Framework 5
  • Data 3
  • Infrastructure 4
  • Client 2
  • AI / ML 4

Language

  • Python 3.12

Framework

  • aiogram 3
  • OpenCV
  • Ultralytics YOLO
  • InsightFace
  • pyttsx3

Data

  • SQLite WAL
  • AES-256-GCM
  • encrypted JPEG outbox

Infrastructure

  • Docker Compose
  • systemd
  • remote inference
  • HTTPS / VPN

Client

  • Telegram Bot API
  • webcam / RTSP / MJPEG

AI / ML

  • YOLO
  • YuNet
  • IoU tracker
  • motion gate

what it does

the product's key capabilities right now.

Entry and exit become events

The IoU tracker keeps each object's state and notifies when a person appears or leaves instead of sending a message for every frame.

A cooldown removes jitter, while entry, active presence, and exit remain separate states for each camera.

A detector with safe fallback

The project supports YOLO, YuNet, and motion. Auto mode selects an available path, so a remote failure does not become a false absence of people.

The panel can change the model and threshold without restarting the process.

Presence and identity

Presence answers «did someone enter?», while identity adds crop-based recognition against an enrolled reference gallery.

The "Who is this?" button links an unknown event to a person and saves a new reference. A siren and TTS can be enabled for unknown people.

Multiple cameras and zones

Each source has its own reader thread. Up to four cameras can run in parallel, frame zones use 0..1 coordinates, and the detectors stay isolated.

Each camera has its own name, mode, cooldown, quiet hours, and notifications. One camera failing does not take down the others.

Frames with retry delivery

Each event gets a box, name, and confidence. The JPEG is then encrypted and placed in SQLite outbox before it is sent to Telegram.

Idempotency and retries survive a temporary Telegram failure, while retention keeps the event history bounded.

Remote inference without losing the local path

A frame can go to another machine through AES-256-GCM, the request is signed with HMAC-SHA256, and the client can fall back to local detection.

A host allowlist, response limits, and HTTPS or VPN keep the remote path inside the intended network.

Voice and alarm

A siren, greetings, goodbyes, and TTS phrases run alongside Telegram and are configured from the panel.

The audio loop runs in a separate thread, so speakers do not delay the pipeline step or manual speech from chat.

timeline

how the product grew from its first version.

  1. 12 Sep 2026

    Pipeline and Telegram

    Camera, detector, tracker, storage, and the bot panel came together with enter/exit, identity, zones, quiet hours, and event notifications.

  2. 12 Sep 2026

    Remote and delivery

    AES-GCM transport, HMAC, TLS, local fallback, WAL pruning, Docker, Compose, and systemd were added for different deployment paths.

  3. 13 Sep 2026

    Privacy, voice, and hardening

    The final pass added outbound frame redaction, an audit journal, per-event TTS, persistent navigation, and remote autodeploy with Caddy TLS.