Augmented · Intelligence · Balanced · By · Design

Your reflection, on your terms.

Mirror Sidekick is a privacy-first webcam mirror — the kind you wish your operating system shipped with. Frames render in your browser and never leave it. No server, no recording, no telemetry.

Why it's safe
connect-src 'self' ~3 static files getUserMedia · client 0 cookies
The mirror · live

Try it. No upload required.

Press start — the stream stays in your browser. The page makes zero outbound calls while running.

CAMERA · OFFLINE
PRESS · START · TO · MIRROR
Standby 1280×720
filter: identity no network · no capture
Camera 0 found
Resolution
Orientation
Look
Brightness 100%
Contrast 100%
Saturation 100%
Overlay
The actual basis for the claim

Privacy isn't a promise. It's the architecture.

Four hard properties of how this site is built. Open DevTools, watch the Network tab — you won't see your face leave the browser, because there's nowhere for it to go.

No server, no API.

Pure static assets on the edge. There is no endpoint anywhere that could receive video, even in principle.

// 0 fetch · 0 xhr · 0 websocket

CSP locked down.

A strict connect-src 'self' blocks any outbound network call to a third party — even from a misbehaving script.

Content-Security-Policy: connect-src 'self'

No capture, no recording.

The video element renders frames. We don't use MediaRecorder. We don't draw to canvas. Nothing serializes a single byte.

// no MediaRecorder · no toBlob()

Zero cookies, zero storage.

No cookies. No localStorage. No analytics. Verifiable from source — the entire app is roughly three files long.

document.cookie === ""
How it works

Three boring steps. That's the point.

01 · REQUEST

Browser asks, you decide.

The page calls getUserMedia(). Your browser shows its own permission prompt — not ours. We can't override it.

navigator.mediaDevices.getUserMedia({video:true})
02 · RENDER

Frames go straight to a video tag.

The MediaStream wires directly into a <video> element. CSS filters and transforms do the look — locally, in your GPU.

video.srcObject = stream
03 · STOP

You close the tab. It's gone.

No persistence. No background process. No backup. When the page unloads, every track stops. There is nothing left.

stream.getTracks().forEach(t => t.stop())
The receipts

Verifiable, not vibes.

Code size
~ 1 file · < 50 KB
Permissions-Policy
camera=self; mic=()
connect-src
'self'
Storage
no cookies, no localStorage
Capture APIs
not used (MediaRecorder · canvas)
Host
Cloudflare Pages · static edge
License
open · audit any time
Telemetry
none. ever.
AUGMENTED · INTELLIGENCE · BALANCED · BY · DESIGN

Intelligence, with intention.

One tab. One stream. No surprises. Mirror Sidekick lives at the edge — closer to your camera than to any server.

Read the philosophy