ai-setup 4 min read

hyperframes: write HTML, render video

HeyGen's framework for turning HTML, GSAP animation, and FFmpeg into rendered video, pitched at agents rather than editors. 55,364 stars.

By
Share: X in
GitHub social preview card for heygen-com/hyperframes

TL;DR: hyperframes is HeyGen’s Apache-2.0 framework for rendering video from HTML, built so an AI agent can author the output instead of a person clicking a timeline. It reached 55,364 stars in under seven months and is close to half a gigabyte on disk.

The pitch in three words

The description is as compressed as it gets: “Write HTML. Render video. Built for agents.”

Each clause is doing work. Write HTML means the input format is a web document, not a timeline, a JSON scene graph, or a declarative slide format. Render video means the document becomes frames. Built for agents means the API surface was designed assuming a language model will be the thing authoring it, which rules out manual drag-and-drop as the primary workflow.

That combination is what makes it interesting. Agents are good at producing structured text and bad at operating creative software. If the video authoring format is HTML, an agent can write it directly.

What the topics reveal

GitHub’s topic list for this repository is unusually informative:

TopicWhat it implies
htmlDocuments are the authoring surface
gsapAnimation comes from a JavaScript animation library
ffmpegEncoding and muxing happen through FFmpeg
animationMotion is a first-class concern
frameworkIt is infrastructure, not an application
aiAgent authoring is the target use case

The pairing of GSAP with FFmpeg is the whole pipeline in two entries. GSAP handles what moves, FFmpeg handles what ships. HTML sits between them as the layout layer, which means a frame is a browser render rather than a drawing operation.

For an agent that is a meaningful simplification. The model writes markup and animation calls, an existing animation library interpolates the values, and an existing encoder produces the file. None of those steps need a model in the loop.

The scale

git clone https://github.com/heygen-com/hyperframes
FieldValue
Stars55,364
Forks5,021
LanguageTypeScript
LicenseApache-2.0
Created2026-03-10
Last push2026-10-02
Size on disk489 MB

Two figures stand out. The repository is roughly 489 MB, which is large enough that the clone is not instant. That size is what embedding an encoder and an animation runtime looks like in practice.

The star count is the more interesting number. 55,364 stars in a little under seven months puts this among the fastest-rising developer frameworks of the year, and the fork ratio of about eleven to one says a meaningful number of people are shipping work built on it.

The project is under the HeyGen organization, so there is a commercial company behind it. Apache-2.0 means the code is usable without asking, and it means the vendor benefits from adoption whether or not you ever pay them for anything else.

Where to be careful

  • Rendering video from markup means the output quality is bounded by what a browser can draw. If your work needs effects a browser cannot express, this is the wrong tool.
  • A framework in a language model authoring loop will generate invalid markup more often than a person would. Budget for validation.
  • Roughly half a gigabyte of dependencies is worth understanding before you add it to a CI pipeline.

When it fits

It fits if you are producing programmatic video, particularly for explainers, social clips, or anything an agent needs to author or vary.

It does not fit for hand-crafted motion work, for anything needing broadcast-grade output, or for teams who need a rendering backend they fully control.

Judge it on the Apache-2.0 license and the throughput you need, not on the star count.

Source and Accuracy Notes

  • Project page: https://github.com/heygen-com/hyperframes
  • Source repository: heygen-com/hyperframes (verified via GitHub API html_url)
  • License: Apache-2.0 (verified via GitHub API license.spdx_id)
  • Stars at time of writing: 55,364
  • Counts, topics, language, license, and dates were read from the GitHub REST API. Specific API calls, rendering options, and output capabilities were not independently verified against the README.