GestureCanvasopen the canvas →

A webcam-driven visual workspace

The hand is
the cursor.

Draw, connect, and present on an infinite canvas with bare hands. Point to move, pinch to draw, fist to delete — a webcam is the whole interface.

palm · point · pinch · fist — 21 landmarks per frame, all in-browser

CH 01 · From pixels to structure

A webcam frame becomes a hand.

MediaPipe reads 21 landmarks out of every frame. They leave the flat image and take on depth — this skeleton is all the engine ever sees. No gloves, no markers, no depth camera.

hand landmarker · 21 pts · confidence ≥ 0.5

CH 02 · Signal vs noise

Raw hands shake. The cursor can't.

Every landmark runs through a One-Euro filter: heavy smoothing at rest so webcam jitter dies, light smoothing in motion so the cursor never lags. The paper ships β = 0.007 for pixel space — normalized coordinates needed it three orders of magnitude hotter.

raw jitterfiltered cursoradaptive cutoff 1.0 Hz — at rest, jitter rejected

CH 03 · The decision

A pinch is a contract.

Engage below 0.035. Release above 0.075. The band between is hysteresis: mid-stroke jitter can spike across the engage line and nothing breaks — only a deliberate release crosses the whole band.

dist(4, 8) = 0.094released

drag the needle — the latch lets go at a different line than it engaged. that asymmetry is the whole trick.

CH 04 · Ink

…and the pinch lands as ink.

Everything downstream is a real canvas: strokes, shapes, nodes and edges, a radial menu, present mode. The same grammar you just scrolled through — plus an optional AI command bar.

dwell 15 frames ≈ 0.5 s before anything destructive commits

Raise a hand.

No install, no account. The webcam feed never leaves your machine.

every number on this page is real — engage 0.035 · release 0.075 · β 6.5 · docs/gesture-contract.md