exo-explore/exo · error · InsufficientDiskSpaceError

No writable model directory has {required_bytes / (1024**3):

Error message

No writable model directory has {required_bytes / (1024**3):.1f} GiB free. Checked: {[str(d) for d in EXO_MODELS_DIRS]}

What it means

Error "No writable model directory has {required_bytes / (1024**3):.1f} GiB free. Checked: {[str(d) for d in EXO_MODELS_DIRS]}" thrown in exo-explore/exo.

Source

Thrown at src/exo/download/download_utils.py:195

        return found
    return EXO_DEFAULT_MODELS_DIR / model_id.normalize()


def select_download_dir(required_bytes: int) -> Path:
    """Pick the first writable model directory with enough free space.

    Raises ``InsufficientDiskSpaceError`` if none have enough space.
    """
    for candidate_dir in EXO_MODELS_DIRS:
        if not candidate_dir.exists():
            continue
        try:
            usage = shutil.disk_usage(candidate_dir)
            if usage.free >= required_bytes:
                return candidate_dir
        except OSError:
            continue
    raise InsufficientDiskSpaceError(
        f"No writable model directory has {required_bytes / (1024**3):.1f} GiB free. "
        f"Checked: {[str(d) for d in EXO_MODELS_DIRS]}"
    )


async def select_download_dir_for_shard(
    model_id: ModelId,
    filtered_file_list: list[FileListEntry],
    total_size: int,
) -> Path:
    for candidate_dir in EXO_MODELS_DIRS:
        if not candidate_dir.exists():
            continue
        sub = candidate_dir / model_id.normalize()
        if not await aios.path.isdir(sub):
            continue
        existing_bytes = 0
        for file_entry in filtered_file_list:

View on GitHub (pinned to 21a54c5ea0)

When it happens

Trigger: Thrown at src/exo/download/download_utils.py:195 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of exo-explore/exo@21a54c5ea0 (2026-08-26). Data as JSON: /api/errors/569636e8d9a63a51. Report an issue: GitHub.