software catalog

Docs pulled from project reposUpdated Sep 1, 2026View on GitHub

Troubleshooting

Symptoms you are most likely to hit, and what to do about them.

Deploy and storage

SymptomLikely cause / fix
PVC 'model-store' ... not ready (Pending)Normal on WaitForFirstConsumer storage — it binds once the pod schedules. A Pending PVC on Immediate storage means a provisioner problem.
Download Job Permission deniedThe downloader runs non-root; ensure the PVC is writable. The Job sets HOME and the cache paths to writable locations.
ImagePullBackOff on serving podsRegistry rate limit or proxy issue — configure a pull-through mirror, or pre-pull the runtime image on the node.
Model "gated" errorSet HF_TOKEN and re-run ./model-manager deploy <name> --wait. See Gated models.
Model stuck not-Readykubectl logs -n llm-inference -l app.kubernetes.io/name=<name> -f. CPU model load plus warmup takes minutes — this is often just slow, not broken.
Download fails behind a corporate proxySet http_proxy / https_proxy / no_proxy in the catalog's network: section, or via MM_HTTP_PROXY / MM_HTTPS_PROXY / MM_NO_PROXY.
ovms --pull aborts: "unsupported for OpenVINO models"weight_format was set for a model already published as OpenVINO IR. Leave it unset for OpenVINO/* repos — see Runtimes.

CPU pinning and scheduling

SymptomLikely cause / fix
Deploy blocked by the NRI pre-flight capacity checkThe requested cpu × replicas doesn't fit the balloon pool. Lower the request, or override with MM_NRI_PREFLIGHT=warn / MM_NRI_SKIP_PREFLIGHT=1.
Re-running deploy or install aborts on pre-flight for an already-deployed modelExpected before the spec-diff no-op landed. An unchanged model is now skipped without re-running pre-flight. Use MM_FORCE_REDEPLOY=1 to force a full re-apply.
Pod rejected with SMTAlignmentErrorUnder kubelet-static with full-pcpus-only, cpu must be a multiple of the SMT width. On an SMT-disabled cluster set mm_kubelet_threads_per_core: 1.
Pod annotated cpu-policy.model-manager.io/reason: nri-resolution-failedNRI was expected but couldn't be resolved, so the pod fell back to best-effort. It still serves, without exclusive cores. Check the NRI plugin is running on the node.
Model pod stays Pending with no node availableLikely the require_amx: true affinity with no AMX-labelled node. Check NFD is running: kubectl get pods -n node-feature-discovery, then kubectl get nodes -L feature.node.kubernetes.io/cpu-security.amx.enabled.

Detail → CPU Pinning & NUMA.

Requests and endpoints

SymptomLikely cause / fix
404 from inference.<domain> in litellm modeNothing is bound to that host in this mode — use litellm.<domain>. See Accessing Models.
401 on every request in keycloak modeMissing, malformed, or expired JWT. Tokens last 15 minutes by default — re-run source .../get-keycloak-token.sh, or pass --lifespan 3600.
401 in litellm mode with a key that used to workThe virtual key expired, was revoked, or exceeded its budget. List keys with /key/list?return_full_object=true.
401 for one model only, in litellm modeThe key's model allow-list doesn't include it. Mint a key with that model in models.
TLS certificate warnings from curl or a browserSelf-signed CA. Use --cacert env/<env>/logs/ai-solutions-ca.crt, or import that CA into your trust store.
The LiteLLM UI redirects to http:// and failsThe trailing slash is required: https://litellm.<domain>/ui/, not /ui.
Model deployed, but requests return "model not found"The model field must match the deploy name, not the Hugging Face model_id. List what's registered with GET /v1/models.

Install

SymptomLikely cause / fix
No models deployed after install inferenceExpected. config.yaml ships llm_services_deploy_models: false, and only models flagged autodeploy: true deploy. Both are required — see Auto-deploy on install.
An auto-deployed model failed but the install reported successBy design — the serving infrastructure is up and the failure is in the summary. Set model_deploy_strict: true to make it fatal.
--server-version rejected for an OpenVINO modelOpenVINO is a flat runtime with no version axis. Only vLLM is versioned.
--server-version rejected for a vLLM modelThe catalog's servers: block is an allow-list. Add the version there first — see Model Catalog.

Getting more detail

bash
# What model-manager would do, without doing it
./model-manager deploy <name> --dry-run

# Serving objects and their conditions
kubectl get llminferenceservices,inferenceservices -n llm-inference
kubectl describe llminferenceservice <name> -n llm-inference

# Model logs
kubectl logs -n llm-inference -l app.kubernetes.io/name=<name> -f

# The download Job for a model
kubectl get jobs -n llm-inference
kubectl logs -n llm-inference job/<download-job-name>

# Gateway and route state
kubectl get gateway,httproute -A
kubectl get aigatewayroute -A          # ai_gateway_provider=envoy

For platform-level problems — cluster, storage, certificates, DNS — see the solutions documentation.