GitHub-linked commit authors for this SKILL.md at the saved revision. Co-authors and history before file renames are not included. Some commit authors have no linked GitHub account.
HeadlessExperimental.beginFrame' wasn't found (first thing to check)
Symptom:npx hyperframes render fails with:
✗ Render failed
Protocol error (HeadlessExperimental.beginFrame):
'HeadlessExperimental.beginFrame' wasn't found
Cause: Chromium 147+ removed the HeadlessExperimental.beginFrame CDP command. This affected sandbox environments (e.g., OpenClaw, some containerized agent hosts) that ship modern Chromium as the system browser. See hyperframes#294.
Fix (permanent — preferred): upgrade.
npx hyperframes upgrade -y
# or
npm install -g hyperframes@latest
hyperframes >= 0.4.2 auto-detects whether the resolved browser supports beginFrame (checks for chrome-headless-shell in the binary path) and falls back to screenshot capture mode when it doesn't. Commit 4c72ba4 (March 2026) shipped this auto-detect.
This forces screenshot mode regardless of the binary. Screenshot mode is slightly slower but visually identical.
Fix (prevent — recommended): install chrome-headless-shell so the engine can use the fast BeginFrame path:
npx puppeteer browsers install chrome-headless-shell
# or let the CLI do it
npx hyperframes browser --install
scripts/setup.sh runs this automatically.
npx hyperframes render hangs for 120s then times out
Cause: the resolved browser is system Chrome (e.g., /usr/bin/google-chrome) and doesn't support the BeginFrame path, but auto-detect also missed it (older hyperframes version).
Fix:
Check which binary is being used: npx hyperframes browser --path
If it's system Chrome, either:
Install chrome-headless-shell: npx hyperframes browser --install, OR
Set the escape hatch: export PRODUCER_FORCE_SCREENSHOT=true, OR
Upgrade: npx hyperframes upgrade -y
ffmpeg: command not found
Install FFmpeg via your system package manager:
OS / distro
Command
Ubuntu / Debian
sudo apt-get install -y ffmpeg
Fedora / RHEL
sudo dnf install -y ffmpeg
Arch
sudo pacman -S ffmpeg
macOS
brew install ffmpeg
Windows
winget install Gyan.FFmpeg
Verify: ffmpeg -version.
Node version X is not supported
HyperFrames requires Node.js >= 22. Check with node --version.
nvm:nvm install 22 && nvm use 22
Homebrew (macOS):brew install node@22 && brew link --overwrite node@22
The headless browser needs namespace permissions for sandboxing.
Runaway CPU from leftover preview workers
Symptom: load average climbs and stays high; top shows several chrome-headless-shell --type=gpu-process at ~300%+ CPU each, alive for hours/days, even when you're not rendering.
Cause:npx hyperframes preview is a long-lived server that keeps Chrome render workers resident. On hosts with no real GPU (WSL, containers, most CI), each idle worker falls back to software WebGL (swiftshader) whose GPU process busy-spins a CPU core. A preview left open — or several started over time — stacks these up.
Diagnose:
pgrep -af chrome-headless-shell # list the workers + their parent flags
pgrep -af "hyperframes.*preview" # the preview server(s) holding them open
uptime # confirm elevated load average
Fix: stop the preview server and its workers (see SKILL.md#cleanup):
pkill -f "hyperframes.*preview"
pkill -f chrome-headless-shell # only if no other tool uses it — check pgrep first
Avoid: never leave a preview running after review; use render (one-shot, self-cleaning) for output. Keep --workers low on shared/GPU-less hosts.