Privacy-first, open-source cameras
Three things. One witness.
New here? The short versionSecuraCV runs on your own hardware — no cloud, no subscription — and turns cameras into witnesses.
Two ways in
One of these is you. Pick it and skip the rest of this page.
I already have cameras
RTSP cameras and a Pi, running next to Frigate. +$0 on an existing Home Assistant stack — no new hardware, nothing to print.
curl -fsSL https://raw.githubusercontent.com/kmay89/securaCV/main/scripts/install.sh | bash
Paste it into the Terminal app (or any SSH session) and it installs the whole stack — MQTT broker, Frigate, the witness kernel, the integration and dashboards — narrating each step. Safe to re-run.
Each opens your Home Assistant with the repository pre-filled; you approve every step.
One compose file starts the sidecar: quickstart.compose.yml — or the with-broker variant if you don't run an MQTT broker yet. Add Home Assistant later and it finds everything — nothing to reconfigure.
I want to build one
Print the case, buy the board anywhere, flash it from your browser — $27–$55 a node. Nothing with a radio is for sale until its FCC authorization is complete.
Start in the Lab — nothing to buy → 🚀 Already have a board? Flash it → 💎 See the hardware →Need a record where any edit shows — as a tenant, a journalist, a survivor? See how it holds · Something else? Find your path
This is the output. All of it.
SecuraCV outputs a sentence, not a picture — “package at front door”, never a face, a plate, or an identity. The fields on the right aren't switched off: the code for them was never written.
Camera ──▶ RawFrame ──▶ InferenceView ──▶ Module ──▶ SealedEvent (private) (no pixels) (hash-chained) │ ▼ FrameBuffer ──▶ BreakGlass ──▶ VaultEnvelope (30s max) (N-of-M) (if authorized)
Your robot vacuum needs to see. Your doorbell needs to see. Your elder care system needs to see. None of them need to identify, track, or remember faces.
Three things. One witness.
Three jobs you'd normally buy separately, in one small device.
A camera
The job Ring and Nest sell.
It watches the doorway and tells you what happened — never who.
A notary
The job a signature does.
Every event is Ed25519-signed and hash-chained, so tampering doesn't get blocked — it gets seen, checkable offline.
Usually you pick two: a camera kills privacy, privacy kills evidence, evidence means a stranger's cloud. How one device does all three →
Same camera. Same question. Different futures.
Watch how "is the coffee ready?" becomes something else entirely.
Six months later, a policy changes...
"We need to identify who's been using the break room excessively."
See the next 180 days
HR requests usage report
"Generate a list of employees who spend more than 15 minutes in the break room daily."
Legal requests footage
"Lawsuit filed. Preserve all break room footage showing employee interactions."
New vendor integration
"Our wellness platform wants camera data to track employee stress patterns."
Retroactive analysis request
"Apply our new 'productivity scoring' algorithm to the last 6 months of footage."
The first webcam just watched a coffee pot.
In 1991, Cambridge researchers pointed a camera at their break room coffee maker to answer one question: is it ready yet? We think they had it right.
What's built, what's in progress
This is prototype software. Here's where we are.
Frame isolation types
Hash-chained event log
Break-glass quorum
Event contract enforcement
Cryptographic signatures
Encrypted vault envelopes
RTSP video ingestion
WASM module sandboxing
For makers: the two open tiles
RTSP decoding is built in but sits behind opt-in build features (rtsp-ffmpeg, rtsp-gstreamer), so a default build does not ingest RTSP itself. WASM sandboxing is planned; what ships today is process isolation, with detection modules run in forked, seccomp-restricted child processes on Linux.
2 of 4 designed Canaries shipped (see them on Compare). Watch Station & Canary Dash are next — their firmware already runs in the Lab. Want one? Join the waitlist.
Don't trust us — check the code
Three claims to start with, each one in the source:
Check the log for edits
Run the log checker to confirm the hash chain is intact.
cargo run --bin log_verify -- --db witness.db
Check that raw frames stay private
In src/frame.rs, confirm the raw bytes have no public getter.
Check that export needs a quorum
In src/break_glass.rs, confirm approval counting before token issuance.
Don't read code? Start here: sign a real claim and try to forge it, break a real hash chain, and watch the math catch you — all in your browser.