A small collection of experiments built on MediaPipe Tasks — hands, pose, face — running entirely client-side. No install, no upload, no server. Open one, allow the camera, and move.
Each one reads the body a different way.
Five exercise games in one — auto rep counting for 7 exercises, shadow boxing, balance holds, a cardio runner, and a full Tabata HIIT circuit.
Six mini-games in one file — keepie-uppie, fruit slicing, two-player tug-of-war, shadow puppets, don't-laugh, and volley against a robot.
Seven ways to be the controller in one shell — silhouette matching, stillness, air-drawn glyphs, rhythm, physics, face, joint angles.
You act it out; a language model reads a written description of your movements and guesses out loud. Bring an API key, or play the offline word packs.
Punch the meteors, kick the probes, squat under the lasers. Full-body play for kids, with a keyboard puppet mode when there's no room to move.
Stand back until your whole body fits the frame, pick a suit, then dance. The costume tracks your skeleton in real time.
A multi-page site you navigate with one hand. Pinch and drag to scroll, open palm and flick to change pages — plus write-ups on tracking and tuning.
The original single-file prototype: swipe through a deck of slides with an open palm, drag with a pinch, fall back to arrow keys any time.
Sketched in ideas.txt, not built yet.
Match a flying cutout with your silhouette. Scored on pixel overlap from the segmentation mask, not landmarks.
Inverted incentive — score for stillness under pressure. Sub-pixel jitter detection catches you flinching.
Trace shapes with your index finger; a $1 unistroke recognizer turns them into spells.
Hand and foot velocity into Web Audio. Zones in space are drums; strike velocity sets volume.
Your limbs become Matter.js colliders. Juggle five balls, herd them into a bucket.
Blendshapes as buttons: eyebrow raise jumps, mouth open shoots, head tilt steers. Playable sitting down.
Score joint angles against a target pose and hold for ten seconds. The calm opposite of an arcade.
Cameras need a secure context. These pages work over https:// (as here) or localhost, but a plain file:// double-click is blocked by the browser — every demo detects that and offers keyboard mode instead.
To run locally: clone the repo, then python3 -m http.server 8000 and open localhost:8000. First load of each demo pulls the MediaPipe model from a CDN, so give it a moment.
Best results with good front lighting, a plain-ish background, and — for the full-body demos — a couple of metres between you and the lens.