Counts you
can sign.
Steadeye turns up to six cameras into a validated counting and inspection station. Every capture lands in a tamper-evident batch record with electronic signatures and a SHA-256 hash-chained audit trail — on one Windows PC, no cloud.

Fig. 1 — The real operator screen, shown in the built-in simulation mode used for qualification dry-runs.
One capture. Four verdicts.
These four frames are unretouched evidence images from one capture event on the running station. Every frame gets a verdict — and every verdict has a consequence in the batch record, the PDF report and the PLC handshake.

A switchable check logic turns the same station into a damage inspector: detections in a damaged class mark the frame DAMAGED, and damaged units land in the batch record, the report and the PLC result — selectable per product run, fully audited.
Everything a validated station needs. Nothing it doesn't.
AI detection engine
YOLOv5, v8, v11 and end-to-end ONNX exports are auto-detected. ONNX Runtime picks the fastest execution provider at startup — TensorRT, CUDA, DirectML or CPU — and logs the choice into the audit trail.
Damage detection
A switchable check logic inspects instead of counts: detections in a damaged class mark the frame DAMAGED, and damaged units land in the batch record, PDF report and PLC result.
PLC-triggered capture
Siemens S7 and Beckhoff ADS drivers with a Ready/Busy/Done handshake: a rising trigger bit runs CAPTURE ALL and writes result code and counts back to the PLC.
Six cameras, one click
USB, RTSP and MJPEG-over-HTTP cameras stream live previews with detection boxes. CAPTURE ALL grabs timestamp-aligned frames from every camera in under a second on GPU.
Tamper-evident audit trail
Every security, data and settings event lands in an append-only log secured by a SHA-256 hash chain. A built-in verify function re-walks the chain and flags any manipulation.
Electronic signatures
Closing a batch requires re-entry of username, password and signature meaning — 21 CFR Part 11 style. Closed batches are immutable.
PDF batch reports
One export contains every counted frame with its annotated image, per-camera deviations, the parameter snapshot with model SHA-256, operator identities and signatures.
Local & Active Directory auth
Switch between bcrypt-secured local accounts and AD/LDAP with group-to-role mapping. Password policy, account lockout and forced first-login change are built in.
Editable role permissions
A permission matrix defines what each role sees and may change, editable in the UI. Safety-critical groups stay admin-only, enforced server-side.
Annotation & in-tool training
Label small objects — including a damaged class — in the built-in annotation tool, train YOLO models as a background job, and register the ONNX into a SHA-256-sealed registry.
Bilingual UI & operator manual
The interface switches between English and German, with an in-app operator manual one F1 away. Runs in any browser on the station or across the network.
Simulation mode
Synthetic trays with a known object count and a deterministic mock detector let you run the complete workflow without any hardware. Ideal for OQ dry-runs.
The batch record writes itself.
Closing a batch requires username, password and signature meaning — 21 CFR Part 11 style. The signature seals a SHA-256 of the batch content; from that moment the record is immutable.

Fig. 2 — Batch record after closing: frozen confidence, model SHA-256, per-camera counters, e-signature line.
admin — “Batch closed — reviewed and approved”
2.7.2026, 22:51:29 · content_sha256 460bfc21…c680b20c
- Every image is hashed at write time — raw and annotated, per camera, per capture.
- The model is frozen into the record — its SHA-256 travels with every count it produced.
- One click exports the PDF report — annotated images, deviations, identities, signatures.
Built for auditors, not retrofitted for them.
Every security, data and settings event lands in an append-only log where each entry is chained to its predecessor with SHA-256. Change one byte anywhere in history and verification fails. Even a PLC-triggered capture is attributed — as user 'plc'.

Fig. 3 — The trail of the batch above: signature with content hash, three captures with per-camera JSON, creation — and the failed-login lockout doing its job.

Fig. 4 — The exported record: every frame carries its own SHA-256, every capture its operator.
Installation Qualification
Operational Qualification
Performance Qualification
Requirements Traceability Matrix
Qualification templates and a full requirements traceability matrix ship with the system.
Your objects. Your model.
No vendor round-trips, no per-image cloud fees, no shipping your product photos to anyone. New product, new packaging, new object? Retrain on the station and keep the model — it's yours.
Box, circle and polygon tools with deep zoom, built for hundreds of small objects per image — including a damaged class.
Freeze labels into a versioned dataset — YOLO format, SHA-256 sealed, listed with image and shape counts.
A cancellable background job fine-tunes YOLO on your objects and exports ONNX. On the station's GPU, or any PC.
The result lands in a sealed model registry. Activation is audited and blocked during an active batch.
From the operator manual: label images → export a dataset version → train → register the result in the model registry → activate it. Every step is audited.
Your PLC pushes the button. The record still holds up.
One process image and handshake over three transports: Siemens S7 data blocks via snap7, TwinCAT ADS via pyads, and a simulated PLC for validating the integration without hardware. Captures fired by the line are audited as user 'plc' — attribution survives automation.
Fig. 5 — Trigger handshake with Ready/Busy/Done/Error flags and automatic reconnect.
Integration files, generated for you
Download engineering files that already match your configured offsets — no manual address bookkeeping on the PLC side.
Admin-only, test before you trust
PLC settings live in an admin-only section, enforced server-side regardless of the permission matrix. Test the connection before saving, apply and reconnect live, and fire simulated triggers to rehearse the line.
From download to counting in one afternoon.
One-click installer
A single Windows setup deploys the station on any Win10/11 x64 PC — program files, writable data tree, auto-start background service and optional HTTPS remote access.
GPU without the pain
The bundled ONNX Runtime with DirectML uses any DirectX-12 GPU through the standard vendor driver — no CUDA installation — and falls back to CPU automatically.
One process to qualify
The whole station is a single audited executable — FastAPI, detection, PLC drivers and database in one process. The bundled Caddy proxy adds HTTPS across the network; all data stays on the machine.
# run from source (Python 3.12+)
pip install -r requirements.txt
python run.py
# …or build the deployment package
.\build_exe.ps1 -Zip
# …or the one-click station installer
.\build_installer.ps1
→ dist\Steadeye-Setup-1.x.exeThe full production station: counting and damage detection, batch records, e-signatures, PDF reports, audit trail, PLC integration.
Everything in Count, plus the annotation-to-training pipeline: label datasets, train YOLO models in-tool and register them into the sealed registry.
Offline, fail-closed licensing
One installer serves both editions — the pasted key decides. Activation works fully offline, the station refuses to start without a valid license, and upgrading Count to Train is a new key, not a reinstall.
Ready to make every count provable?
Try the complete workflow in simulation mode — no cameras, no model, no hardware — or get in touch for a live demo.
neuhuberconsulting@gmail.com