deepseek-ai/deepseek-harness · error · FileNotFoundError

deepseek-harness-runtime-bin is missing

Error message

deepseek-harness-runtime-bin is missing {metadata}

What it means

The runtime package's `__init__` looked for required metadata (e.g. the platform/carrier markers) on the installed `deepseek-harness-runtime-bin` package and found it absent — typically the platform wheel was not installed alongside, or an incompatible version was. The adjacent hint names the two supported ways to obtain the executable.

Solutions

  1. Install the matching deepseek-harness-runtime-bin platform wheel so its metadata is present.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at python/sdk-runtime/src/deepseek_harness_runtime/__init__.py:51 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24). Data as JSON: /api/errors/8accd873b4d7a108. Report an issue: GitHub.

Appendix: source

Thrown at python/sdk-runtime/src/deepseek_harness_runtime/__init__.py:51

_PLATFORM_TAGS = {"linux": "linux", "darwin": "macos"}
_ARCH_TAGS = {"x86_64": "x64", "amd64": "x64", "arm64": "arm64", "aarch64": "arm64"}

_EXE_ACQUISITION_HINT = (
    "Two ways to get the executable: run `scripts/build-exe-for-python-sdk.ts` (via tsx) in a "
    "deepseek-harness checkout, or install the matching `deepseek-harness-runtime-bin` platform "
    "wheel retained by the `build-exe-for-python-sdk` CI workflow. For local development "
    "against a repo source build, explicitly select the dev-only node carrier with "
    f"{RUNTIME_MODE_ENV_VAR}=node (or resolve_bundled_launch_args('node'))."
)


def bundled_package_dir() -> Path:
    """Root directory of the installed runtime package data (the directory of this module)."""
    root = Path(__file__).resolve().parent
    metadata = root / PACKAGE_METADATA_FILENAME
    if not metadata.is_file():
        raise FileNotFoundError(f"deepseek-harness-runtime-bin is missing {metadata}")
    return root


def bundled_default_config_path() -> Path:
    """Path of the checked-in default runtime configuration (``runtime/cordis.yml``).

    The client SDK injects this path via ``$DSH_CORDIS_CONFIG`` when the caller
    supplies no config and the launch resolves to the bundled runtime — the
    runtime binary itself always demands an explicit config.
    """
    path = bundled_package_dir() / "runtime" / "cordis.yml"
    if not path.is_file():
        raise FileNotFoundError(
            f"deepseek-harness-runtime-bin is missing the default runtime config at {path}"
        )
    return path

View on GitHub (pinned to b150a551b8)