{"record":{"id":"0fccc871f6a9a0a5","repo":"unslothai/unsloth","slug":"the-local-transcription-runtime-is-missing-its-pai","errorCode":null,"errorMessage":"The local transcription runtime is missing its paired ggml libraries. Run `unsloth studio update` to reinstall it.","messagePattern":"The local transcription runtime is missing its paired ggml libraries\\. Run `unsloth studio update` to reinstall it\\.","errorType":"exception","errorClass":"SttEngineUnavailableError","httpStatus":501,"severity":"error","filePath":"studio/backend/core/inference/stt_ggml_sidecar.py","lineNumber":335,"sourceCode":"    if runtime_inference_failure() is not None:\n        return False\n    try:\n        import av  # noqa: F401\n    except Exception:\n        # No PyAV means every transcription 501s on decode.\n        return False\n    return True\n\n\ndef ensure_engine_available() -> str:\n    binary = find_whisper_server_binary()\n    if binary is None:\n        raise SttEngineUnavailableError(\n            \"The local transcription runtime is not installed. Run \"\n            \"`unsloth studio update` to install it.\"\n        )\n    if not slim_runtime_intact(binary):\n        raise SttEngineUnavailableError(\n            \"The local transcription runtime is missing its paired ggml \"\n            \"libraries. Run `unsloth studio update` to reinstall it.\"\n        )\n    return binary\n\n\n# ---------------------------------------------------------------------------\n# whisper-server child-process environment\n# ---------------------------------------------------------------------------\n# Build the whisper-server env: prepend the binary dir (co-located libs win, and\n# a backstop where the loader ignores the rpath) and scrub secret-bearing vars the\n# binary never needs. On WSL2 ROCm the system HIP libs go first, since a bundle's\n# bare-metal HIP cannot drive /dev/dxg. A CUDA bundle ships libggml-cuda.so but not\n# libcudart/libcublas (paired with the user's PyTorch), so add the\n# CUDA-from-PyTorch runtime dirs the selection gated on, else the backend cannot\n# resolve a runtime that lives only in wheels. Mirrors llama's binary_env(); the\n# scrub/WSL/dedupe helpers live in utils.prebuilt.\n","sourceCodeStart":317,"sourceCodeEnd":353,"githubUrl":"https://github.com/unslothai/unsloth/blob/203007d19051dcd2ae33876786d117c99f6b0368/studio/backend/core/inference/stt_ggml_sidecar.py#L317-L353","documentation":"The whisper-server binary was found but slim_runtime_intact() reports its paired ggml shared libraries are missing. The runtime ships as a bundle: the binary dynamically links sibling ggml libs that must stay co-located. A binary without its libs would fail to exec or fall back to broken behavior, so the guard refuses upfront with a reinstall instruction.","triggerScenarios":"Someone copied or moved just the binary out of its bundle; the libs were deleted/quarantined; an interrupted update replaced libs with mismatched or missing files.","commonSituations":"Antivirus/cleaner removing .so/.dylib files; users 'tidying' the runtime dir; partial downloads or disk-full during update leaving an incomplete bundle.","solutions":["Run `unsloth studio update` to reinstall the complete runtime bundle.","Avoid relocating the binary — reference it in place, since co-located libs win at load time.","If it recurs, check what is deleting files from the managed runtime directory (AV exclusions, cleanup cron)."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"from studio.backend.core.inference.stt_ggml_sidecar import find_whisper_server_binary, slim_runtime_intact\nbinary = find_whisper_server_binary()\nif binary is not None and not slim_runtime_intact(binary):\n    prompt_reinstall(\"transcription runtime incomplete; run unsloth studio update\")","typeGuard":"def stt_runtime_complete() -> bool:\n    b = find_whisper_server_binary()\n    return b is not None and slim_runtime_intact(b)","tryCatchPattern":"try:\n    ensure_engine_available()\nexcept SttEngineUnavailableError as e:\n    if \"paired ggml libraries\" in str(e):\n        run_updater_then_retry()\n    raise","preventionTips":["Never move or copy the binary out of its bundle directory.","Add the runtime directory to antivirus/cleaner exclusions.","Re-run the updater after any interrupted update."],"tags":["stt","whisper","ggml","installation","shared-libraries"],"backgroundTag":null,"analyzedSha":"203007d19051dcd2ae33876786d117c99f6b0368","analyzedAt":"2026-08-15T02:48:39.846Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}