Upstream mirror of heygen-com/hyperframes (synced daily)
  • TypeScript 97.6%
  • JavaScript 1.6%
  • Python 0.4%
  • Shell 0.3%
Find a file
Miguel Ángel aebb7b2660
Some checks failed
CI / Detect changes (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / File size check (push) Has been cancelled
CI / Semantic PR title (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Docs / Validate docs (push) Has been cancelled
Player perf / Detect changes (push) Has been cancelled
preview-regression / Detect changes (push) Has been cancelled
regression / Detect changes (push) Has been cancelled
Windows render verification / Detect changes (push) Has been cancelled
CI / Build (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Fallow audit (push) Has been cancelled
CI / Typecheck (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Test: runtime contract (push) Has been cancelled
CI / Studio: load smoke (push) Has been cancelled
CI / Smoke: global install (push) Has been cancelled
CI / CLI smoke (required) (push) Has been cancelled
Player perf / Preflight (lint + format) (push) Has been cancelled
Player perf / Perf: drift (push) Has been cancelled
Player perf / Perf: fps (push) Has been cancelled
Player perf / Perf: parity (push) Has been cancelled
Player perf / Perf: scrub (push) Has been cancelled
Player perf / Perf: load (push) Has been cancelled
Player perf / player-perf (push) Has been cancelled
preview-regression / Preflight (lint + format) (push) Has been cancelled
preview-regression / Preview parity (push) Has been cancelled
preview-regression / preview-regression (push) Has been cancelled
regression / Preflight (lint + format) (push) Has been cancelled
regression / regression-shards (hdr-regression style-5-prod style-3-prod mov-prores, shard-1) (push) Has been cancelled
regression / regression-shards (overlay-montage-prod style-12-prod chat missing-host-comp-id png-sequence, shard-6) (push) Has been cancelled
regression / regression-shards (style-13-prod style-6-prod vignelli-stacking gsap-letters-render-compat, shard-8) (push) Has been cancelled
regression / regression-shards (style-15-prod hdr-hlg-regression style-1-prod many-cuts vfr-screen-recording render-symlinked-assets, shard-2) (push) Has been cancelled
regression / regression-shards (style-16-prod style-9-prod style-17-prod iframe-render-compat variables-prod mp4-h265-sdr, shard-4) (push) Has been cancelled
regression / regression-shards (style-4-prod style-11-prod style-2-prod animejs-adapter typegpu-adapter, shard-5) (push) Has been cancelled
regression / regression-shards (style-7-prod style-8-prod style-10-prod css-spinner-render-compat webm-transparency mp4-h264-sdr webm-vp9, shard-3) (push) Has been cancelled
regression / regression-shards (sub-composition-video style-18-prod raf-ball-render-compat font-variant-numeric sub-comp-t0 sub-comp-id-selector, shard-7) (push) Has been cancelled
regression / regression (push) Has been cancelled
Windows render verification / Preflight (lint + format) (push) Has been cancelled
Windows render verification / Render on windows-latest (push) Has been cancelled
Windows render verification / Tests on windows-latest (push) Has been cancelled
chore: bump version to 0.6.34
2026-05-22 11:44:06 -04:00
.claude feat(capture): write AGENTS.md alongside CLAUDE.md + skill refinements from regression tests 2026-04-18 23:17:29 -04:00
.claude-plugin feat(claude-code-plugin): add Claude Code marketplace manifest 2026-05-08 17:36:49 +02:00
.codex-plugin fix(skills): purge stale tts/transcribe references from CLI skill pointers 2026-05-05 03:16:14 +00:00
.cursor-plugin feat: add init tailwind flag (#577) 2026-05-01 00:07:00 +02:00
.github Merge pull request #986 from heygen-com/fix/studio-edit-persistence-and-render-css 2026-05-21 05:53:32 +02:00
assets feat: add Claude Code plugin manifest (#462) 2026-04-23 23:07:57 +02:00
docs Merge pull request #933 from heygen-com/05-18-feat_registry_add_blend-difference_text_effect_component 2026-05-21 21:28:56 +02:00
examples docs(lambda): add migration guide + non-Lambda Dockerfile example (#915) 2026-05-17 14:12:22 -04:00
packages chore: bump version to 0.6.34 2026-05-22 11:44:06 -04:00
registry Merge pull request #933 from heygen-com/05-18-feat_registry_add_blend-difference_text_effect_component 2026-05-21 21:28:56 +02:00
scripts feat(studio): full Blocks panel — browse, search, add, drag-and-drop registry items 2026-05-18 21:15:15 -04:00
skills fix(skill)!: reference pixel-point/animate-text — stop vendoring 2026-05-21 11:09:31 -07:00
.editorconfig build: add oxlint, oxfmt, commitlint, lefthook, knip, and editorconfig configs (#23) 2026-03-23 16:05:47 -07:00
.env.example feat: website capture pipeline + 7-step video production skill (#284) 2026-04-16 12:03:16 -07:00
.fallowrc.jsonc feat(telemetry): differentiate studio vs CLI renders, add studio frontend events 2026-05-20 14:53:38 -04:00
.filesize-allowlist feat(studio): disable move/resize/style editing for locked composition children 2026-05-20 02:23:57 -04:00
.gitattributes test(producer): add mov ProRes distributed fixture 2026-05-14 23:51:44 +00:00
.gitignore feat(skill): hyperframes core — remove prescriptive tables, bundle text-effects 2026-05-21 11:09:30 -07:00
.oxfmtrc.json build: add oxlint, oxfmt, commitlint, lefthook, knip, and editorconfig configs (#23) 2026-03-23 16:05:47 -07:00
.oxlintrc.json fix(studio): server-side DOM patching, render CSS scoping, and resilience 2026-05-20 17:07:31 -04:00
.prettierignore refactor(studio): improve Timeline, PlayerControls, and player hook (#63) 2026-03-28 20:39:35 +01:00
ADOPTERS.md docs: add tldraw adopter and company logos (#846) 2026-05-15 00:38:49 +02:00
AGENTS.md docs: add prompt cookbook + prompting guide for AI agents (#286) 2026-04-15 22:22:46 -07:00
bun.lock feat(capture): identify hashed fonts via OpenType name table 2026-05-20 13:55:07 -07:00
CLAUDE.md revert(skill): revert 4 hyperframes files + CLAUDE.md to main 2026-05-21 11:09:30 -07:00
CODE_OF_CONDUCT.md initial code (#2) 2026-03-21 22:43:56 -07:00
commitlint.config.js build: add oxlint, oxfmt, commitlint, lefthook, knip, and editorconfig configs (#23) 2026-03-23 16:05:47 -07:00
CONTRIBUTING.md docs: codegen per-item MDX pages from registry (#263) 2026-04-14 16:24:24 -07:00
CREDITS.md chore: address remaining review nits 2026-05-19 21:06:22 -04:00
DESIGN.md docs: apply HyperFrames design system to Mintlify theme (#225) 2026-04-07 20:24:35 -07:00
Dockerfile.test fix(ci): pin chrome-headless-shell + clamp PSNR checkpoint to a valid frame 2026-05-17 22:41:55 +00:00
DOCS_GUIDELINES.md feat(skills): add hyperframes-cli skill (#154) 2026-03-31 00:30:55 -07:00
knip.config.ts build: add oxlint, oxfmt, commitlint, lefthook, knip, and editorconfig configs (#23) 2026-03-23 16:05:47 -07:00
lefthook.yml ci: run fallow audit in lefthook pre-commit (#948) 2026-05-18 19:39:34 -07:00
LICENSE chore: update license from MIT to Apache 2.0 (#183) 2026-04-01 12:01:08 -07:00
package.json ci: run fallow audit in lefthook pre-commit (#948) 2026-05-18 19:39:34 -07:00
README.md docs: switch README hero to animated WebP for autoplay + higher quality 2026-05-08 12:17:37 -07:00
SECURITY.md style: apply oxfmt baseline formatting across all source files (#25) 2026-03-23 17:15:14 -07:00

HyperFrames

npm version npm downloads License Node.js Discord

Write HTML. Render video. Built for agents.

HyperFrames demo — HTML code on the left transforms into a rendered video on the right

Hyperframes is an open-source video rendering framework that lets you create, preview, and render HTML-based video compositions — with first-class support for AI agents.

Quick Start

Install the HyperFrames skills, then describe the video you want:

npx skills add heygen-com/hyperframes

This teaches your agent (Claude Code, Cursor, Gemini CLI, Codex) how to write correct compositions, GSAP timelines, Tailwind v4 browser-runtime styles, and first-party adapter animations. In Claude Code, the skills register as slash commands — invoke /hyperframes to author compositions, /hyperframes-cli for the dev-loop commands (init, lint, preview, render), /hyperframes-media for asset preprocessing (TTS, transcription, background removal), /tailwind for init --tailwind projects, /gsap for timeline animation help, or the adapter skills (/animejs, /css-animations, /lottie, /three, /waapi) when a composition uses those runtimes.

For Claude Design, open docs/guides/claude-design-hyperframes.md on GitHub and click the download button (↓) to save it, then attach the file to your Claude Design chat. It produces a valid first draft; refine in any AI coding agent. See the Claude Design guide.

For Codex specifically, the same skills are also exposed as an OpenAI Codex plugin — sparse-install just the plugin surface:

codex plugin marketplace add heygen-com/hyperframes --sparse .codex-plugin --sparse skills --sparse assets

For Claude Code, the repo also ships a Claude Code plugin manifest: test it locally with claude --plugin-dir .. The manifest intentionally omits skills because Claude Code auto-discovers the root skills/ directory by convention, and for marketplace submission use the title HyperFrames by HeyGen plus the black/white icon assets at assets/claude-code-icon-dark.svg and assets/claude-code-icon-light.svg for the two theme slots. For Cursor, the same skills are packaged as a Cursor plugin — install from the Cursor Marketplace, or sideload by cloning this repo and pointing Settings → Plugins → Load unpacked at the repo root.

Try it: example prompts

Copy any of these into your agent to get started. The /hyperframes prefix loads the skill context explicitly so you get correct output the first time.

Cold start — describe what you want:

Using /hyperframes, create a 10-second product intro with a fade-in title, a background video, and background music.

Warm start — turn existing context into a video:

Take a look at this GitHub repo https://github.com/heygen-com/hyperframes and explain its uses and architecture to me using /hyperframes.

Summarize the attached PDF into a 45-second pitch video using /hyperframes.

Turn this CSV into an animated bar chart race using /hyperframes.

Format-specific:

Make a 9:16 TikTok-style hook video about [topic] using /hyperframes, with bouncy captions synced to a TTS narration.

Iterate — talk to the agent like a video editor:

Make the title 2x bigger, swap to dark mode, and add a fade-out at the end.

Add a lower third at 0:03 with my name and title.

The agent handles scaffolding, animation, and rendering. See the prompting guide for more patterns.

Option 2: Start a project manually

npx hyperframes init my-video
cd my-video
npx hyperframes preview      # preview in browser (live reload)
npx hyperframes render       # render to MP4

hyperframes init installs skills automatically, so you can hand off to your AI agent at any point.

Requirements: Node.js >= 22, FFmpeg

Why Hyperframes?

  • HTML-native — compositions are HTML files with data attributes. No React, no proprietary DSL.
  • AI-first — agents already speak HTML. The CLI is non-interactive by default, designed for agent-driven workflows.
  • Deterministic rendering — same input = identical output. Built for automated pipelines.
  • Frame Adapter pattern — bring your own animation runtime (GSAP, Lottie, CSS, Three.js).

Hyperframes vs Remotion

Hyperframes is inspired by Remotion — we used Remotion at HeyGen in production, learned a ton from it, and kept attribution comments in the source for the patterns it pioneered (Chrome launch flags, image2pipe → FFmpeg streaming, frame buffering). Both tools drive headless Chrome and both are deterministic. They differ on one decision: what the primary author writes. Remotion's bet is React components; Hyperframes' bet is HTML.

Hyperframes Remotion
Authoring HTML + CSS + GSAP React components (TSX)
Build step None; index.html plays as-is Required (bundler)
Library-clock animations (GSAP, Anime.js, Motion One) Seekable, frame-accurate Plays at wall-clock during render
Arbitrary HTML / CSS passthrough Paste and animate Rewrite as JSX
Distributed rendering Single-machine today Lambda, production-ready

Licensing: fully open source vs source-available

Hyperframes is completely open source under Apache 2.0 — an OSI-approved license. Use it commercially at any scale, with no per-render fees, no seat caps, no company-size thresholds.

Remotion is source-available, not open source. The code is on GitHub under a custom Remotion License that requires a paid company license above small-team thresholds. It's a great product with a real team behind it — but if open-source licensing matters to you (OSI compliance, redistribution rights, no per-use fees), that's a first-order decision point.

Full write-up with benchmarks, an honest list of where each tool wins, and a GSAP side-by-side: Hyperframes vs Remotion guide.

How It Works

Define your video as HTML with data attributes:

<div id="stage" data-composition-id="my-video" data-start="0" data-width="1920" data-height="1080">
  <video
    id="clip-1"
    data-start="0"
    data-duration="5"
    data-track-index="0"
    src="intro.mp4"
    muted
    playsinline
  ></video>
  <img
    id="overlay"
    class="clip"
    data-start="2"
    data-duration="3"
    data-track-index="1"
    src="logo.png"
  />
  <audio
    id="bg-music"
    data-start="0"
    data-duration="9"
    data-track-index="2"
    data-volume="0.5"
    src="music.wav"
  ></audio>
</div>

Preview instantly in the browser. Render to MP4 locally or in Docker.

Catalog

50+ ready-to-use blocks and components — social overlays, shader transitions, data visualizations, and cinematic effects:

npx hyperframes add flash-through-white   # shader transition
npx hyperframes add instagram-follow      # social overlay
npx hyperframes add data-chart            # animated chart

Browse the full catalog at hyperframes.heygen.com/catalog.

Documentation

Full documentation at hyperframes.heygen.com/introductionQuickstart | Guides | API Reference | Catalog

Packages

Package Description
hyperframes CLI — create, preview, lint, and render compositions
@hyperframes/core Types, parsers, generators, linter, runtime, frame adapters
@hyperframes/engine Seekable page-to-video capture engine (Puppeteer + FFmpeg)
@hyperframes/producer Full rendering pipeline (capture + encode + audio mix)
@hyperframes/studio Browser-based composition editor UI
@hyperframes/player Embeddable <hyperframes-player> web component
@hyperframes/shader-transitions WebGL shader transitions for compositions

Skills

HyperFrames ships skills that teach AI agents framework-specific patterns that generic docs don't cover.

npx skills add heygen-com/hyperframes
Skill What it teaches
hyperframes HTML composition authoring, captions, TTS, audio-reactive animation, transitions
hyperframes-cli Dev-loop CLI: init, lint, inspect, preview, render, doctor
hyperframes-media Asset preprocessing: tts (Kokoro), transcribe (Whisper), remove-background (u2net) — voice/model/codec selection
hyperframes-registry Block and component installation via hyperframes add
website-to-hyperframes Capture a URL and turn it into a video — full website-to-video pipeline
remotion-to-hyperframes Translate a Remotion (React) composition into a HyperFrames HTML composition
gsap GSAP timelines for HyperFrames: paused registration, deterministic seeking, easing, sequencing, performance
animejs Anime.js animations and timelines registered on window.__hfAnime for deterministic HyperFrames seeking
css-animations CSS keyframe animation patterns that HyperFrames can discover, pause, and seek
lottie lottie-web and dotLottie players registered on window.__hfLottie with local assets and paused playback
three Three.js scenes that render from HyperFrames hf-seek events and window.__hfThreeTime instead of wall-clock time
waapi Web Animations API element.animate() patterns seeked through document.getAnimations()

Contributing

See CONTRIBUTING.md for guidelines.

Cloning the repo

The repo uses Git LFS for golden regression-test baselines under packages/producer/tests/**/output.mp4 (~240 MB of .mp4 files). If you're cloning the full repo for development, install Git LFS first:

# macOS
brew install git-lfs

# Ubuntu/Debian
sudo apt install git-lfs

# Windows
winget install GitHub.GitLFS
# (or install Git for Windows, which bundles Git LFS as an optional component)

# Then (once, per machine)
git lfs install

If you hit git-lfs filter-process: command not found during git clone or npx skills add heygen-com/hyperframes, install Git LFS and retry. You can also skip LFS content if you only need the source files:

GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/heygen-com/hyperframes.git

License

Apache 2.0