LibrariesRustPyO3maturinNumPyPyTorchOpenCV
vigilo-stream
Python bindings for the Vigilo stream engine: frames cross the FFI boundary without a copy, and fusion replays deterministically.
pip install vigilo-streamvigilo-stream exposes vigilo-core to Python, so vision and proctoring pipelines get the Rust engine's frames and temporal rules without giving up NumPy.
Zero-copy by construction
Frame memory is allocated in Rust and handed to Python through __array_interface__ and the buffer protocol. np.asarray(frame) returns a view, not a copy — the pointer on the NumPy array is the same pointer the Rust frame holds, which the test suite asserts directly.
The rest of the surface
- Lock-free exchange. Capture workers publish through
ArcSwapslots, so a slow consumer drops stale frames instead of growing a queue. - Deterministic fusion.
FusionEngineruns detection signals through hysteresis bands, hold timers, and decaying scores.engine.replay("session.jsonl")reproduces the same events every time, with no models and no camera. - Full pipeline.
Pipelinewraps vigilo-core's five ONNX models and acceptscamera:0,file:clip.mp4, ordir:frames/as a source, downloading default weights on first run.
The module imports as either vigilo_stream or the rustream alias it was first published under.