Getting Started
Verify your environment
Run the diagnostics command to check for required dependencies:Expected output:
Terminal
Preview your composition
Before rendering, preview your composition in the browser to verify it looks correct:
Terminal
Rendering Modes
- Local Mode
- Docker Mode
Local Mode (default)
Uses Puppeteer (bundled Chromium) and your system’s FFmpeg. Fast for iteration during development.Requires: FFmpeg installed on your system. See Troubleshooting if FFmpeg is not found.Terminal
- Fast startup, no container overhead
- Uses your system GPU for hardware-accelerated encoding (with
--gpu) - Best for iterative development
- Output may vary across platforms due to font and Chrome version differences
- Not suitable for CI/CD pipelines that require reproducibility
When to Use Each Mode
| Scenario | Recommended Mode |
|---|---|
| Local development and iteration | Local |
| CI/CD pipeline | Docker |
| Sharing renders with a team | Docker |
| Quick preview export | Local |
| AI agent-driven rendering | Docker |
| Benchmarking performance | Local |
Options
| Flag | Values | Default | Description |
|---|---|---|---|
--output | path | renders/<name>.mp4 | Output file path |
--format | mp4, mov, webm | mp4 | Output format (see Transparent Video below) |
--fps | 24, 30, 60 | 30 | Frames per second |
--quality | draft, standard, high | standard | Encoding quality preset |
--workers | 1-8 or auto | auto | Parallel render workers (see Workers below) |
--max-concurrent-renders | 1-10 | 2 | Max simultaneous renders via the producer server (see Concurrent Renders below) |
--gpu | — | off | GPU encoding (NVENC, VideoToolbox, VAAPI) |
--docker | — | off | Use Docker for deterministic rendering |
--quiet | — | off | Suppress verbose output |
Workers
Each render worker launches a separate Chrome browser process to capture frames in parallel. More workers can speed up rendering, but each one consumes ~256 MB of RAM and significant CPU.Default behavior
By default, Hyperframes uses half of your CPU cores, capped at 4:| Machine | CPU cores | Default workers |
|---|---|---|
| MacBook Air (M1) | 8 | 4 |
| MacBook Pro (M3) | 12 | 4 (capped) |
| 4-core laptop | 4 | 2 |
| 2-core VM | 2 | 1 |
Choosing a worker count
Terminal
When to use 1 worker
- Short compositions (under 2 seconds / 60 frames) — parallelism overhead exceeds the benefit
- Low-memory machines (4 GB or less)
- Running renders alongside other heavy processes (video editing, large builds)
When to increase workers
- Long compositions (30+ seconds) on a machine with 8+ cores and 16+ GB RAM
- Dedicated render machines or CI runners
- Docker mode on a well-provisioned host
Concurrent Renders
When multiple render requests hit the producer server simultaneously (common with AI agents), each render spawns its own set of Chrome worker processes. Too many concurrent renders can exhaust CPU and cause failures. The producer server uses a request-level semaphore to queue renders. OnlymaxConcurrentRenders renders execute at a time — additional requests wait in a FIFO queue until a slot opens.
Configuration
Terminal
Queue status
The producer server exposes aGET /render/queue endpoint that returns the current state:
SSE queue events
When using the streaming endpoint (POST /render/stream), queued requests receive a queued event before rendering begins:
Choosing a concurrency limit
| Machine | CPU cores | Recommended limit |
|---|---|---|
| 4-core VM | 4 | 1 |
| 8-core workstation | 8 | 2 |
| 16-core server | 16 | 3-4 |
| 32-core render box | 32 | 5-6 |
Transparent Video
Hyperframes supports rendering with a transparent background — useful for overlays, lower thirds, subscribe cards, and any element you want to composite over other footage in a video editor.Recommended format: MOV (ProRes 4444)
Terminal
- CapCut
- Final Cut Pro
- Adobe Premiere Pro
- DaVinci Resolve
- After Effects
Format comparison
| Format | Codec | Transparency | Video editors | Browsers | File size |
|---|---|---|---|---|---|
| MOV | ProRes 4444 | Yes | CapCut, Final Cut, Premiere, DaVinci, After Effects | No | Large |
| WebM | VP9 | Yes | None (shows black background) | Chrome, Firefox | Small |
| MP4 | H.264 | No | All | All | Small |
WebM VP9 alpha is technically supported but all major video editors ignore the alpha channel and render transparent areas as black. Only Chromium-based browsers (Chrome, Arc, Brave, Edge) decode VP9 alpha correctly. Safari does not support it. Use MOV for editor workflows and WebM only for browser-based playback.
How it works
When you render with--format mov or --format webm, Hyperframes:
- Captures each frame as a PNG with alpha channel (instead of JPEG for MP4)
- Sets Chrome’s page background to transparent via
Emulation.setDefaultBackgroundColorOverride - Encodes with an alpha-capable codec (ProRes 4444 for MOV, VP9 for WebM)
background on html or body — leave it unset so the transparent background comes through.
Authoring transparent compositions
Verifying transparency
- In a browser: Open the MOV file — it won’t play (ProRes is not a browser codec). Instead, render a WebM copy and open it in Chrome on a checkerboard background page.
- In a video editor: Import the MOV file and place it on a track above other footage. Transparent areas should show the footage below.
- Online tool: Use rotato.app/tools/transparent-video to verify your MOV or WebM has working transparency.
Tips
- Use
npx hyperframes benchmarkto find optimal settings for your system - Docker mode is slower but guarantees identical output across platforms
- For compositions with many frames,
--gpucan significantly speed up local encoding
Next Steps
Deterministic Rendering
Understand the determinism guarantees
CLI Reference
Full list of CLI commands and flags
Troubleshooting
Fix common rendering issues
Common Mistakes
Avoid pitfalls that affect render output