Open-source video rendering framework: write HTML, render video.
This repo ships AI agent skills via vercel-labs/skills. Install them before writing compositions — they encode framework-specific patterns that generic docs don't cover.
npx skills add heygen-com/hyperframesbun install # Install dependencies (NOT pnpm — do not create pnpm-lock.yaml)
bun run build # Build all packages
bun run test # Run all testsUses oxlint and oxfmt (not eslint, not prettier, not biome).
bunx oxlint <files> # Lint
bunx oxfmt <files> # Format
bunx oxfmt --check <files> # Check formatting (CI / pre-commit)Always lint and format changed files before committing. Lefthook pre-commit hooks enforce this automatically.
After creating or editing any .html composition:
npx hyperframes lint # Static HTML structure check
npx hyperframes validate # Runtime check (headless Chrome — catches JS errors, missing assets)Both must pass before previewing or considering work complete.
packages/
cli/ → hyperframes CLI (create, preview, lint, render)
core/ → Types, parsers, generators, linter, runtime, frame adapters
engine/ → Seekable page-to-video capture engine (Puppeteer + FFmpeg)
player/ → Embeddable <hyperframes-player> web component
producer/ → Full rendering pipeline (capture + encode + audio mix)
shader-transitions/ → WebGL shader transitions for compositions
studio/ → Browser-based composition editor UI
registry/
blocks/ → Installable sub-composition scenes (50+)
components/ → Installable effects and snippets
examples/ → Starter project templates
docs/ → Mintlify documentation site (hyperframes.heygen.com)
skills/ → AI agent skill definitions
- Package manager: bun (not pnpm, not npm for workspace operations)
- Commit format: Conventional commits (
feat:,fix:,docs:,refactor:,test:) - TypeScript: Avoid
anyandas Tassertions. Prefer type guards and narrowing. - Compositions: HTML files with
data-*attributes. Clips needclass="clip". GSAP timelines must be paused and registered onwindow.__timelines. - Frame Adapters: Animation runtimes plug in via the seek-by-frame adapter pattern. GSAP is the primary adapter.
- Deterministic rendering: No
Date.now(), no unseededMath.random(), no render-time network fetches.
- Docs: https://hyperframes.heygen.com/introduction
- Catalog (50+ blocks): https://hyperframes.heygen.com/catalog/blocks/data-chart