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

  1. Check the build directory manually for any whisper-related binary to understand what was produced.
  2. Install whisper-cpp via Homebrew (macOS: brew install whisper-cpp) to avoid source-build issues.
  3. Download a pre-built whisper-cpp binary and set HYPERFRAMES_WHISPER to its path.
  4. 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

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


AI-assisted analysis of heygen-com/hyperframes@c2996c8626 (2026-08-12). Data as JSON: /api/errors/f2ad1f6bd57e182d. Report an issue: GitHub.