unslothai/unsloth · error · SttUnavailableError

llama.cpp is not installed, so these dictation models cannot

Error message

llama.cpp is not installed, so these dictation models cannot run. Run `unsloth studio update` to install it.

What it means

SttUnavailableError raised by ensure_engine_available() in the mtmd sidecar: find_llama_server_binary() (delegating to LlamaCppBackend._find_llama_server_binary) found no llama-server executable, so multimodal dictation models cannot run at all. Unlike transient engine errors, this is an installation gap — nothing is on disk to execute.

Source

Thrown at studio/backend/core/inference/stt_mtmd_sidecar.py:162

    try:
        import av  # noqa: F401
    except Exception:
        # No PyAV means every transcription 501s on decode, so offering a
        # multi-gigabyte download here would be a waste.
        return False
    return True


def _llama_server_child_env(binary: str) -> dict:
    """The chat backend's llama-server environment, for the same binary."""
    from core.inference.llama_cpp import LlamaCppBackend
    return LlamaCppBackend._llama_server_env_for_binary(binary)


def ensure_engine_available() -> str:
    binary = find_llama_server_binary()
    if not binary:
        raise SttUnavailableError(
            "llama.cpp is not installed, so these dictation models cannot run. "
            "Run `unsloth studio update` to install it."
        )
    return binary


def _reap(process: Optional[subprocess.Popen]) -> None:
    """Stop a child and wait for it, so its port and VRAM are actually free.

    terminate() alone returns before the process has gone, and a child that
    ignores SIGTERM would hold both until Studio exits.
    """
    if process is None:
        return
    try:
        if process.poll() is None:
            process.terminate()
            try:

View on GitHub (pinned to 203007d190)

Solutions

  1. Run `unsloth studio update` and let it install llama.cpp, then retry.
  2. Verify the managed install directory contains the llama-server binary and it is executable.
  3. If the update step fails, read its logs for the download/build failure (network, disk space, permissions) and fix that first.
Defensive patterns

Strategy: validation

Validate before calling

from core.inference.stt_mtmd_sidecar import find_llama_server_binary
if find_llama_server_binary() is None:
    prompt_run_studio_update()
    return

Type guard

from core.inference.stt_mtmd_sidecar import find_llama_server_binary

def llama_cpp_ready() -> bool:
    return find_llama_server_binary() is not None

Try / catch

try:
    sidecar.load(model_id)
except SttUnavailableError as exc:
    if "not installed" in str(exc):
        prompt_run_studio_update()  # then retry after install

Prevention

When it happens

Trigger: Calling any mtmd sidecar entry point (load/transcribe/ensure) on a machine where llama.cpp was never installed or its managed install is missing, because `unsloth studio update` was not run or its install step failed.

Common situations: Fresh environment without the Studio update step; partial update where the chat backend installed but llama-server was pruned; managed install directory deleted or on an unreadable path; PATH/shim issues after moving the install.

Related errors


AI-assisted analysis of unslothai/unsloth@203007d190 (2026-08-15). Data as JSON: /api/errors/2e1c53527ea6aca4. Report an issue: GitHub.