heygen-com/hyperframes · error
Build completed but whisper-cli not found
Error message
Build completed but whisper-cli not found
What it means
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.
Source
Thrown at packages/cli/src/whisper/manager.ts:143
cwd: BUILD_DIR,
stdio: ["pipe", "pipe", "pipe"],
timeout: 300_000,
});
} catch (err: unknown) {
// Build failed — capture diagnostics, then clean up so next attempt starts fresh
let detail = "";
if (err && typeof err === "object" && "stderr" in err) {
const stderr = String(err.stderr).trim();
if (stderr) detail = `\n${stderr.slice(-500)}`;
}
rmSync(BUILD_DIR, { recursive: true, force: true });
throw new Error(
`whisper-cpp build failed. Ensure cmake and a C compiler are installed.${detail}`,
);
}
const result = findBuiltBinary();
if (!result) throw new Error("Build completed but whisper-cli not found");
return result;
}
// --- Public API -------------------------------------------------------------
export function findWhisper(): WhisperResult | undefined {
return findFromEnv() ?? findFromSystem() ?? findBuiltBinary();
}
export function getInstallInstructions(): string {
if (platform() === "darwin") {
return "brew install whisper-cpp";
}
if (platform() === "linux") {
return "Build from source: https://github.com/ggml-org/whisper.cpp#building (requires cmake and a C compiler)";
}
if (platform() === "win32") {
return "Build with cmake: https://github.com/ggml-org/whisper.cpp#building";View on GitHub (pinned to c2996c8626)
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.
Defensive patterns
Strategy: fallback
Try / catch
try {
return await buildFromSource(onProgress);
} catch (err) {
if (err instanceof Error && err.message.includes("whisper-cli not found")) {
// Build 'succeeded' but binary is elsewhere — fall back to brew or manual install
console.warn("Source build produced no binary. Install via brew or set HYPERFRAMES_WHISPER.");
}
throw err;
} Prevention
- 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.
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- whisper-cpp build failed. Ensure cmake and a C compiler are
- [build-zip] ${label} at ${path} is too short — read ${bytesR
- --source must be 'sparticuz' or 'chrome-headless-shell' (got
- Unknown flag: ${arg}
- [build-zip] unzipped bundle ${formatBytes(unzippedBytes)} ex
AI-assisted analysis of heygen-com/hyperframes@c2996c8626 (2026-08-12).
Data as JSON: /api/errors/f2ad1f6bd57e182d.
Report an issue: GitHub.