{"record":{"id":"f2ad1f6bd57e182d","repo":"heygen-com/hyperframes","slug":"build-completed-but-whisper-cli-not-found","errorCode":null,"errorMessage":"Build completed but whisper-cli not found","messagePattern":"Build completed but whisper-cli not found","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/cli/src/whisper/manager.ts","lineNumber":143,"sourceCode":"      cwd: BUILD_DIR,\n      stdio: [\"pipe\", \"pipe\", \"pipe\"],\n      timeout: 300_000,\n    });\n  } catch (err: unknown) {\n    // Build failed — capture diagnostics, then clean up so next attempt starts fresh\n    let detail = \"\";\n    if (err && typeof err === \"object\" && \"stderr\" in err) {\n      const stderr = String(err.stderr).trim();\n      if (stderr) detail = `\\n${stderr.slice(-500)}`;\n    }\n    rmSync(BUILD_DIR, { recursive: true, force: true });\n    throw new Error(\n      `whisper-cpp build failed. Ensure cmake and a C compiler are installed.${detail}`,\n    );\n  }\n\n  const result = findBuiltBinary();\n  if (!result) throw new Error(\"Build completed but whisper-cli not found\");\n  return result;\n}\n\n// --- Public API -------------------------------------------------------------\n\nexport function findWhisper(): WhisperResult | undefined {\n  return findFromEnv() ?? findFromSystem() ?? findBuiltBinary();\n}\n\nexport function getInstallInstructions(): string {\n  if (platform() === \"darwin\") {\n    return \"brew install whisper-cpp\";\n  }\n  if (platform() === \"linux\") {\n    return \"Build from source: https://github.com/ggml-org/whisper.cpp#building (requires cmake and a C compiler)\";\n  }\n  if (platform() === \"win32\") {\n    return \"Build with cmake: https://github.com/ggml-org/whisper.cpp#building\";","sourceCodeStart":125,"sourceCodeEnd":161,"githubUrl":"https://github.com/heygen-com/hyperframes/blob/c2996c8626135db5253519359d8a063d3bafad8d/packages/cli/src/whisper/manager.ts#L125-L161","documentation":"Thrown when the whisper.cpp build process completed without throwing an error, but findBuiltBinary could not locate the expected whisper-cli binary in the build output directory. This indicates the build 'succeeded' from execFileSync's perspective but didn't produce the expected artifact — a silent or partial build.","triggerScenarios":"The build script ran but produced a binary with a different name or in a different location than findBuiltBinary expects; the build was interrupted in a way that exited 0 without completing; a Makefile target was skipped; the binary was produced then immediately deleted by antivirus or cleanup.","commonSituations":"A whisper.cpp version change that renamed or relocated the output binary; a partial build that compiled only some targets; antivirus quarantine on Windows; disk issues causing the binary to not be written.","solutions":["Check the build directory manually for any whisper-related binary to understand what was produced.","Install whisper-cpp via Homebrew (macOS: brew install whisper-cpp) to avoid source-build issues.","Download a pre-built whisper-cpp binary and set HYPERFRAMES_WHISPER to its path.","Retry the build — the build directory is cleaned on failure, so the next attempt starts fresh."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  return await buildFromSource(onProgress);\n} catch (err) {\n  if (err instanceof Error && err.message.includes(\"whisper-cli not found\")) {\n    // Build 'succeeded' but binary is elsewhere — fall back to brew or manual install\n    console.warn(\"Source build produced no binary. Install via brew or set HYPERFRAMES_WHISPER.\");\n  }\n  throw err;\n}","preventionTips":["Prefer Homebrew or a pre-built binary over source builds to avoid binary-location mismatches.","If building from source, verify the whisper.cpp version matches what the CLI expects.","Set HYPERFRAMES_WHISPER to a known-good binary to bypass the build path entirely."],"tags":["whisper","build","native-compilation","binary"],"backgroundTag":null,"analyzedSha":"c2996c8626135db5253519359d8a063d3bafad8d","analyzedAt":"2026-08-12T22:18:56.877Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}