# `vllm_mlx.model_workflow`

Model acquisition, inspection, and conversion workflow helpers.

[View the complete module source at #L1-L661](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L1-L661).

## API details

Each callable below includes its exact signature, type annotations, inputs, defaults, return contract, documented exceptions, implementation source, and parsed docstring sections when the source provides them.

::: vllm_mlx.model_workflow
    options:
      members:
        - MODEL_MANIFEST_NAME
        - CONVERSION_MANIFEST_NAME
        - REGISTRATION_MANIFEST_NAME
        - QUALIFICATION_REQUEST_NAME
        - _MODEL_ID_RE
        - AcquisitionOptions
        - ConversionOptions
        - RegistrationOptions
        - QualificationOptions
        - _now_iso
        - _bytes_to_gb
        - _read_json
        - _write_json
        - _local_file_inventory
        - _hf_file_inventory
        - _hf_config
        - _config_value
        - _model_family
        - _estimate_fit
        - _model_file_bytes
        - _NON_MLX_QUANT_METHODS
        - _is_mlx_quantization
        - _looks_like_mlx_name
        - _is_model_id
        - _fast_transfer_env
        - inspect_model
        - acquire_model
        - _conversion_command
        - convert_model
        - _existing_manifests
        - _drop_none
        - register_model
        - _qualification_command
        - qualify_model
      filters: []
      show_if_no_docstring: true

## Complete contract reference

Expand any definition for its exact inputs, annotations, defaults, return contract, directly raised exceptions, source-grounded behavior, and immutable line link. This section includes private and nested definitions that ordinary API generators omit.

<details class="api-contract" id="contract-vllm_mlx.model_workflow.AcquisitionOptions" markdown="1">
<summary><code>vllm_mlx.model_workflow.AcquisitionOptions</code> · class</summary>

```python
vllm_mlx.model_workflow.AcquisitionOptions(revision: str | None = None, target_dir: str | None = None, staging_dir: str | None = None, is_mllm: bool = False, fast_transfer: bool = True, local_files_only: bool = False)
```

Options for Hugging Face model acquisition.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `revision` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `target_dir` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `staging_dir` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `is_mllm` | `bool` | `no` | `False` | Optional constructor field; defaults to `False`. |
| `fast_transfer` | `bool` | `no` | `True` | Optional constructor field; defaults to `True`. |
| `local_files_only` | `bool` | `no` | `False` | Optional constructor field; defaults to `False`. |

**Returns**

- Constructs: `vllm_mlx.model_workflow.AcquisitionOptions`

**Exceptions and behavior**

Class `AcquisitionOptions` declares 0 direct member(s).
No direct `raise` statement appears in this definition.

[View source #L38-L46](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L38-L46).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow.ConversionOptions" markdown="1">
<summary><code>vllm_mlx.model_workflow.ConversionOptions</code> · class</summary>

```python
vllm_mlx.model_workflow.ConversionOptions(source_path: str, output_path: str, quantize: bool = False, q_bits: int | None = None, q_group_size: int | None = None, q_mode: str | None = None, quant_predicate: str | None = None, dtype: str | None = None, trust_remote_code: bool = False, dry_run: bool = False)
```

Options for the mlx-lm conversion backend.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `source_path` | `str` | `yes` | `none` | Required constructor field. |
| `output_path` | `str` | `yes` | `none` | Required constructor field. |
| `quantize` | `bool` | `no` | `False` | Optional constructor field; defaults to `False`. |
| `q_bits` | `int \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `q_group_size` | `int \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `q_mode` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `quant_predicate` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `dtype` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `trust_remote_code` | `bool` | `no` | `False` | Optional constructor field; defaults to `False`. |
| `dry_run` | `bool` | `no` | `False` | Optional constructor field; defaults to `False`. |

**Returns**

- Constructs: `vllm_mlx.model_workflow.ConversionOptions`

**Exceptions and behavior**

Class `ConversionOptions` declares 0 direct member(s).
No direct `raise` statement appears in this definition.

[View source #L50-L62](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L50-L62).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow.RegistrationOptions" markdown="1">
<summary><code>vllm_mlx.model_workflow.RegistrationOptions</code> · class</summary>

```python
vllm_mlx.model_workflow.RegistrationOptions(artifact_path: str, model_id: str | None = None, served_model_name: str | None = None, preset_alias: str | None = None, output_path: str | None = None, mllm: bool | None = None, tool_call_parser: str | None = None, reasoning_parser: str | None = None, default_temperature: float | None = None, default_top_p: float | None = None, default_top_k: int | None = None, default_min_p: float | None = None, default_presence_penalty: float | None = None, default_repetition_penalty: float | None = None, chat_template_kwargs: dict[str, Any] | None = None, feature_flags: list[str] | None = None)
```

Options for generating a portable model registration manifest.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `artifact_path` | `str` | `yes` | `none` | Required constructor field. |
| `model_id` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `served_model_name` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `preset_alias` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `output_path` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `mllm` | `bool \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `tool_call_parser` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `reasoning_parser` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `default_temperature` | `float \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `default_top_p` | `float \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `default_top_k` | `int \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `default_min_p` | `float \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `default_presence_penalty` | `float \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `default_repetition_penalty` | `float \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `chat_template_kwargs` | `dict[str, Any] \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `feature_flags` | `list[str] \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |

**Returns**

- Constructs: `vllm_mlx.model_workflow.RegistrationOptions`

**Exceptions and behavior**

Class `RegistrationOptions` declares 0 direct member(s).
No direct `raise` statement appears in this definition.

[View source #L66-L84](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L66-L84).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow.QualificationOptions" markdown="1">
<summary><code>vllm_mlx.model_workflow.QualificationOptions</code> · class</summary>

```python
vllm_mlx.model_workflow.QualificationOptions(model_id: str, server_url: str = 'http://127.0.0.1:8080', workload_path: str | None = None, output_path: str | None = None, result_path: str | None = None, repetitions: int | None = None, dry_run: bool = False, extra_args: list[str] | None = None)
```

Options for creating or running a bench-serve qualification handoff.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `model_id` | `str` | `yes` | `none` | Required constructor field. |
| `server_url` | `str` | `no` | `'http://127.0.0.1:8080'` | Optional constructor field; defaults to `'http://127.0.0.1:8080'`. |
| `workload_path` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `output_path` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `result_path` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `repetitions` | `int \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |
| `dry_run` | `bool` | `no` | `False` | Optional constructor field; defaults to `False`. |
| `extra_args` | `list[str] \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |

**Returns**

- Constructs: `vllm_mlx.model_workflow.QualificationOptions`

**Exceptions and behavior**

Class `QualificationOptions` declares 0 direct member(s).
No direct `raise` statement appears in this definition.

[View source #L88-L98](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L88-L98).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._now_iso" markdown="1">
<summary><code>vllm_mlx.model_workflow._now_iso</code> · function</summary>

```python
vllm_mlx.model_workflow._now_iso() -> str
```

Function `_now_iso` calls `datetime.now(timezone.utc).isoformat`, `datetime.now`; returns `datetime.now(timezone.utc).isoformat()`.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `str`
- Direct return expressions: `datetime.now(timezone.utc).isoformat()`

**Exceptions and behavior**

Function `_now_iso` calls `datetime.now(timezone.utc).isoformat`, `datetime.now`; returns `datetime.now(timezone.utc).isoformat()`.
No direct `raise` statement appears in this definition.

[View source #L101-L102](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L101-L102).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._bytes_to_gb" markdown="1">
<summary><code>vllm_mlx.model_workflow._bytes_to_gb</code> · function</summary>

```python
vllm_mlx.model_workflow._bytes_to_gb(size: int | float | None) -> float | None
```

Function `_bytes_to_gb` calls `round`, `float`; has 2 explicit return paths.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `size` | `int \| float \| None` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `float | None`
- Direct return expressions: `None`; `round(float(size) / 1024 ** 3, 3)`

**Exceptions and behavior**

Function `_bytes_to_gb` calls `round`, `float`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L105-L108](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L105-L108).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._read_json" markdown="1">
<summary><code>vllm_mlx.model_workflow._read_json</code> · function</summary>

```python
vllm_mlx.model_workflow._read_json(path: Path) -> dict[str, Any]
```

Function `_read_json` calls `json.loads`, `path.read_text`; has 2 explicit return paths.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `path` | `Path` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `dict[str, Any]`
- Direct return expressions: `json.loads(path.read_text())`; `{}`

**Exceptions and behavior**

Function `_read_json` calls `json.loads`, `path.read_text`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L111-L115](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L111-L115).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._write_json" markdown="1">
<summary><code>vllm_mlx.model_workflow._write_json</code> · function</summary>

```python
vllm_mlx.model_workflow._write_json(path: Path, payload: dict[str, Any]) -> None
```

Function `_write_json` calls `path.parent.mkdir`, `path.write_text`, `json.dumps`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `path` | `Path` | `yes` | `none` | Required positional or keyword input. |
| `payload` | `dict[str, Any]` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `None`

**Exceptions and behavior**

Function `_write_json` calls `path.parent.mkdir`, `path.write_text`, `json.dumps`.
No direct `raise` statement appears in this definition.

[View source #L118-L120](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L118-L120).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._local_file_inventory" markdown="1">
<summary><code>vllm_mlx.model_workflow._local_file_inventory</code> · function</summary>

```python
vllm_mlx.model_workflow._local_file_inventory(path: Path) -> tuple[list[dict[str, Any]], int]
```

Function `_local_file_inventory` calls `sorted`, `path.rglob`, `item.is_file`, `item.stat`; returns `(files, total)`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `path` | `Path` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `tuple[list[dict[str, Any]], int]`
- Direct return expressions: `(files, total)`

**Exceptions and behavior**

Function `_local_file_inventory` calls `sorted`, `path.rglob`, `item.is_file`, `item.stat`; returns `(files, total)`.
No direct `raise` statement appears in this definition.

[View source #L123-L135](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L123-L135).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._hf_file_inventory" markdown="1">
<summary><code>vllm_mlx.model_workflow._hf_file_inventory</code> · function</summary>

```python
vllm_mlx.model_workflow._hf_file_inventory(model_id: str, *, revision: str | None, local_files_only: bool) -> tuple[list[dict[str, Any]], int | None, str | None]
```

Function `_hf_file_inventory` calls `HfApi().model_info`, `HfApi`, `getattr`, `int`; has 2 explicit return paths.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `model_id` | `str` | `yes` | `none` | Required positional or keyword input. |
| `revision` | `str \| None` | `yes` | `none` | Required keyword-only input. |
| `local_files_only` | `bool` | `yes` | `none` | Required keyword-only input. |

**Returns**

- Type: `tuple[list[dict[str, Any]], int | None, str | None]`
- Direct return expressions: `([], None, revision)`; `(files, total if total_known else None, getattr(info, 'sha', revision))`

**Exceptions and behavior**

Function `_hf_file_inventory` calls `HfApi().model_info`, `HfApi`, `getattr`, `int`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L138-L158](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L138-L158).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._hf_config" markdown="1">
<summary><code>vllm_mlx.model_workflow._hf_config</code> · function</summary>

```python
vllm_mlx.model_workflow._hf_config(model_id: str, *, revision: str | None, local_files_only: bool) -> dict[str, Any]
```

Function `_hf_config` calls `hf_hub_download`, `_read_json`, `Path`; returns `_read_json(Path(config_path))`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `model_id` | `str` | `yes` | `none` | Required positional or keyword input. |
| `revision` | `str \| None` | `yes` | `none` | Required keyword-only input. |
| `local_files_only` | `bool` | `yes` | `none` | Required keyword-only input. |

**Returns**

- Type: `dict[str, Any]`
- Direct return expressions: `_read_json(Path(config_path))`

**Exceptions and behavior**

Function `_hf_config` calls `hf_hub_download`, `_read_json`, `Path`; returns `_read_json(Path(config_path))`.
No direct `raise` statement appears in this definition.

[View source #L161-L170](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L161-L170).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._config_value" markdown="1">
<summary><code>vllm_mlx.model_workflow._config_value</code> · function</summary>

```python
vllm_mlx.model_workflow._config_value(config: dict[str, Any], key: str) -> Any
```

Function `_config_value` calls `config.get`, `isinstance`, `text_config.get`; has 3 explicit return paths.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `config` | `dict[str, Any]` | `yes` | `none` | Required positional or keyword input. |
| `key` | `str` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `Any`
- Direct return expressions: `config[key]`; `text_config.get(key)`; `None`

**Exceptions and behavior**

Function `_config_value` calls `config.get`, `isinstance`, `text_config.get`; has 3 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L173-L179](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L173-L179).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._model_family" markdown="1">
<summary><code>vllm_mlx.model_workflow._model_family</code> · function</summary>

```python
vllm_mlx.model_workflow._model_family(config: dict[str, Any]) -> dict[str, Any]
```

Function `_model_family` calls `_config_value`, `isinstance`, `config.get`; returns `{'model_type': _config_value(config, 'model_type'), 'architectures': architectures, 'torch_dtype': _config_value(config…`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `config` | `dict[str, Any]` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `dict[str, Any]`
- Direct return expressions: `{'model_type': _config_value(config, 'model_type'), 'architectures': architectures, 'torch_dtype': _config_value(config…`

**Exceptions and behavior**

Function `_model_family` calls `_config_value`, `isinstance`, `config.get`; returns `{'model_type': _config_value(config, 'model_type'), 'architectures': architectures, 'torch_dtype': _config_value(config…`.
No direct `raise` statement appears in this definition.

[View source #L182-L201](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L182-L201).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._estimate_fit" markdown="1">
<summary><code>vllm_mlx.model_workflow._estimate_fit</code> · function</summary>

```python
vllm_mlx.model_workflow._estimate_fit(*, total_bytes: int | None, model_files_bytes: int | None, config: dict[str, Any]) -> dict[str, Any]
```

Function `_estimate_fit` calls `_model_family(config).get`, `_model_family`, `isinstance`, `warnings.append`; returns `{'download_size_gb': _bytes_to_gb(total_bytes), 'model_file_size_gb': _bytes_to_gb(model_files_bytes), 'estimated_conve…`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `total_bytes` | `int \| None` | `yes` | `none` | Required keyword-only input. |
| `model_files_bytes` | `int \| None` | `yes` | `none` | Required keyword-only input. |
| `config` | `dict[str, Any]` | `yes` | `none` | Required keyword-only input. |

**Returns**

- Type: `dict[str, Any]`
- Direct return expressions: `{'download_size_gb': _bytes_to_gb(total_bytes), 'model_file_size_gb': _bytes_to_gb(model_files_bytes), 'estimated_conve…`

**Exceptions and behavior**

Function `_estimate_fit` calls `_model_family(config).get`, `_model_family`, `isinstance`, `warnings.append`; returns `{'download_size_gb': _bytes_to_gb(total_bytes), 'model_file_size_gb': _bytes_to_gb(model_files_bytes), 'estimated_conve…`.
No direct `raise` statement appears in this definition.

[View source #L204-L231](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L204-L231).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._model_file_bytes" markdown="1">
<summary><code>vllm_mlx.model_workflow._model_file_bytes</code> · function</summary>

```python
vllm_mlx.model_workflow._model_file_bytes(files: list[dict[str, Any]]) -> int | None
```

Function `_model_file_bytes` calls `str`, `entry.get`, `path.endswith`, `int`; has 2 explicit return paths.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `files` | `list[dict[str, Any]]` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `int | None`
- Direct return expressions: `None`; `total if known else None`

**Exceptions and behavior**

Function `_model_file_bytes` calls `str`, `entry.get`, `path.endswith`, `int`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L234-L246](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L234-L246).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._is_mlx_quantization" markdown="1">
<summary><code>vllm_mlx.model_workflow._is_mlx_quantization</code> · function</summary>

```python
vllm_mlx.model_workflow._is_mlx_quantization(quant: Any) -> bool
```

Return True only when *quant* looks like an mlx-lm quantization config.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `quant` | `Any` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `bool`
- Direct return expressions: `False`; `'bits' in quant`

**Exceptions and behavior**

Function `_is_mlx_quantization` calls `isinstance`, `str(quant.get('quant_method', '')).lower`, `str`, `quant.get`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L252-L265](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L252-L265).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._looks_like_mlx_name" markdown="1">
<summary><code>vllm_mlx.model_workflow._looks_like_mlx_name</code> · function</summary>

```python
vllm_mlx.model_workflow._looks_like_mlx_name(model: str, *, source: str) -> bool
```

Function `_looks_like_mlx_name` calls `model.lower`, `Path(model).name.lower`, `Path`, `name.startswith`; returns `name.startswith('mlx-community/') or '-mlx' in name or '_mlx' in name or name.endswith('mlx')`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `model` | `str` | `yes` | `none` | Required positional or keyword input. |
| `source` | `str` | `yes` | `none` | Required keyword-only input. |

**Returns**

- Type: `bool`
- Direct return expressions: `name.startswith('mlx-community/') or '-mlx' in name or '_mlx' in name or name.endswith('mlx')`

**Exceptions and behavior**

Function `_looks_like_mlx_name` calls `model.lower`, `Path(model).name.lower`, `Path`, `name.startswith`; returns `name.startswith('mlx-community/') or '-mlx' in name or '_mlx' in name or name.endswith('mlx')`.
No direct `raise` statement appears in this definition.

[View source #L268-L275](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L268-L275).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._is_model_id" markdown="1">
<summary><code>vllm_mlx.model_workflow._is_model_id</code> · function</summary>

```python
vllm_mlx.model_workflow._is_model_id(value: str) -> bool
```

Function `_is_model_id` calls `bool`, `_MODEL_ID_RE.fullmatch`; returns `bool(_MODEL_ID_RE.fullmatch(value))`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `value` | `str` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `bool`
- Direct return expressions: `bool(_MODEL_ID_RE.fullmatch(value))`

**Exceptions and behavior**

Function `_is_model_id` calls `bool`, `_MODEL_ID_RE.fullmatch`; returns `bool(_MODEL_ID_RE.fullmatch(value))`.
No direct `raise` statement appears in this definition.

[View source #L278-L279](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L278-L279).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._fast_transfer_env" markdown="1">
<summary><code>vllm_mlx.model_workflow._fast_transfer_env</code> · function</summary>

```python
vllm_mlx.model_workflow._fast_transfer_env(requested: bool) -> tuple[dict[str, str], dict[str, Any]]
```

Function `_fast_transfer_env` calls `find_spec`; has 3 explicit return paths.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `requested` | `bool` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `tuple[dict[str, str], dict[str, Any]]`
- Direct return expressions: `({}, {'requested': False, 'enabled': False, 'reason': 'disabled'})`; `({}, {'requested': True, 'enabled': False, 'reason': 'hf_transfer package is not installed'})`; `({'HF_HUB_ENABLE_HF_TRANSFER': '1'}, {'requested': True, 'enabled': True, 'reason': 'enabled'})`

**Exceptions and behavior**

Function `_fast_transfer_env` calls `find_spec`; has 3 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L282-L297](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L282-L297).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow.inspect_model" markdown="1">
<summary><code>vllm_mlx.model_workflow.inspect_model</code> · function</summary>

```python
vllm_mlx.model_workflow.inspect_model(model: str, *, revision: str | None = None, local_files_only: bool = False) -> dict[str, Any]
```

Inspect a local model path or Hugging Face model id without loading weights.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `model` | `str` | `yes` | `none` | Required positional or keyword input. |
| `revision` | `str \| None` | `no` | `None` | Optional keyword-only input; defaults to `None`. |
| `local_files_only` | `bool` | `no` | `False` | Optional keyword-only input; defaults to `False`. |

**Returns**

- Type: `dict[str, Any]`
- Direct return expressions: `{'model': model, 'source': source, 'location': location, 'revision': resolved_revision or revision, 'inspected_at': _no…`

**Exceptions and behavior**

Function `inspect_model` calls `Path(model).expanduser`, `Path`, `model_path.exists`, `_local_file_inventory`; can raise `ValueError`; returns `{'model': model, 'source': source, 'location': location, 'revision': resolved_revision or revision, 'inspected_at': _no…`.
Directly raised exceptions: `ValueError`.

[View source #L300-L366](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L300-L366).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow.acquire_model" markdown="1">
<summary><code>vllm_mlx.model_workflow.acquire_model</code> · function</summary>

```python
vllm_mlx.model_workflow.acquire_model(model_id: str, *, options: AcquisitionOptions | None = None) -> dict[str, Any]
```

Download a model repository and write a finalized artifact manifest.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `model_id` | `str` | `yes` | `none` | Required positional or keyword input. |
| `options` | `AcquisitionOptions \| None` | `no` | `None` | Optional keyword-only input; defaults to `None`. |

**Returns**

- Type: `dict[str, Any]`
- Direct return expressions: `manifest`

**Exceptions and behavior**

Function `acquire_model` calls `AcquisitionOptions`, `_is_model_id`, `ValueError`, `_fast_transfer_env`; can raise `ValueError`, `FileExistsError`; returns `manifest`.
Directly raised exceptions: `ValueError`, `FileExistsError`.

[View source #L369-L446](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L369-L446).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._conversion_command" markdown="1">
<summary><code>vllm_mlx.model_workflow._conversion_command</code> · function</summary>

```python
vllm_mlx.model_workflow._conversion_command(options: ConversionOptions) -> list[str]
```

Function `_conversion_command` calls `command.append`, `command.extend`, `str`; returns `command`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `options` | `ConversionOptions` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `list[str]`
- Direct return expressions: `command`

**Exceptions and behavior**

Function `_conversion_command` calls `command.append`, `command.extend`, `str`; returns `command`.
No direct `raise` statement appears in this definition.

[View source #L449-L474](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L449-L474).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow.convert_model" markdown="1">
<summary><code>vllm_mlx.model_workflow.convert_model</code> · function</summary>

```python
vllm_mlx.model_workflow.convert_model(options: ConversionOptions) -> dict[str, Any]
```

Run mlx-lm conversion and record the exact recipe.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `options` | `ConversionOptions` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `dict[str, Any]`
- Direct return expressions: `result`

**Exceptions and behavior**

Function `convert_model` calls `_conversion_command`, `_now_iso`, `inspect_model`, `sys.version.split`; returns `result`.
No direct `raise` statement appears in this definition.

[View source #L477-L525](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L477-L525).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._existing_manifests" markdown="1">
<summary><code>vllm_mlx.model_workflow._existing_manifests</code> · function</summary>

```python
vllm_mlx.model_workflow._existing_manifests(path: Path) -> dict[str, Any]
```

Function `_existing_manifests` calls `manifest_path.exists`, `str`, `_read_json`; returns `manifests`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `path` | `Path` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `dict[str, Any]`
- Direct return expressions: `manifests`

**Exceptions and behavior**

Function `_existing_manifests` calls `manifest_path.exists`, `str`, `_read_json`; returns `manifests`.
No direct `raise` statement appears in this definition.

[View source #L528-L540](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L528-L540).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._drop_none" markdown="1">
<summary><code>vllm_mlx.model_workflow._drop_none</code> · function</summary>

```python
vllm_mlx.model_workflow._drop_none(payload: dict[str, Any]) -> dict[str, Any]
```

Function `_drop_none` calls `payload.items`; returns `{key: value for key, value in payload.items() if value is not None}`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `payload` | `dict[str, Any]` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `dict[str, Any]`
- Direct return expressions: `{key: value for key, value in payload.items() if value is not None}`

**Exceptions and behavior**

Function `_drop_none` calls `payload.items`; returns `{key: value for key, value in payload.items() if value is not None}`.
No direct `raise` statement appears in this definition.

[View source #L543-L544](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L543-L544).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow.register_model" markdown="1">
<summary><code>vllm_mlx.model_workflow.register_model</code> · function</summary>

```python
vllm_mlx.model_workflow.register_model(options: RegistrationOptions) -> dict[str, Any]
```

Write a portable registration manifest for a finalized local artifact.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `options` | `RegistrationOptions` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `dict[str, Any]`
- Direct return expressions: `payload`

**Exceptions and behavior**

Function `register_model` calls `Path(options.artifact_path).expanduser`, `Path`, `artifact.exists`, `FileNotFoundError`; can raise `FileNotFoundError`, `NotADirectoryError`; returns `payload`.
Directly raised exceptions: `FileNotFoundError`, `NotADirectoryError`.

[View source #L547-L603](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L547-L603).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow._qualification_command" markdown="1">
<summary><code>vllm_mlx.model_workflow._qualification_command</code> · function</summary>

```python
vllm_mlx.model_workflow._qualification_command(options: QualificationOptions) -> list[str]
```

Function `_qualification_command` calls `command.extend`, `str`; returns `command`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `options` | `QualificationOptions` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `list[str]`
- Direct return expressions: `command`

**Exceptions and behavior**

Function `_qualification_command` calls `command.extend`, `str`; returns `command`.
No direct `raise` statement appears in this definition.

[View source #L606-L627](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L606-L627).

</details>

<details class="api-contract" id="contract-vllm_mlx.model_workflow.qualify_model" markdown="1">
<summary><code>vllm_mlx.model_workflow.qualify_model</code> · function</summary>

```python
vllm_mlx.model_workflow.qualify_model(options: QualificationOptions) -> dict[str, Any]
```

Create or run a bench-serve qualification handoff.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `options` | `QualificationOptions` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `dict[str, Any]`
- Direct return expressions: `payload`

**Exceptions and behavior**

Function `qualify_model` calls `_qualification_command`, `_now_iso`, `subprocess.run`, `Path(options.output_path).expanduser`; returns `payload`.
No direct `raise` statement appears in this definition.

[View source #L630-L661](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L630-L661).

</details>

## Complete symbol map

This map also includes private definitions and nested helpers. The signature column exposes every explicit input even when an internal helper has no dedicated parameter prose.

| Symbol | Kind | Signature and inputs | What it does | Source |
| --- | --- | --- | --- | --- |
| [`AcquisitionOptions`](#contract-vllm_mlx.model_workflow.AcquisitionOptions) | class | `AcquisitionOptions(revision: str \| None = None, target_dir: str \| None = None, staging_dir: str \| None = None, is_mllm: bool = False, fast_transfer: bool = True, local_files_only: bool = False)` | Options for Hugging Face model acquisition. | [#L38-L46](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L38-L46) |
| [`ConversionOptions`](#contract-vllm_mlx.model_workflow.ConversionOptions) | class | `ConversionOptions(source_path: str, output_path: str, quantize: bool = False, q_bits: int \| None = None, q_group_size: int \| None = None, q_mode: str \| None = None, quant_predicate: str \| None = None, dtype: str \| None = None, trust_remote_code: bool = False, dry_run: bool = False)` | Options for the mlx-lm conversion backend. | [#L50-L62](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L50-L62) |
| [`RegistrationOptions`](#contract-vllm_mlx.model_workflow.RegistrationOptions) | class | `RegistrationOptions(artifact_path: str, model_id: str \| None = None, served_model_name: str \| None = None, preset_alias: str \| None = None, output_path: str \| None = None, mllm: bool \| None = None, tool_call_parser: str \| None = None, reasoning_parser: str \| None = None, default_temperature: float \| None = None, default_top_p: float \| None = None, default_top_k: int \| None = None, default_min_p: float \| None = None, default_presence_penalty: float \| None = None, default_repetition_penalty: float \| None = None, chat_template_kwargs: dict[str, Any] \| None = None, feature_flags: list[str] \| None = None)` | Options for generating a portable model registration manifest. | [#L66-L84](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L66-L84) |
| [`QualificationOptions`](#contract-vllm_mlx.model_workflow.QualificationOptions) | class | `QualificationOptions(model_id: str, server_url: str = 'http://127.0.0.1:8080', workload_path: str \| None = None, output_path: str \| None = None, result_path: str \| None = None, repetitions: int \| None = None, dry_run: bool = False, extra_args: list[str] \| None = None)` | Options for creating or running a bench-serve qualification handoff. | [#L88-L98](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L88-L98) |
| [`_now_iso`](#contract-vllm_mlx.model_workflow._now_iso) | function | `_now_iso() -> str` | Function `_now_iso` calls `datetime.now(timezone.utc).isoformat`, `datetime.now`; returns `datetime.now(timezone.utc).isoformat()`. | [#L101-L102](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L101-L102) |
| [`_bytes_to_gb`](#contract-vllm_mlx.model_workflow._bytes_to_gb) | function | `_bytes_to_gb(size: int \| float \| None) -> float \| None` | Function `_bytes_to_gb` calls `round`, `float`; has 2 explicit return paths. | [#L105-L108](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L105-L108) |
| [`_read_json`](#contract-vllm_mlx.model_workflow._read_json) | function | `_read_json(path: Path) -> dict[str, Any]` | Function `_read_json` calls `json.loads`, `path.read_text`; has 2 explicit return paths. | [#L111-L115](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L111-L115) |
| [`_write_json`](#contract-vllm_mlx.model_workflow._write_json) | function | `_write_json(path: Path, payload: dict[str, Any]) -> None` | Function `_write_json` calls `path.parent.mkdir`, `path.write_text`, `json.dumps`. | [#L118-L120](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L118-L120) |
| [`_local_file_inventory`](#contract-vllm_mlx.model_workflow._local_file_inventory) | function | `_local_file_inventory(path: Path) -> tuple[list[dict[str, Any]], int]` | Function `_local_file_inventory` calls `sorted`, `path.rglob`, `item.is_file`, `item.stat`; returns `(files, total)`. | [#L123-L135](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L123-L135) |
| [`_hf_file_inventory`](#contract-vllm_mlx.model_workflow._hf_file_inventory) | function | `_hf_file_inventory(model_id: str, *, revision: str \| None, local_files_only: bool) -> tuple[list[dict[str, Any]], int \| None, str \| None]` | Function `_hf_file_inventory` calls `HfApi().model_info`, `HfApi`, `getattr`, `int`; has 2 explicit return paths. | [#L138-L158](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L138-L158) |
| [`_hf_config`](#contract-vllm_mlx.model_workflow._hf_config) | function | `_hf_config(model_id: str, *, revision: str \| None, local_files_only: bool) -> dict[str, Any]` | Function `_hf_config` calls `hf_hub_download`, `_read_json`, `Path`; returns `_read_json(Path(config_path))`. | [#L161-L170](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L161-L170) |
| [`_config_value`](#contract-vllm_mlx.model_workflow._config_value) | function | `_config_value(config: dict[str, Any], key: str) -> Any` | Function `_config_value` calls `config.get`, `isinstance`, `text_config.get`; has 3 explicit return paths. | [#L173-L179](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L173-L179) |
| [`_model_family`](#contract-vllm_mlx.model_workflow._model_family) | function | `_model_family(config: dict[str, Any]) -> dict[str, Any]` | Function `_model_family` calls `_config_value`, `isinstance`, `config.get`; returns `{'model_type': _config_value(config, 'model_type'), 'architectures': architectures, 'torch_dtype': _config_value(config…`. | [#L182-L201](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L182-L201) |
| [`_estimate_fit`](#contract-vllm_mlx.model_workflow._estimate_fit) | function | `_estimate_fit(*, total_bytes: int \| None, model_files_bytes: int \| None, config: dict[str, Any]) -> dict[str, Any]` | Function `_estimate_fit` calls `_model_family(config).get`, `_model_family`, `isinstance`, `warnings.append`; returns `{'download_size_gb': _bytes_to_gb(total_bytes), 'model_file_size_gb': _bytes_to_gb(model_files_bytes), 'estimated_conve…`. | [#L204-L231](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L204-L231) |
| [`_model_file_bytes`](#contract-vllm_mlx.model_workflow._model_file_bytes) | function | `_model_file_bytes(files: list[dict[str, Any]]) -> int \| None` | Function `_model_file_bytes` calls `str`, `entry.get`, `path.endswith`, `int`; has 2 explicit return paths. | [#L234-L246](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L234-L246) |
| [`_is_mlx_quantization`](#contract-vllm_mlx.model_workflow._is_mlx_quantization) | function | `_is_mlx_quantization(quant: Any) -> bool` | Return True only when *quant* looks like an mlx-lm quantization config. | [#L252-L265](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L252-L265) |
| [`_looks_like_mlx_name`](#contract-vllm_mlx.model_workflow._looks_like_mlx_name) | function | `_looks_like_mlx_name(model: str, *, source: str) -> bool` | Function `_looks_like_mlx_name` calls `model.lower`, `Path(model).name.lower`, `Path`, `name.startswith`; returns `name.startswith('mlx-community/') or '-mlx' in name or '_mlx' in name or name.endswith('mlx')`. | [#L268-L275](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L268-L275) |
| [`_is_model_id`](#contract-vllm_mlx.model_workflow._is_model_id) | function | `_is_model_id(value: str) -> bool` | Function `_is_model_id` calls `bool`, `_MODEL_ID_RE.fullmatch`; returns `bool(_MODEL_ID_RE.fullmatch(value))`. | [#L278-L279](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L278-L279) |
| [`_fast_transfer_env`](#contract-vllm_mlx.model_workflow._fast_transfer_env) | function | `_fast_transfer_env(requested: bool) -> tuple[dict[str, str], dict[str, Any]]` | Function `_fast_transfer_env` calls `find_spec`; has 3 explicit return paths. | [#L282-L297](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L282-L297) |
| [`inspect_model`](#contract-vllm_mlx.model_workflow.inspect_model) | function | `inspect_model(model: str, *, revision: str \| None = None, local_files_only: bool = False) -> dict[str, Any]` | Inspect a local model path or Hugging Face model id without loading weights. | [#L300-L366](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L300-L366) |
| [`acquire_model`](#contract-vllm_mlx.model_workflow.acquire_model) | function | `acquire_model(model_id: str, *, options: AcquisitionOptions \| None = None) -> dict[str, Any]` | Download a model repository and write a finalized artifact manifest. | [#L369-L446](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L369-L446) |
| [`_conversion_command`](#contract-vllm_mlx.model_workflow._conversion_command) | function | `_conversion_command(options: ConversionOptions) -> list[str]` | Function `_conversion_command` calls `command.append`, `command.extend`, `str`; returns `command`. | [#L449-L474](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L449-L474) |
| [`convert_model`](#contract-vllm_mlx.model_workflow.convert_model) | function | `convert_model(options: ConversionOptions) -> dict[str, Any]` | Run mlx-lm conversion and record the exact recipe. | [#L477-L525](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L477-L525) |
| [`_existing_manifests`](#contract-vllm_mlx.model_workflow._existing_manifests) | function | `_existing_manifests(path: Path) -> dict[str, Any]` | Function `_existing_manifests` calls `manifest_path.exists`, `str`, `_read_json`; returns `manifests`. | [#L528-L540](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L528-L540) |
| [`_drop_none`](#contract-vllm_mlx.model_workflow._drop_none) | function | `_drop_none(payload: dict[str, Any]) -> dict[str, Any]` | Function `_drop_none` calls `payload.items`; returns `{key: value for key, value in payload.items() if value is not None}`. | [#L543-L544](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L543-L544) |
| [`register_model`](#contract-vllm_mlx.model_workflow.register_model) | function | `register_model(options: RegistrationOptions) -> dict[str, Any]` | Write a portable registration manifest for a finalized local artifact. | [#L547-L603](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L547-L603) |
| [`_qualification_command`](#contract-vllm_mlx.model_workflow._qualification_command) | function | `_qualification_command(options: QualificationOptions) -> list[str]` | Function `_qualification_command` calls `command.extend`, `str`; returns `command`. | [#L606-L627](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L606-L627) |
| [`qualify_model`](#contract-vllm_mlx.model_workflow.qualify_model) | function | `qualify_model(options: QualificationOptions) -> dict[str, Any]` | Create or run a bench-serve qualification handoff. | [#L630-L661](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/model_workflow.py#L630-L661) |
