See it work
Through a Canary’s eyes
Security cameras answer “what happened?” by keeping everything. A Canary answers by keeping almost nothing — a handful of tiny, chained events. This bench runs that idea live: watch a scene become edges, edges become a record, and then try to rewrite history and get caught.
Warming up…
What a camera would keep
The scene, in full — every frame, every pixel, forever. This is the pile most systems sit on.
raw pixels looked at, then let go 0 B
What the Canary sees
160 × 120, grayscale, edges only, over a 3 × 3 motion grid. The detail is gone before anything could keep it.
all zones asleep
What the Canary keeps
The only output: small events, each hash-chained to the one before. This log is the whole record.
kept, in total 0 B
The whole trick, as a number
Watching…
What’s real here, and what isn’t
This bench is a faithful miniature, not a mock — and where it differs from the hardware, the hardware is stricter.
Downscale, grayscale, Sobel — the same shape as the privacy thumbnails in the witness kernel (src/thumbnail.rs). Outlines survive; identity does not.
“Motion in the north-west of the frame” is the level a witness reports at — a where and a when, never a who. Same idea as the kernel’s motion backend.
Every event is hash-chained with SHA-256, right here in your browser (WebCrypto). That is what makes the log tamper-evident: a rewrite cannot re-earn the chain built on the truth. On hardware, each link is also Ed25519-signed.
This demo is JavaScript in your tab, and your webcam feed never leaves it. A real Canary runs the pipeline on-sensor: the pixels die in device memory and never reach a browser at all. Read how it works, meet one witness, or see the vault that guards the rare exception.
Why show a webcam demo at all, on a site about not being watched? Because the argument is easier to feel than to read: point a camera at yourself, watch what a witness would actually keep, and notice that you never appeared in it.