Skip to content

Resolver API

The resolver turns a raw model reference into a normalized ResolvedModel without loading model weights.

Bases: str, Enum

Describe where a model reference originates from.

Source code in src/ollm/runtime/resolver.py
21
22
23
24
25
26
27
class ModelSourceKind(str, Enum):
    """Describe where a model reference originates from."""

    BUILTIN = "builtin"
    HUGGING_FACE = "hugging-face"
    LOCAL_PATH = "local-path"
    OPAQUE = "opaque"

Bases: str, Enum

Known optimized-native model families.

Source code in src/ollm/runtime/resolver.py
30
31
32
33
34
35
36
37
class NativeFamily(str, Enum):
    """Known optimized-native model families."""

    LLAMA = "llama"
    GEMMA3 = "gemma3"
    GPT_OSS = "gpt-oss"
    QWEN3_NEXT = "qwen3-next"
    VOXTRAL = "voxtral"

Resolved model metadata used by planning, inspection, and loading.

Attributes:

Name Type Description
reference ModelReference

Parsed user-facing model reference.

source_kind ModelSourceKind

Where the model was resolved from.

normalized_name str

Stable display name used by planning and docs.

model_path Path | None

Local materialization path when one exists.

repo_id str | None

Hugging Face repository identifier when materialization is supported.

revision str | None

Optional requested revision.

catalog_entry ModelCatalogEntry | None

Built-in catalog entry when one matched.

capabilities CapabilityProfile

Capability and support metadata.

native_family NativeFamily | None

Matching optimized-native family when one exists.

resolution_message str

Human-readable resolution summary.

architecture str | None

Inspected architecture for local models.

model_type str | None

Inspected model type for local models.

generic_model_kind GenericModelKind | None

Generic execution kind when one can be inferred.

Source code in src/ollm/runtime/resolver.py
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
@dataclass(frozen=True, slots=True)
class ResolvedModel:
    """Resolved model metadata used by planning, inspection, and loading.

    Attributes:
        reference (ModelReference): Parsed user-facing model reference.
        source_kind (ModelSourceKind): Where the model was resolved from.
        normalized_name (str): Stable display name used by planning and docs.
        model_path (Path | None): Local materialization path when one exists.
        repo_id (str | None): Hugging Face repository identifier when
            materialization is supported.
        revision (str | None): Optional requested revision.
        catalog_entry (ModelCatalogEntry | None): Built-in catalog entry when
            one matched.
        capabilities (CapabilityProfile): Capability and support metadata.
        native_family (NativeFamily | None): Matching optimized-native family
            when one exists.
        resolution_message (str): Human-readable resolution summary.
        architecture (str | None): Inspected architecture for local models.
        model_type (str | None): Inspected model type for local models.
        generic_model_kind (GenericModelKind | None): Generic execution kind
            when one can be inferred.
    """

    reference: ModelReference
    source_kind: ModelSourceKind
    normalized_name: str
    model_path: Path | None
    repo_id: str | None
    revision: str | None
    catalog_entry: ModelCatalogEntry | None
    capabilities: CapabilityProfile
    native_family: NativeFamily | None
    resolution_message: str
    architecture: str | None
    model_type: str | None
    generic_model_kind: GenericModelKind | None

    def is_downloadable(self) -> bool:
        """Return whether the resolved model can be materialized locally.

        Returns:
            bool: ``True`` when both a repository ID and a local model path are
            available.
        """
        return self.repo_id is not None and self.model_path is not None

is_downloadable

is_downloadable() -> bool

Return whether the resolved model can be materialized locally.

Returns:

Name Type Description
bool bool

True when both a repository ID and a local model path are

bool

available.

Source code in src/ollm/runtime/resolver.py
78
79
80
81
82
83
84
85
def is_downloadable(self) -> bool:
    """Return whether the resolved model can be materialized locally.

    Returns:
        bool: ``True`` when both a repository ID and a local model path are
        available.
    """
    return self.repo_id is not None and self.model_path is not None

Resolve model references into built-in, local, or Hugging Face forms.

Parameters:

Name Type Description Default
capability_discovery CapabilityDiscovery | None

Optional capability discovery helper for inspecting local model directories.

None
Source code in src/ollm/runtime/resolver.py
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
class ModelResolver:
    """Resolve model references into built-in, local, or Hugging Face forms.

    Args:
        capability_discovery (CapabilityDiscovery | None): Optional capability
            discovery helper for inspecting local model directories.
    """

    def __init__(self, capability_discovery: CapabilityDiscovery | None = None):
        self._capability_discovery = capability_discovery or CapabilityDiscovery()

    def resolve(self, raw_reference: str, models_dir: Path) -> ResolvedModel:
        """Resolve a raw model reference without loading model weights.

        Args:
            raw_reference (str): User-facing model reference string.
            models_dir (Path): Local models root used for implicit path
                resolution.

        Returns:
            ResolvedModel: Normalized model metadata used by planning and
            loading.
        """
        reference = ModelReference.parse(raw_reference)
        model_root = models_dir.expanduser().resolve()

        if reference.local_path is not None:
            return self._resolve_local_path(reference)

        catalog_entry = find_model_catalog_entry(reference.identifier)
        if catalog_entry is not None and reference.scheme is None:
            return ResolvedModel(
                reference=reference,
                source_kind=ModelSourceKind.BUILTIN,
                normalized_name=catalog_entry.model_id,
                model_path=model_root / catalog_entry.model_id,
                repo_id=catalog_entry.repo_id,
                revision=reference.revision,
                catalog_entry=catalog_entry,
                capabilities=capabilities_from_catalog_entry(catalog_entry),
                native_family=_native_family_from_catalog_entry(catalog_entry),
                resolution_message=f"Built-in optimized alias '{catalog_entry.model_id}'.",
                architecture=None,
                model_type=None,
                generic_model_kind=None,
            )

        if reference.is_huggingface_reference():
            return self._resolve_hugging_face(reference, model_root)

        implicit_local_path = model_root / reference.identifier
        if implicit_local_path.exists() and implicit_local_path.is_dir():
            local_reference = ModelReference(
                raw=reference.raw,
                scheme="path",
                identifier=str(implicit_local_path),
                revision=None,
                local_path=implicit_local_path,
            )
            return self._resolve_local_path(local_reference)

        return ResolvedModel(
            reference=reference,
            source_kind=ModelSourceKind.OPAQUE,
            normalized_name=reference.identifier,
            model_path=None,
            repo_id=None,
            revision=reference.revision,
            catalog_entry=None,
            capabilities=unsupported_capabilities(
                f"Model reference '{reference.raw}' is not a built-in alias, local directory, or Hugging Face repository."
            ),
            native_family=None,
            resolution_message=(
                f"Model reference '{reference.raw}' could not be resolved to a runnable backend or materialization path."
            ),
            architecture=None,
            model_type=None,
            generic_model_kind=None,
        )

    def discover_local_models(self, models_dir: Path) -> tuple[ResolvedModel, ...]:
        """Inspect local materialized model directories under a models root.

        Args:
            models_dir (Path): Local models root to scan.

        Returns:
            tuple[ResolvedModel, ...]: Resolved local model directories found
            under the given root.
        """
        model_root = models_dir.expanduser().resolve()
        if not model_root.exists() or not model_root.is_dir():
            return ()

        discovered: list[ResolvedModel] = []
        for child in sorted(model_root.iterdir()):
            if not child.is_dir() or child.name.startswith("."):
                continue
            discovered.append(self.resolve(str(child), model_root))
        return tuple(discovered)

    def inspect_materialized_model(
        self,
        reference: ModelReference,
        model_path: Path,
        *,
        source_kind: ModelSourceKind,
        repo_id: str | None,
        revision: str | None,
        catalog_entry: ModelCatalogEntry | None,
    ) -> ResolvedModel:
        """Inspect a materialized local model directory and derive capabilities.

        Args:
            reference (ModelReference): Parsed reference associated with the
                local model path.
            model_path (Path): Materialized model directory to inspect.
            source_kind (ModelSourceKind): Source bucket for the materialized
                model.
            repo_id (str | None): Optional repository ID for materialized
                managed models.
            revision (str | None): Optional requested revision.
            catalog_entry (ModelCatalogEntry | None): Matching built-in catalog
                entry when one exists.

        Returns:
            ResolvedModel: Inspected model metadata with derived capabilities and
            native-family information.
        """
        inspection = self._capability_discovery.inspect_model_path(model_path)
        capabilities = inspection.capabilities
        if catalog_entry is not None and source_kind in {
            ModelSourceKind.BUILTIN,
            ModelSourceKind.HUGGING_FACE,
        }:
            capabilities = capabilities_from_catalog_entry(catalog_entry)
        native_family = (
            _native_family_from_catalog_entry(catalog_entry)
            if catalog_entry is not None
            else _native_family_from_architecture(inspection.architecture)
        )
        if native_family is not None:
            capabilities.supports_specialization = True
            capabilities.details["native_family"] = native_family.value
        normalized_name = (
            catalog_entry.model_id if catalog_entry is not None else model_path.name
        )
        return ResolvedModel(
            reference=reference,
            source_kind=source_kind,
            normalized_name=normalized_name,
            model_path=model_path,
            repo_id=repo_id,
            revision=revision,
            catalog_entry=catalog_entry,
            capabilities=capabilities,
            native_family=native_family,
            resolution_message=inspection.message,
            architecture=inspection.architecture,
            model_type=inspection.model_type,
            generic_model_kind=inspection.generic_model_kind,
        )

    def _resolve_local_path(self, reference: ModelReference) -> ResolvedModel:
        local_path = reference.local_path
        assert local_path is not None
        catalog_entry = find_model_catalog_entry(local_path.name)
        return self.inspect_materialized_model(
            reference,
            local_path,
            source_kind=ModelSourceKind.LOCAL_PATH,
            repo_id=None,
            revision=None,
            catalog_entry=catalog_entry,
        )

    def _resolve_hugging_face(
        self, reference: ModelReference, model_root: Path
    ) -> ResolvedModel:
        catalog_entry = _find_catalog_entry_by_repo_id(reference.identifier)
        model_path = model_root / reference.materialization_name()
        if catalog_entry is not None:
            if reference.revision is None:
                model_path = model_root / catalog_entry.model_id
            return ResolvedModel(
                reference=reference,
                source_kind=ModelSourceKind.HUGGING_FACE,
                normalized_name=catalog_entry.model_id,
                model_path=model_path,
                repo_id=reference.identifier,
                revision=reference.revision,
                catalog_entry=catalog_entry,
                capabilities=capabilities_from_catalog_entry(catalog_entry),
                native_family=_native_family_from_catalog_entry(catalog_entry),
                resolution_message=(
                    f"Hugging Face repository '{reference.identifier}' matching built-in optimized alias '{catalog_entry.model_id}'."
                ),
                architecture=None,
                model_type=None,
                generic_model_kind=None,
            )

        if model_path.exists() and model_path.is_dir():
            return self.inspect_materialized_model(
                reference,
                model_path,
                source_kind=ModelSourceKind.HUGGING_FACE,
                repo_id=reference.identifier,
                revision=reference.revision,
                catalog_entry=None,
            )

        capabilities = unsupported_capabilities(
            f"Hugging Face repository '{reference.identifier}' must be materialized locally before generic capability discovery can run."
        )
        capabilities.supports_local_materialization = True
        capabilities.details["source"] = "hugging-face"
        capabilities.details["repo_id"] = reference.identifier
        return ResolvedModel(
            reference=reference,
            source_kind=ModelSourceKind.HUGGING_FACE,
            normalized_name=reference.identifier,
            model_path=model_path,
            repo_id=reference.identifier,
            revision=reference.revision,
            catalog_entry=None,
            capabilities=capabilities,
            native_family=None,
            resolution_message=f"Hugging Face repository '{reference.identifier}'.",
            architecture=None,
            model_type=None,
            generic_model_kind=None,
        )

resolve

resolve(
    raw_reference: str, models_dir: Path
) -> ResolvedModel

Resolve a raw model reference without loading model weights.

Parameters:

Name Type Description Default
raw_reference str

User-facing model reference string.

required
models_dir Path

Local models root used for implicit path resolution.

required

Returns:

Name Type Description
ResolvedModel ResolvedModel

Normalized model metadata used by planning and

ResolvedModel

loading.

Source code in src/ollm/runtime/resolver.py
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
def resolve(self, raw_reference: str, models_dir: Path) -> ResolvedModel:
    """Resolve a raw model reference without loading model weights.

    Args:
        raw_reference (str): User-facing model reference string.
        models_dir (Path): Local models root used for implicit path
            resolution.

    Returns:
        ResolvedModel: Normalized model metadata used by planning and
        loading.
    """
    reference = ModelReference.parse(raw_reference)
    model_root = models_dir.expanduser().resolve()

    if reference.local_path is not None:
        return self._resolve_local_path(reference)

    catalog_entry = find_model_catalog_entry(reference.identifier)
    if catalog_entry is not None and reference.scheme is None:
        return ResolvedModel(
            reference=reference,
            source_kind=ModelSourceKind.BUILTIN,
            normalized_name=catalog_entry.model_id,
            model_path=model_root / catalog_entry.model_id,
            repo_id=catalog_entry.repo_id,
            revision=reference.revision,
            catalog_entry=catalog_entry,
            capabilities=capabilities_from_catalog_entry(catalog_entry),
            native_family=_native_family_from_catalog_entry(catalog_entry),
            resolution_message=f"Built-in optimized alias '{catalog_entry.model_id}'.",
            architecture=None,
            model_type=None,
            generic_model_kind=None,
        )

    if reference.is_huggingface_reference():
        return self._resolve_hugging_face(reference, model_root)

    implicit_local_path = model_root / reference.identifier
    if implicit_local_path.exists() and implicit_local_path.is_dir():
        local_reference = ModelReference(
            raw=reference.raw,
            scheme="path",
            identifier=str(implicit_local_path),
            revision=None,
            local_path=implicit_local_path,
        )
        return self._resolve_local_path(local_reference)

    return ResolvedModel(
        reference=reference,
        source_kind=ModelSourceKind.OPAQUE,
        normalized_name=reference.identifier,
        model_path=None,
        repo_id=None,
        revision=reference.revision,
        catalog_entry=None,
        capabilities=unsupported_capabilities(
            f"Model reference '{reference.raw}' is not a built-in alias, local directory, or Hugging Face repository."
        ),
        native_family=None,
        resolution_message=(
            f"Model reference '{reference.raw}' could not be resolved to a runnable backend or materialization path."
        ),
        architecture=None,
        model_type=None,
        generic_model_kind=None,
    )

discover_local_models

discover_local_models(
    models_dir: Path,
) -> tuple[ResolvedModel, ...]

Inspect local materialized model directories under a models root.

Parameters:

Name Type Description Default
models_dir Path

Local models root to scan.

required

Returns:

Type Description
ResolvedModel

tuple[ResolvedModel, ...]: Resolved local model directories found

...

under the given root.

Source code in src/ollm/runtime/resolver.py
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
def discover_local_models(self, models_dir: Path) -> tuple[ResolvedModel, ...]:
    """Inspect local materialized model directories under a models root.

    Args:
        models_dir (Path): Local models root to scan.

    Returns:
        tuple[ResolvedModel, ...]: Resolved local model directories found
        under the given root.
    """
    model_root = models_dir.expanduser().resolve()
    if not model_root.exists() or not model_root.is_dir():
        return ()

    discovered: list[ResolvedModel] = []
    for child in sorted(model_root.iterdir()):
        if not child.is_dir() or child.name.startswith("."):
            continue
        discovered.append(self.resolve(str(child), model_root))
    return tuple(discovered)

inspect_materialized_model

inspect_materialized_model(
    reference: ModelReference,
    model_path: Path,
    *,
    source_kind: ModelSourceKind,
    repo_id: str | None,
    revision: str | None,
    catalog_entry: ModelCatalogEntry | None,
) -> ResolvedModel

Inspect a materialized local model directory and derive capabilities.

Parameters:

Name Type Description Default
reference ModelReference

Parsed reference associated with the local model path.

required
model_path Path

Materialized model directory to inspect.

required
source_kind ModelSourceKind

Source bucket for the materialized model.

required
repo_id str | None

Optional repository ID for materialized managed models.

required
revision str | None

Optional requested revision.

required
catalog_entry ModelCatalogEntry | None

Matching built-in catalog entry when one exists.

required

Returns:

Name Type Description
ResolvedModel ResolvedModel

Inspected model metadata with derived capabilities and

ResolvedModel

native-family information.

Source code in src/ollm/runtime/resolver.py
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
def inspect_materialized_model(
    self,
    reference: ModelReference,
    model_path: Path,
    *,
    source_kind: ModelSourceKind,
    repo_id: str | None,
    revision: str | None,
    catalog_entry: ModelCatalogEntry | None,
) -> ResolvedModel:
    """Inspect a materialized local model directory and derive capabilities.

    Args:
        reference (ModelReference): Parsed reference associated with the
            local model path.
        model_path (Path): Materialized model directory to inspect.
        source_kind (ModelSourceKind): Source bucket for the materialized
            model.
        repo_id (str | None): Optional repository ID for materialized
            managed models.
        revision (str | None): Optional requested revision.
        catalog_entry (ModelCatalogEntry | None): Matching built-in catalog
            entry when one exists.

    Returns:
        ResolvedModel: Inspected model metadata with derived capabilities and
        native-family information.
    """
    inspection = self._capability_discovery.inspect_model_path(model_path)
    capabilities = inspection.capabilities
    if catalog_entry is not None and source_kind in {
        ModelSourceKind.BUILTIN,
        ModelSourceKind.HUGGING_FACE,
    }:
        capabilities = capabilities_from_catalog_entry(catalog_entry)
    native_family = (
        _native_family_from_catalog_entry(catalog_entry)
        if catalog_entry is not None
        else _native_family_from_architecture(inspection.architecture)
    )
    if native_family is not None:
        capabilities.supports_specialization = True
        capabilities.details["native_family"] = native_family.value
    normalized_name = (
        catalog_entry.model_id if catalog_entry is not None else model_path.name
    )
    return ResolvedModel(
        reference=reference,
        source_kind=source_kind,
        normalized_name=normalized_name,
        model_path=model_path,
        repo_id=repo_id,
        revision=revision,
        catalog_entry=catalog_entry,
        capabilities=capabilities,
        native_family=native_family,
        resolution_message=inspection.message,
        architecture=inspection.architecture,
        model_type=inspection.model_type,
        generic_model_kind=inspection.generic_model_kind,
    )