{"record":{"id":"0778efa12ca214ba","repo":"heygen-com/hyperframes","slug":"unsupported-platform-process-platform-proces","errorCode":null,"errorMessage":"Unsupported platform: ${process.platform} ${process.arch}","messagePattern":"Unsupported platform: (.+?) (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"packages/cli/src/browser/manager.ts","lineNumber":721,"sourceCode":"    `Point hyperframes at an already-installed Chrome/Chromium instead:\\n\\n` +\n    `  export HYPERFRAMES_BROWSER_PATH=\"${example}\"\\n\\n` +\n    `Then re-run your command. Any Chrome build works for the screenshot ` +\n    `capture path; install a real chrome-headless-shell later if you need the ` +\n    `perf-optimized BeginFrame path. Alternatively, run inside the hyperframes ` +\n    `Docker image which ships a compatible headless-shell.`;\n  return new Error(message, { cause: cause instanceof Error ? cause : undefined });\n}\n\nasync function downloadBrowser(options?: EnsureBrowserOptions): Promise<BrowserResult> {\n  if (isLinuxArm()) {\n    return ensureLinuxArmBrowser(options);\n  }\n\n  const { Browser, detectBrowserPlatform, install } = await loadPuppeteerBrowsers();\n\n  const platform = detectBrowserPlatform();\n  if (!platform) {\n    throw new Error(`Unsupported platform: ${process.platform} ${process.arch}`);\n  }\n\n  const runInstall = () =>\n    install({\n      cacheDir: CACHE_DIR,\n      browser: Browser.CHROMEHEADLESSSHELL,\n      buildId: CHROME_VERSION,\n      platform,\n      downloadProgressCallback: options?.onProgress,\n    });\n\n  let installed;\n  try {\n    installed = await installWithCorruptArchiveRecovery(\n      runInstall,\n      () => {\n        rmSync(CACHE_DIR, { recursive: true, force: true });\n        mkdirSync(CACHE_DIR, { recursive: true });","sourceCodeStart":703,"sourceCodeEnd":739,"githubUrl":"https://github.com/heygen-com/hyperframes/blob/c2996c8626135db5253519359d8a063d3bafad8d/packages/cli/src/browser/manager.ts#L703-L739","documentation":"Thrown by downloadBrowser() when @puppeteer/browsers's detectBrowserPlatform() returns null, meaning the current OS/arch combination is not recognized as one of the supported puppeteer platforms. This is the fallback after the isLinuxArm() branch (which handles ARM Linux separately), so it fires on x86 Linux, macOS, or Windows variants that puppeteer does not catalog, or on exotic platforms (freebsd, solaris). The message reports process.platform and process.arch for diagnostics.","triggerScenarios":"downloadBrowser() is called on a platform where detectBrowserPlatform() returns null — e.g. FreeBSD, Solaris, or an exotic arch; rarely on standard darwin/linux/win32 x86_64 unless the puppeteer version is mismatched.","commonSituations":"Running on FreeBSD or another uncommon Unix; a very old or very new puppeteer/browsers package whose platform list does not include the current combo; a misreported process.arch.","solutions":["Set HYPERFRAMES_BROWSER_PATH to an already-installed Chrome/Chromium on the host so download is skipped entirely.","Run inside the official hyperframes Docker image, which ships a compatible browser.","If you believe the platform should be supported, update @puppeteer/browsers (`bun install` to pick up the pinned version) and retry."],"exampleFix":"# before — unsupported platform\n$ hyperframes render ...\nError: Unsupported platform: freebsd x64\n# point at a system Chromium\n$ export HYPERFRAMES_BROWSER_PATH=/usr/local/bin/chromium\n$ hyperframes render ...","handlingStrategy":"validation","validationCode":"import { existsSync } from 'node:fs';\nfunction browserPathReady(): boolean {\n  return Boolean(process.env.HYPERFRAMES_BROWSER_PATH) && existsSync(process.env.HYPERFRAMES_BROWSER_PATH);\n}\nif (!browserPathReady() && !['darwin','linux','win32'].includes(process.platform)) {\n  throw new Error(`Unsupported platform ${process.platform}/${process.arch}; set HYPERFRAMES_BROWSER_PATH.`);\n}","typeGuard":"function platformSupported(): boolean {\n  return ['darwin','linux','win32'].includes(process.platform);\n}","tryCatchPattern":"try {\n  await ensureBrowser();\n} catch (err) {\n  if (/Unsupported platform/i.test((err as Error).message)) {\n    // set HYPERFRAMES_BROWSER_PATH to a system browser and retry\n  }\n  throw err;\n}","preventionTips":["On exotic platforms, always set HYPERFRAMES_BROWSER_PATH to a local Chrome/Chromium.","Prefer the official Docker image on unsupported OSes.","Confirm process.platform/arch is in puppeteer's supported set before invoking download."],"tags":["browser","platform","unsupported","chrome","environment"],"backgroundTag":null,"analyzedSha":"c2996c8626135db5253519359d8a063d3bafad8d","analyzedAt":"2026-08-12T22:18:56.877Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}