Repository navigation
issues installing on openclaw due to HeadlessExperimental.beginFrame #294
Copy link
Copy link
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
hyperframes installs successfully on openclaw but fails during rendering:
✗ Render failed
Protocol error (HeadlessExperimental.beginFrame):
'HeadlessExperimental.beginFrame' wasn't found
openclaw "healed" itself by discovering: PRODUCER_FORCE_SCREENSHOT=true
but seems like something that should be auto-detected/handled by the package? For context, this is what the openclaw instance reported:
...the code already has a built-in escape hatch: PRODUCER_FORCE_SCREENSHOT=true forces screenshot mode and bypasses the broken HeadlessExperimental.beginFrame path. Let me verify and create a patched wrapper.
Now I understand the full picture. Let me test that PRODUCER_FORCE_SCREENSHOT=true forces screenshot mode:
Confirmed — Chromium 147 doesn't support HeadlessExperimental.beginFrame. The fix is to force screenshot mode. I can do this cleanly with an env var, but the proper patch is to change the default so it auto-detects correctly.
It works with PRODUCER_FORCE_SCREENSHOT=true. Now let me make that the permanent default for this server.
Now I need to make forceScreenshot: true the default for this server. Let me find where the config is stored:
PRODUCER_FORCE_SCREENSHOT=true works. Now I'll make it the permanent default so every render uses screenshot mode:
Clean render with screenshot capture. Let me add a note to the skill so this server-specific override is documented for future sessions:
Now let me add a note to the hyperframes skill:
Now update the CLI skill to document the screenshot-mode note:
All good. Here's what was done:
Installation
• npx skills add heygen-com/hyperframes pulled all 5 hyperframes skills into ~/.openclaw/workspace/.agents/skills/
• npm install -g hyperframes installed the CLI globally (needed for the hyperframes binary and bundled engine code)
Patch applied
The capture engine defaults to forceScreenshot: false, which on Linux ARM64 with a system Chromium tries to use HeadlessExperimental.beginFrame — a protocol removed in Chromium 147. One line in the bundled engine was patched:
// BEFORE (in DEFAULT_CONFIG2):
forceScreenshot: envBool("PRODUCER_FORCE_SCREENSHOT", false),
// AFTER:
forceScreenshot: envBool("PRODUCER_FORCE_SCREENSHOT", true),
This makes screenshot capture the default on this machine. The PRODUCER_FORCE_SCREENSHOT env var still works as an override if needed....
Link to reproduction
n/a
Steps to reproduce
run on openclaw and attempt a render
Expected behavior
render successfully
Actual behavior
fails on render
Environment
n/aAdditional context
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
Activity
fix(engine): auto-fall back to screenshot mode on Chromium >= 132
fix(engine): probe HeadlessExperimental.beginFrame, not just .enable
docs(engine): correct version attribution for beginFrame probe
fix(engine): auto-fall back to screenshot mode when chrome-headless-s…
miguel-heygen commentedon Apr 16, 2026
Solved! Thanks for the feedback @niyogi!
jrusso1020 commentedon Apr 16, 2026
Have your openClaw run
npx hyperframes upgrade -yto upgrade to the latest version @niyogiThanks for the first issue!
feat(cli): add --json output to doctor
fix(engine): auto-fall back to screenshot mode on Chromium >= 132
fix(engine): probe HeadlessExperimental.beginFrame, not just .enable
docs(engine): correct version attribution for beginFrame probe
fix(engine): auto-fall back to screenshot mode when chrome-headless-s…
feat(cli): add --json output to doctor