---
title: Troubleshoot runtime selection
description: Find out why OME can't auto-select a runtime for your model, from kubectl's error or the RuntimeReady condition, then fix the runtime or name one.
---
When an [InferenceService](../../concepts/serving/inference-services.md) names no runtime and OME can't pick a [serving runtime](../../concepts/runtimes/serving-runtimes.md) for its model, OME lists the runtimes it excluded and why. Read that message, then fix the runtime or name one yourself.
The examples use an InferenceService `qwen2-5-7b` in the namespace `demo`, which serves the ClusterBaseModel `qwen2-5-7b`. The cluster has two ClusterServingRuntimes from the OME catalog, `srt-mistral-7b-instruct` and `srt-qwen2-5-7b`.
- `kubectl` access to read and patch InferenceServices and runtimes, and to read models.
- `jq`, to format JSON output.
- Optionally, the [`kubectl ome`](../../reference/kubectl-ome/overview.md#install) plugin, for Step 3. Until v1.3 is released, build it from source.
- A model that's `Ready`, so that OME has read its format from its files; see [What OME learns from the model](../../concepts/models/base-models.md#what-ome-learns-from-the-model). If the model is a BaseModel, the InferenceService sets `spec.model.kind: BaseModel`.
## How a selection failure shows up
When you apply an InferenceService that has an `engine` section and no [runner image of its own](../../reference/matching/model-version-matching.md#where-a-mismatch-shows-up), the admission webhook rejects it if no runtime matches. The error begins with `admission webhook "inferenceservice.ome-webhook-server.validator" denied the request:` and goes on with a message like this one:
```text
no supporting runtime found for model qwen2-5-7b and engine does not have complete runner configuration: no runtime found to support model safetensors with format safetensors in namespace demo. Checked 2 runtimes (0 namespace-scoped, 2 cluster-scoped). Excluded runtimes: srt-mistral-7b-instruct (model format 'mt:safetensors:1.0.0:Qwen2ForCausalLM:transformers:4.40.1' not in supported formats: architecture mismatch (model=Qwen2ForCausalLM, runtime=MistralForCausalLM), framework version mismatch (model=4.40.1, runtime=4.36.0))
```
Ignore the part about runner configuration: OME needs a runtime for the model either way. A new InferenceService isn't created, so go to [Step 2](#step-3-read-the-exclusion-reasons). One that already exists gets the same rejection on every update, even a label change, until a runtime matches or you name one.
OME catches the other failures later, with the same message. That covers an InferenceService with no `engine` section or with its own runner image, and one that stops matching, for example after you edit or delete a runtime. A new InferenceService then gets no pods, and one that's serving keeps its pods and stays `Ready`. Since v1.3, OME also sets the `RuntimeReady` condition to `False` and records a `RuntimeNotFound` Warning event, which Step 1 reads.
## Step 1: Read the RuntimeReady condition {since=v1.3}
The condition holds OME's message:
```bash
kubectl get inferenceservice qwen2-5-7b -n demo \
-o jsonpath='{.status.conditions[?(@.type=="RuntimeReady")]}' | jq
```
```output
{
"lastTransitionTime": "2026-09-28T08:14:02Z",
"message": "no runtime found to support model safetensors with format safetensors in namespace demo. Checked 2 runtimes (0 namespace-scoped, 2 cluster-scoped). Excluded runtimes: srt-mistral-7b-instruct (model format 'mt:safetensors:1.0.0:Qwen2ForCausalLM:transformers:4.40.1' not in supported formats: architecture mismatch (model=Qwen2ForCausalLM, runtime=MistralForCausalLM), framework version mismatch (model=4.40.1, runtime=4.36.0))",
"reason": "RuntimeNotFound",
"severity": "Info",
"status": "False",
"type": "RuntimeReady"
}
```
The same message is in a Warning event, which Kubernetes deletes after a while. On v1.2.2, which sets no condition, the event's message starts with `Failed to find runtime for model qwen2-5-7b: `. Its reason is `RuntimeSelectionError`, so put that reason in the command:
```bash
kubectl get events -n demo \
--field-selector involvedObject.name=qwen2-5-7b,reason=RuntimeNotFound \
-o 'custom-columns=TYPE:.type,REASON:.reason,FROM:.source.component,MESSAGE:.message'
```
```output
TYPE REASON FROM MESSAGE
Warning RuntimeNotFound v1beta1Controllers no runtime found to support model safetensors with format safetensors in namespace demo. Checked 2 runtimes (0 namespace-scoped, 2 cluster-scoped). Excluded runtimes: srt-mistral-7b-instruct (model format 'mt:safetensors:1.0.0:Qwen2ForCausalLM:transformers:4.40.1' not in supported formats: architecture mismatch (model=Qwen2ForCausalLM, runtime=MistralForCausalLM), framework version mismatch (model=4.40.1, runtime=4.36.0))
```
If neither command prints anything, the model may have no format: see [The message says the model format name is required](#the-message-says-the-model-format-name-is-required).
## Step 2: Read the exclusion reasons {#step-3-read-the-exclusion-reasons}
The message has this form:
```text
no runtime found to support model with format in namespace . Checked runtimes ( namespace-scoped, cluster-scoped). Excluded runtimes: (); ()
```
The message names the model by its format, such as `safetensors`. It counts every runtime that OME checked, then lists each one it excluded, with the first check that the runtime failed. A runtime that's counted but not listed passed every check, yet OME skipped it. In the example, that's `srt-qwen2-5-7b`: see [Step 3](#step-3-check-autoselect). When there are no runtimes at all, the message ends after the namespace: install a runtime for the model.
OME runs these checks in order:
| Reason | Fix |
| --- | --- |
| `runtime is disabled` | Set `disabled: false` on the runtime, or use another. |
| `runtime does not support the required accelerator class` | Use a runtime that supports the InferenceService's accelerator class. See [Runtime accelerator-class matching](../../reference/matching/runtime-accelerator-class-matching.md). |
| `runtime engine deployment mode does not match requested engine deployment mode ` | The runtime and the InferenceService set different deployment modes. See [Runtime deployment-mode matching](../../reference/matching/runtime-deployment-mode-matching.md). |
| `model format '