tonhowtf/omniget · error

o whisper.cpp nao publica binario para este sistema; instale

Error message

o whisper.cpp nao publica binario para este sistema; instale com `brew install whisper-cpp` ou aponte o caminho em Configuracoes

What it means

asset_name() maps the current OS/arch to a prebuilt whisper.cpp release asset. whisper.cpp only publishes binary packages for Windows x64 and Linux (Ubuntu x64/arm64); on any other platform (notably macOS) this anyhow! error is returned instead. The message tells the user to install whisper-cpp via Homebrew or point the binary path in the app's Settings (binary_overrides).

Solutions

  1. On macOS run `brew install whisper-cpp` so locate() finds the system whisper-cli.
  2. Or set a custom binary path via the app's Configuracoes (binary_overrides for "whisper-cli").
  3. Check WhisperStatus.can_install / variants before showing an install button; on macOS use the install_hint instead.
  4. If you need managed installs on a new platform, extend asset_name() with a mapping for that target.

Example fix

// before
let exe = whisper::install("cpu", &progress).await?;

// after
let st = whisper::status().await;
if st.can_install {
    let exe = whisper::install("cpu", &progress).await?;
} else {
    // macOS path: rely on system whisper-cli installed via brew, or custom override
    eprintln!("instale com: {}", st.install_hint);
}
Defensive patterns

Strategy: validation

Validate before calling

let st = whisper::status().await;
if !st.can_install {
    eprintln!("instale manualmente: {}", st.install_hint); // e.g. "brew install whisper-cpp"
}

Try / catch

match whisper::install(variant, &progress).await {
    Ok(path) => println!("installed at {}", path.display()),
    Err(e) if e.to_string().contains("nao publica binario") => {
        // fall back to system whisper-cli / brew install
    }
    Err(e) => return Err(e),
}

Prevention

When it happens

Trigger: Calling whisper::install(variant, progress) (or status()->can_install flows that call asset_name) on a platform where neither cfg!(target_os="windows") nor cfg!(target_os="linux") holds — in practice: running the macOS build and clicking install, or a cross-compile to an unsupported target.

Common situations: A macOS user tries the built-in whisper.cpp installer; a CI job cross-compiles the Tauri app for an OS with no upstream release asset; the codebase was updated to a target whisper.cpp no longer ships binaries for.

Understand the failure class

Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.

Related errors


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/1ddedf715d3fb645. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/whisper.rs:174

    } else {
        vec![]
    }
}

fn asset_name(variant: &str) -> anyhow::Result<&'static str> {
    Ok(if cfg!(target_os = "windows") {
        match variant {
            "cuda" => "whisper-cublas-12.4.0-bin-x64.zip",
            _ => "whisper-bin-x64.zip",
        }
    } else if cfg!(target_os = "linux") {
        if cfg!(target_arch = "aarch64") {
            "whisper-bin-ubuntu-arm64.tar.gz"
        } else {
            "whisper-bin-ubuntu-x64.tar.gz"
        }
    } else {
        return Err(anyhow!(
            "o whisper.cpp nao publica binario para este sistema; instale com `brew install whisper-cpp` ou aponte o caminho em Configuracoes"
        ));
    })
}

pub async fn status() -> WhisperStatus {
    let located = locate().await;
    let (path, source) = match &located {
        Some((p, s)) => (Some(p.clone()), *s),
        None => (None, "missing"),
    };
    let version = match &path {
        Some(p) => dependencies::check_version_at_path(p, "whisper-cli").await,
        None => None,
    };
    let v = variants();
    WhisperStatus {
        installed: path.is_some(),

View on GitHub (pinned to 8600b91f42)