Case 01 · My own product, open source
Motion graphics, directed by your own agent
The problemI want a launch video without hiring a motion designer, and I want the agent I already use to make it, not another chat box.

Notes · Case 01
In short
A local motion graphics editor that Claude Code, Codex or Cursor drive through 35 editor tools. Every change arrives as a proposal I approve, images and voice are generated through fal from inside the editor, and the export matches the preview frame for frame.
- Role
- Product, design and engineering
- Client
- My own product, open source
- Year
- 2026
- Stack
- TypeScript · React · Node · Model Context Protocol · fal · headless Chrome · ffmpeg
What came out
- Claude Code, Codex and Cursor run inside the editor on the user's own subscription, with their own approval prompts
- Images, video, music and voice come from models on fal, routed by job, priced before they run and held to a daily budget
- The film's master matches the live preview at all 16 checked frames (lowest SSIM 0.9992)
Where it started
Making a thirty-second launch film usually means a motion designer, a week, and a round of notes that starts over each time. Meanwhile I was spending my days with a coding agent that could write almost anything if it had the right tools. I wanted to describe the film in a sentence, watch the agent draw it scene by scene, and keep the final say on every frame.
So I built the editor it would need. It runs on my machine. It doesn’t ship a model of its own: it talks to the agent the person already pays for.
What I built
The brief is the interface. You type what you want and drop in a logo or a track. The agent answers with an outline (hook, proof, turn, call to action, each with a length), you edit it in the conversation and approve it, and the agent builds it one scene at a time.
Agents propose, people approve. The project is one JSON document, and every change, by hand or by agent, is a validated command on one undo stack. Agent edits arrive as proposals against a specific revision. The editor refuses a patch, and leaves the project untouched, when it’s stale, reaches outside its declared targets, touches a scene you’ve locked, or doesn’t validate.
Your agent, your machine. Claude Code, Codex and Cursor run inside the editor’s chat on the user’s own subscription, with their full toolsets and their own permission prompts. All three get the same 35 tools: read the selection, propose a patch, render a frame to check their own work, critique the cut against written motion rules, time cuts to the music’s downbeats, export.
What code can’t draw, fal generates. Text, shapes, UI and motion are drawn with code. Photographic plates, video, music, sound effects and voice come from models on fal through the editor’s Generate tab. A job names the work (background plate, narration, a clip between two frames), and a routing table picks a model for the active policy: quality, balanced or draft. Every request is priced before it runs, in the unit the model bills in (per image, per megapixel, per second, per thousand characters). A daily budget stops a runaway loop, and an agent’s request waits for a permission card that shows its cost. The fal key lives in the macOS Keychain and is never handed to an agent. Takes land in the asset library and only enter the film through a proposal.
Preview is export. I wrote my own render engine. The preview and the export run one composition, where every frame is a pure function of time. Exports render scene chunks in parallel in headless Chrome, cache each chunk by its content so a re-export only redraws what changed, and encode with ffmpeg. A verification script compares exported frames with the live preview and checks audio sync.
What was hard
Trust. An agent that edits a timeline unsupervised will eventually overwrite something you liked. Revisions, declared targets and locked scenes make every agent edit reviewable and refusable, and they’re the reason I’m comfortable letting it build straight through.
Taste. Left alone, agents make the same video every time: a gradient, a neon accent, a grid of identical cards. The editor writes taste down as rules it can check against the frames: reading time, type size, dead frames, cuts off the beat, a logo card as the opening shot, a sagging middle.
Cost and choice. Generation is the part that surprises people on the invoice. Routing by job rather than by model name, and pricing every request up front, let the editor pick a sensible default and still show the person what it costs to try another model.
How the film was made
The film above was made with the editor:
- The plate. I ran one prompt on three models through the Generate tab: FLUX 3 Image at 4K ($0.81, 5456 × 3072), Seedream 5.0 Pro ($0.07, at its 1K default) and GPT Image 2.5 ($0.50, 3840 × 2160). FLUX gave the most pixels; GPT Image gave the composition the title needed, a big screen facing the camera. The plate in the film is the take you watch arrive in the recording.
- The voice. The narration is five lines generated in the editor with Eleven v4 on fal, two cents in all.
- Assembly and render. The cut is timed to the music’s measured onsets: the APPROVED stamp lands on the first big one at 13.08 s, and the title lands on the final hit at 45.82 s. It was rendered by the editor’s engine and checked with its contact sheets and export verifier.
Everything generated in the editor for this film, comparison takes and voice samples included, cost $1.92 on fal.
The code
The editor is open source under the MIT licence: github.com/danielmigizi/motion-graphics-editor. It runs locally with Node, ffmpeg and Chrome, and works with the coding agent you already have.



