01 · EXPLORE
It looks before it shoots.
inspect hands the agent every interactive element with its real bounding
box, so the demo is planned against what the page actually is — not a guess.
AGENT-NATIVE DEMO RECORDER
You say one sentence. It explores your app, writes the shot list, drives a real browser, and renders a polished MP4 — smooth synthetic cursor, click-zooms, motion blur. Then you refine by asking.
MIT · open source · Node 22+
There is no timeline to drag and no recorder to operate. Your coding agent is the camera crew: it installs open-take into the project, explores the running app, and shoots it in a real browser.
You stay in the conversation you were already having.
01 · EXPLORE
inspect hands the agent every interactive element with its real bounding
box, so the demo is planned against what the page actually is — not a guess.
02 · DIRECT
The agent commits to what the demo should say before anything rolls: what is the hero, what earns a zoom, what plays full-view. Competent-but-forgettable is the failure mode it is built to refuse.
03 · RENDER
A measured camera shoots the plan and renders demo.mp4 — the one you
post — beside demo.take/, the working dir that keeps the recording and
the editable composition.
Screen recorders infer zoom intent from raw cursor motion — and it shows. An agent-driven camera never infers: it knows every click, coordinate and timestamp, because it wrote the plan. The zoom follows ground truth.
The move itself is a critically-damped spring fitted to a reference export: punch-in ≈ 730 ms, release ≈ 1.8× slower — because a fast release reads like a flinch.
It refuses to hand you a bad take quietly. A camera still mid-move at a click, a dead tail, a crowded release — each is flagged in the render summary, with the fix.
{
"kind": "press",
"label": "Deploy",
"bbox": { "x": 640, "y": 220, "w": 640, "h": 248 },
"zoom": {
"enabled": ,
"scale": 1.8,
"center": { "x": 960, "y": 344 },
"inAtMs": 4630
},
"durationMs": 1400
}
Every beat, every zoom, every look lives in one readable file beside the kept capture.
Change a number, render again — the app is never re-driven. The move you
just saw uses the shipped values: 760 ms in, ease
(0.3, 0, 0.2, 1).
DOOR A — DAILIES
beat 3: no zoom
tighter on beat 2
look: slate
✓ re-rendered from the kept capture
A fix is a re-render, never a re-shoot. The raw capture is kept — which matters when the take involved a real deploy you can’t repeat.
DOOR B — THE EDITOR
open-take edit
A local editor over the live, pixel-faithful preview: drag the frame on the stage,
retime zoom blocks, hold Compare against the original. Same
composition.json, either door.
open-take auth once. Credentials never touch a plan.