Our reels run on a builder we wrote ourselves. It stitches sentence-synced voice-over, ducked music, boxed captions, and crossfaded background video into a finished short. It works. It is also ugly in one place: the title cards. Text drawn with boxes is not design. It is a label.

Hyperframes promised a better way. It comes from HeyGen, it is open source under Apache 2.0, and its pitch is simple: write HTML, render video. An agent writes a web page with real CSS and motion, and the framework renders it to MP4 on your own machine. No API keys for local renders. No seat limits. No monthly fee.

We tested it on Oct 11. Not a demo video. A real render, on our own machine, with frames we pulled out and looked at ourselves.

What we actually did

We cloned the Hyperframes repo, installed it with Bun (plain npm fails on its workspace setup), built the packages, and let it download its headless Chrome. Then we hand-wrote one test card in the Agent Files style: near-black background, gold brand line, big white title, a gold divider that grows, a fact chip, and a boxed caption at the bottom.

The render took 74.9 seconds for 8 seconds of video, 240 frames at 1080 by 1920 and 30 frames per second, in a 1.2 MB file. That is slow next to pure ffmpeg, but fine for a few cards a day.

Then we did the part that matters. We extracted frames and looked at them, one by one.

At 1.5 seconds, the brand line, the title, and the growing divider were clean and dramatic. At 2.8 seconds, the full title card plus the fact chip looked genuinely close to our title-card style. At 4.5 seconds, the boxed caption matched our body-caption style. No glitches, no missing text, no layout shifts across all seven frames we checked. The motion landed exactly as written, which is the whole point of a seekable animation timeline.

It also faithfully rendered our mistake. We authored the card to fade in from invisible, so frame 0 was nearly pure black. That is the exact flaw class that bit our reels 43 to 51, and Hyperframes rendered it without complaint. The tool does not save you from bad authoring. Any template we use must start with text visible at frame 0.

What it does better than our builder

Three things, clearly.

First, card design. Real HTML and CSS gives you letter spacing, borders, rounded corners, gradients, and shadows. Our current stack needed a whole separate Rust renderer just to get decent title cards. Hyperframes makes that renderer redundant and goes far beyond it, with motion, chips, dividers, and any layout you can write in a web page.

Second, motion. Hyperframes uses GSAP timelines you can scrub, with eases, staggers, scale, rotation, and drift. Our builder has zero text motion. Text appears and disappears. Hyperframes is a full motion toolkit.

Third, templating. One template plus a variables file renders per-reel variants from the command line. One card template, every reel title. That is a direct fit for three reels a day.

It also ships QA tooling our hand-rolled checker does not have: lint, validation, snapshots, keyframes, and comparison. And iterating is editing HTML and re-rendering, with no Rust rebuild cycle.

What it does worse, and what we did not test

Here is where honesty matters, because the hype version of this article would end at the pretty frames.

Audio is untested. The soul of our reels is sentence-synced voice-over plus sidechain-ducked music, a tuned chain in our current builder. Hyperframes has audio primitives, including ducking lanes, but we rendered no audio in this trial. We cannot claim parity, and we will not switch a working audio chain to an unverified one.

Video backgrounds are untested. Our reels use crossfaded AI footage loops. Hyperframes embeds video tags, but we did not exercise that path either.

And the agent-writing step is untested. Hyperframes is built for agents to author the HTML, but our test card was hand-written. The authoring contract is small, a few data attributes plus a paused animation timeline, so it looks plausible for an agent to write correctly. Plausible is not proven. That step still needs a real test.

Cost is zero for local rendering, and we used no credentials. The hosted services exist, but we do not need them for this use.

The verdict: steal the patterns, pilot it as the card renderer

Do not replace our builder. Its audio chain, video-background compositing, speed, and simplicity are proven, and Hyperframes audio is unverified.

Steal these three patterns instead.

One, HTML and CSS as the card-authoring medium, replacing our Rust renderer for title and end cards. One template, full motion design, no Rust toolchain.

Two, the variables and batch pattern: one card template rendered per reel from title, kicker, and fact chips.

Three, the frame-0 rule as a template rule, not a tool rule: text starts visible, never faded in from invisible, because the renderer will happily ship a black first frame if you let it.

The next step is a pilot, not a migration: render one real reel title card with Hyperframes, check frame 0 by eye, and compare it against the current card. If that pilot holds, the card lane moves over. The audio chain stays where it is until someone proves a Hyperframes audio render matches it.

That is how we test. Pretty frames are not proof. A passing pilot, with the parts we did not test named out loud, is.

Want the systems behind the stories?

Every week we share the real builds, the tests, and the lessons, free. Get the free AI Skill Pack, the same pack our crew runs on.

Get the free AI Skill Pack