{"record":{"id":"085d74b8c1d320e1","repo":"heygen-com/hyperframes","slug":"chrome-headless-shell-is-not-available-for-linux-a","errorCode":null,"errorMessage":"Chrome Headless Shell is not available for Linux ARM64 (DGX Spark, GB10, Jetson).\\n\\nInstall Chromium manually and point hyperframes to it:\\n\\n  sudo apt-get install -y chromium-browser\\n  export HYPERFRAMES_BROWSER_PATH=$(which chromium-browser)\\n\\nThen re-run your command. The HYPERFRAMES_BROWSER_PATH env var persists for the session.","messagePattern":"Chrome Headless Shell is not available for Linux ARM64 \\(DGX Spark, GB10, Jetson\\)\\.\\\\n\\\\nInstall Chromium manually and point hyperframes to it:\\\\n\\\\n  sudo apt-get install -y chromium-browser\\\\n  export HYPERFRAMES_BROWSER_PATH=\\$\\(which chromium-browser\\)\\\\n\\\\nThen re-run your command\\. The HYPERFRAMES_BROWSER_PATH env var persists for the session\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"packages/cli/src/browser/manager.ts","lineNumber":565,"sourceCode":"      timeout: 120_000,\n    });\n\n    if (result.status === 0) {\n      const afterInstall = await findBrowser();\n      if (afterInstall) {\n        console.error(`\\n✅ Chromium installed at ${afterInstall.executablePath}\\n`);\n        return afterInstall;\n      }\n    } else {\n      // apt succeeded but binary not found, or apt failed — fall through to helpful error.\n      console.error(\"\\n⚠️  apt-get exited with errors. Trying anyway...\\n\");\n      const afterAttempt = await findBrowser();\n      if (afterAttempt) return afterAttempt;\n    }\n  }\n\n  // Could not auto-install — give clear manual instructions.\n  throw new Error(\n    `Chrome Headless Shell is not available for Linux ARM64 (DGX Spark, GB10, Jetson).\\n\\n` +\n      `Install Chromium manually and point hyperframes to it:\\n\\n` +\n      `  sudo apt-get install -y chromium-browser\\n` +\n      `  export HYPERFRAMES_BROWSER_PATH=$(which chromium-browser)\\n\\n` +\n      `Then re-run your command. The HYPERFRAMES_BROWSER_PATH env var persists for the session.`,\n  );\n}\n\n/**\n * Find or download a browser.\n * Resolution: env var -> cached download -> system Chrome -> auto-download.\n * With `preferManagedChrome`: env var -> OUR pinned cache -> auto-download\n * (puppeteer-cache preference and system Chrome are both skipped).\n */\nexport async function ensureBrowser(options?: EnsureBrowserOptions): Promise<BrowserResult> {\n  const fromEnv = findFromEnv();\n  if (fromEnv) return fromEnv;\n","sourceCodeStart":547,"sourceCodeEnd":583,"githubUrl":"https://github.com/heygen-com/hyperframes/blob/c2996c8626135db5253519359d8a063d3bafad8d/packages/cli/src/browser/manager.ts#L547-L583","documentation":"Thrown by ensureLinuxArmBrowser() on Linux ARM64 (isLinuxArm() true) when no browser is found via env/cache/system AND apt-based auto-install of chromium-browser either failed or did not produce a usable binary. chrome-headless-shell has no Linux ARM64 build, so on DGX Spark / GB10 / Jetson the tool falls back to system Chromium; when that also can't be obtained automatically, it errors with manual install instructions.","triggerScenarios":"Running on aarch64 Linux; HYPERFRAMES_BROWSER_PATH unset; no cached or system Chrome; either apt-get is unavailable (non-Debian ARM like Fedora/RHEL/Arch ARM) or apt-get install chromium-browser failed (package not found, no sudo, offline).","commonSituations":"Jetson/NVIDIA ARM device with a non-Ubuntu distro; a restricted environment without sudo; apt package is named differently (e.g. 'chromium' not 'chromium-browser' on some Debian versions); offline ARM box.","solutions":["Install Chromium manually and point hyperframes at it: `sudo apt-get install -y chromium-browser` (or your distro's package), then `export HYPERFRAMES_BROWSER_PATH=$(which chromium-browser)`.","If the package name differs (Debian uses 'chromium'), install that and set HYPERFRAMES_BROWSER_PATH to its path.","On non-Debian ARM distros, use the distro's package manager (dnf/pacman) to install chromium, then set the env var.","Re-run your command after exporting HYPERFRAMES_BROWSER_PATH (persists for the session)."],"exampleFix":"# before — ARM64, no browser, auto-install failed\n$ hyperframes render ...\n# install + point at it\n$ sudo apt-get install -y chromium-browser\n$ export HYPERFRAMES_BROWSER_PATH=$(which chromium-browser)\n$ hyperframes render ...","handlingStrategy":"validation","validationCode":"import { existsSync } from 'node:fs';\nfunction armBrowserConfigured(): boolean {\n  return Boolean(process.env.HYPERFRAMES_BROWSER_PATH) && existsSync(process.env.HYPERFRAMES_BROWSER_PATH);\n}\nif (process.arch === 'arm64' && process.platform === 'linux' && !armBrowserConfigured()) {\n  throw new Error('Set HYPERFRAMES_BROWSER_PATH to a Chromium binary on Linux ARM64.');\n}","typeGuard":"function isLinuxArm(): boolean {\n  return process.platform === 'linux' && process.arch === 'arm64';\n}","tryCatchPattern":"try {\n  await ensureBrowser();\n} catch (err) {\n  if (/Chrome Headless Shell is not available for Linux ARM64/i.test((err as Error).message)) {\n    console.error('Install chromium-browser and: export HYPERFRAMES_BROWSER_PATH=$(which chromium-browser)');\n  }\n  throw err;\n}","preventionTips":["On Linux ARM64, pre-install Chromium and set HYPERFRAMES_BROWSER_PATH in your shell profile.","Bake Chromium into ARM Docker images so the manual step is unnecessary.","For non-Debian ARM distros, use the distro's chromium package name."],"tags":["browser","linux-arm64","chrome","platform","environment","install"],"backgroundTag":null,"analyzedSha":"c2996c8626135db5253519359d8a063d3bafad8d","analyzedAt":"2026-08-12T22:18:56.877Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}