STATION-01 · STEADEYE GXP v1.0.0OPERATIONAL
SYSTEM_STARTED · STATION-01 · 6 CAM

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.

YOLOv5 / v8 / v11 · ONNXSiemens S7 · Beckhoff ADS21 CFR Part 11 e-signatures
LIVE / CAPTURE — OPERATOR SCREEN
Steadeye live view: six cameras counting simultaneously during batch LOT 2026-0847, each frame overlaid with detection boxes and object counts
Σ DETECTED 2397 / 2400 · 3 CAPTURESLIVE ~22 ms / FRAME

Fig. 1 — The real operator screen, shown in the built-in simulation mode used for qualification dry-runs.

CAPTURE_EXECUTED · LOT 2026-0847 · #3

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.

CAM 1 — EVIDENCE FRAME (SHA-256 SEALED AT WRITE)OK
Annotated evidence frame from CAM 1: verdict OK, counted 160 / 160
COUNTED 160 / 160CAPTURE #3 · 22:51:18 · admin

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.

MODEL_LOADED · provider: DirectML

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.

BATCH_SIGNED · batch:LOT 2026-0847

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.

BATCH LOT 2026-0847 — CLOSEDSIGNED
Steadeye batch record: product and model hash header, cumulative counters, per-camera table and capture event thumbnails with their verdicts

Fig. 2 — Batch record after closing: frozen confidence, model SHA-256, per-camera counters, e-signature line.

3
capture events
2397
Σ detected
2400
Σ expected
9
Σ missing
SIGNATURE

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.
AUDIT_TRAIL · sha256(prev ‖ payload)

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'.

GXP AUDIT TRAIL — APPEND-ONLYCHAIN VERIFIED
Steadeye audit trail: BATCH_SIGNED, BATCH_CLOSED and CAPTURE_EXECUTED entries with full old and new values, user, reason and IP for each event

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.

BATCH REPORT (PDF)PAGE 1 / 4
First page of the exported GxP batch record PDF: batch header, cumulative result, per-camera counters and capture event #1 with per-frame SHA-256 hashes

Fig. 4 — The exported record: every frame carries its own SHA-256, every capture its operator.

IQ

Installation Qualification

OQ

Operational Qualification

PQ

Performance Qualification

RTM

Requirements Traceability Matrix

Qualification templates and a full requirements traceability matrix ship with the system.

TRAINING_JOB · torch on CPU/GPU · audited

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.

LABEL

Box, circle and polygon tools with deep zoom, built for hundreds of small objects per image — including a damaged class.

EXPORT

Freeze labels into a versioned dataset — YOLO format, SHA-256 sealed, listed with image and shape counts.

TRAIN

A cancellable background job fine-tunes YOLO on your objects and exports ONNX. On the station's GPU, or any PC.

REGISTER

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.

CAPTURE_EXECUTED · user: plc

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.

handshake — process image
PLCsets TRIGGER bit
Stationruns CAPTURE ALL into the active batch
Stationwrites result code + per-camera counts
Stationraises DONE — heartbeat keeps ticking
PLCreads results, clears TRIGGER

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.

GSDMLPROFINET device description
TIA sourceS7 data block, matching offsets
TwinCAT GVLBeckhoff global variable list

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.

DEPLOY · STATION-01 · offline activation

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.

PowerShell — station setup
# 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.exe
COUNTLICENSE EDITION

The full production station: counting and damage detection, batch records, e-signatures, PDF reports, audit trail, PLC integration.

TRAINLICENSE EDITION

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.

AWAITING_OPERATOR

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