HyperFrames makes HTML the source file for rendered video
HyperFrames defines compositions as HTML with timing attributes, tracks, media elements, and seekable animations. Headless Chrome renders frames and FFmpeg encodes the result. Authors can use CSS, GSAP, Lottie, Three.js, Anime.js, the Web Animations API, or a custom adapter as long as time can be set deterministically. The approach is easy for web developers to grasp: layout remains browser layout, styling remains CSS, and an index.html composition can preview without a bundler.
The project is larger than one renderer. Packages cover the CLI, parser and runtime, capture engine, producer, browser editor, embeddable player, shader transitions, and AWS Lambda deployment. A catalog supplies reusable transitions, overlays, captions, charts, maps, and effects. Apache 2.0 licensing permits commercial use without a per-render threshold. This collection can support a real automation system, but each extra package increases the surface that must stay version-compatible.
Agent skills encode a production loop, not artistic judgment
HyperFrames ships 20 skills for coding agents, with a router that selects workflows for product videos, explainers, pull-request clips, captions, talking-head edits, motion graphics, music-driven pieces, decks, and general compositions. Domain skills cover timing, animation, creative direction, media acquisition, CLI checks, audio mixing, registry components, and Figma imports. Claude Code, Cursor, Gemini CLI, and Codex are named as compatible clients.
This is useful because generic HTML knowledge does not teach frame-safe animation, audio timing, or render inspection. Still, skills are instructions, not a guarantee that an agent chose legible type, licensed media, or an honest visual metaphor. The README notes that the skills registry can lag the main branch by hours. It also warns that a noninteractive skills add without a selection installs all 20 rather than the core set. Pin what runs in automation and review changes like code.
What happened when we ran it
Our sandbox at commit 2ca578f installed 769 Bun packages in 83 seconds and consumed 1,641 MB. The build succeeded in 98 seconds. The test command ran for 317 seconds, reported 607 passed, 0 failed, and 5 skipped out of 612 in the lab summary, then exited with code 1. A pipeline should treat that as failure even though every counted assertion passed.
The tail complicates the result. @hyperframes/studio reported 402 passed test files and 1 skipped, containing 4,464 passed tests and 18 todo items, then exited 0. After that, Bun printed that test:unit and test exited 1. The supplied log tail does not show which earlier workspace or wrapper condition produced the nonzero status. We will not guess. The finding is that the repository built, many tests passed, and the top-level test command remained red.
The checkout was also large: 6,968 files, about 727,056 source lines, and 191.4 MB before dependencies. It had 12 CI workflows, monorepo workspaces, no Dockerfile, and no top-level tests directory. Full development uses Git LFS for roughly 240 MB of golden MP4 baselines. A contributor needs Node 22 or newer, Bun, FFmpeg, browser dependencies, and Git LFS if regression videos must be checked.
Deterministic rendering still needs artifact checks
The README says the same input produces the same frames and output because the renderer seeks each browser frame. That is the correct goal for CI and automated production. Recent issue activity shows the remaining gaps. Issue 3487 reports an FFmpeg timestamp option shifting video by 21 milliseconds and reintroducing a black first frame. Issue 3484 says PNG sequence and WebM outputs bypass duration and frame-count gates. Issue 3482 describes a complete fallback render passing artifact validation.
These are specific, fixable defects, and maintainers were working on them August 25, 2026. They also define the minimum release check: verify output duration, expected frame count, first and last frames, representative middle frames, audio presence, and any transparent format. Do not accept a file merely because FFmpeg created it. Agent-authored video adds another layer, so lint and render checks should run before a human watches the final cut.
Remote media and nested scenes have sharp edges
Browser media rules follow compositions into the renderer. Issue 3458 reports that creating a Web Audio source from cross-origin media without CORS permission can silently mute it. Fix work aimed to prevent that failure. Production pipelines should download and freeze assets locally, record their origin and license, then validate audio from the rendered file. Depending on a changing remote URL makes reproducibility and rights review harder.
Nested compositions also expose browser namespace problems. Issue 3490 reports reused SVG IDs binding references to the first inlined scene. Other current work covers relative timing references in chained sub-compositions and media scheduling. Authors building reusable scenes should test repeated SVG masks, gradients, clips, and nested start times rather than assuming isolation.
Version 0.8.14 is moving too quickly for casual upgrades
Release v0.8.14 arrived on August 25, 2026. It corrected four composition-contract claims in agent skills that could make renders fail and added tracking for installed catalog items used by a render. The repository was pushed again the same day. That pace is encouraging for bug response and risky for an unattended toolchain. A change to instructions can alter generated source even when the renderer package stays compatible.
HyperFrames is the most interesting choice when HTML is a useful contract among designers, web engineers, and agents. Remotion remains easier to justify for teams already standardized on React. Whichever tool wins, rendering belongs in a tested media pipeline with frozen assets, pinned versions, artifact inspection, and a human approval step for public output.

