Privacy-first, open-source cameras

Three things. One witness.

New here? The short version
Home
use cameras to:
detect events
not people|

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

📹
Software · best supported

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.

On Home Assistant — one command in the Terminal app
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.

Prefer buttons? Two clicks, in your own Home Assistant

Each opens your Home Assistant with the repository pre-filled; you approve every step.

No Home Assistant? Run it next to Frigate

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.

Read the full install guide → See what it does first →
🐤
Hardware · print it yourself

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.

Event Output
HOME
Not Captured — No Code Exists
facial_identity:███████
race:███████
gender:███████
age_estimate:███████
body_description:███████
license_plate:███████
gait_signature:███████
tracking_id:███████
What leaves the device
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.

It sees

A camera

The job Ring and Nest sell.

It watches the doorway and tells you what happened — never who.

It proves

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.

It protects

A vault

The job a two-key safe does.

The rare frame that matters is sealed — opening it takes a quorum of trustees. No single person, not even us.

Camera
Notary
Vault
One witness

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.

Traditional System
Full Capture
☕
Break Room Camera
System Output — illustrative, not a real person or benchmark
[09:14]motion_detected zone:coffee_area
[09:14]face_identified: SUBJECT_04 (94%) · illustrative
[09:14]badge_correlation: EMP-4821
[09:15]coffee_pot_lifted duration:12s
[09:15]dwell_time: 47s added_to_profile
30-day Storage
847 face events 12.4 GB video
witness-kernel
Events Only
☕
Break Room Camera
System Output
[09:10]coffee_pot: EMPTY
[09:10]motion: zone_A activity
[09:20]coffee_pot: BREWING
[09:30]coffee_pot: READY
[09:30]notification: sent_to_channel
30-day Storage
2,341 events 4.2 MB total

Six months later, a policy changes...

"We need to identify who's been using the break room excessively."

See the next 180 days
Day 1

HR requests usage report

"Generate a list of employees who spend more than 15 minutes in the break room daily."

✕
Traditional
Report generated: 23 employees flagged, with timestamps, durations, and photos
✓
witness-kernel
Cannot comply. No identity data exists to query.
Day 30

Legal requests footage

"Lawsuit filed. Preserve all break room footage showing employee interactions."

✕
Traditional
6 months of footage preserved. All faces, conversations, behaviors now legal evidence.
✓
witness-kernel
Event log preserved. Shows coffee/motion patterns. No footage to subpoena.
Day 90

New vendor integration

"Our wellness platform wants camera data to track employee stress patterns."

✕
Traditional
API enabled. Facial expressions, posture, interaction frequency now shared with third party.
✓
witness-kernel
Nothing to share. System outputs "coffee ready" — not biometrics.
Day 180

Retroactive analysis request

"Apply our new 'productivity scoring' algorithm to the last 6 months of footage."

✕
Traditional
Analysis complete. Employees scored and ranked by break room behavior. Used in performance reviews.
✓
witness-kernel
Cannot comply. New rules apply only to new events. Forward-only by design.
☕ Did you know?

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:

1

Check the log for edits

Run the log checker to confirm the hash chain is intact.

cargo run --bin log_verify -- --db witness.db
2

Check that raw frames stay private

In src/frame.rs, confirm the raw bytes have no public getter.

3

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.

🧠 See exactly how it works 🔐 Break the glass yourself ✍️ Watch a claim get signed — then forge it View Source