Search, evolve, learn
How Coframe works, as things to play with: testing, evolution, hill climbing, reinforcement learning and search. Every plate runs the real algorithm live, and plays itself when nobody touches it.
One still, one dot layer
No tracing and no animals. Each plate is a photo (or plain night) with one simple halftone layer drawn in code, on the same 5.51px grid as the rest of the system.













Gradients, models and topology
Twelve ideas from optimization, machine learning and geometry, each drawn in code on the same 5.51px dot grid.



Plates that answer the cursor
Move, drag or click on any of these. When nobody is touching one, a slow ghost cursor plays it, so it never sits still and phones still see it move.

Cover images
Soft, motion-blurred nature photos with thin white line art, made in the style of our blog covers. Saved in the media library under Brand/Blog covers.






Pipeline v3 · Echoes
The animal is filmed in the scene. Its dot clone is shifted in time.
One generated clip per plate, animal included, no halftone. Each clip has a matching matte: the same footage with everything but the animal turned black. Code reads the matte and redraws the animal as dots, moved back or forward in time, or across the frame.
Time-shifted twin 0.6s behind, drawn like the homepage hero: a fixed grid of about 215 columns, dots from a fifth to three quarters of a cell, one to three ragged voids stretched along the direction of travel that ride with the animal and open and close over about a second, crisp void edges, and a body that never fades out.
Mattes are plain MP4s (animal on black), so they work in every browser, Safari included.
Pipeline v2
Real footage underneath. Dots made in code.
Each plate is two separate clips. The base is plain footage with no animals and no halftone. The animal is its own clip, cut out with background removal, and the dots are traced from that cutout on the 5.51px grid.
Transparent WebM cutouts work in Chrome, Edge and Firefox. Safari ignores the alpha channel, so production needs a separate grayscale matte clip for Safari.
Build a plate
Pick a base and a dot layer, then tune how they meet. The recipe below updates as you go and drops straight into a page.
<LivingPlate
base={{ kind: "loop", clips: [MAL_MEDIA.forest], fade: 1.2 }}
overlays={[
{ mode: "trace", src: MAL_TRACE.wisps.src, fit: "cover", flip: true,
color: "#FFFFFF", opacity: 0.6, blend: "screen" }
]}
/>Plates we have made
Each one is a saved recipe. Start from the closest one, then change one layer at a time in the workbench.
Every video loops or hands off
No video on a page should ever visibly restart. These are the only three ways we loop.