Symptom
openclaw infer model run --model nvidia/nemotron-3-super-120b-a12b ...
fails with 404 page not found from NVIDIA NIM.
NIM requires the full nvidia/<model> form in the request body,
but parseStaticModelRef (line 28-52 of model-ref-shared-DcLkozLZ.js)
splits on the first / and yields:
provider = "nvidia"
modelId = "nemotron-3-super-120b-a12b" (bare — prefix stripped)
The OpenAI-completions client then posts
{"model": "nemotron-3-super-120b-a12b", ...} — wrong shape for NIM,
because nemotron-3-super-120b-a12b (without the nvidia/ prefix)
isn't a valid NIM model identifier.
Reproduction
- Install plugin, register
nvidia/<model> correctly in models.json
(workaround for the related apiKey bug — see companion issue).
- Invoke:
openclaw infer model run --model nvidia/nemotron-3-super-120b-a12b --prompt hi
- NIM responds with
404 page not found.
Direct curl against NIM with the full nvidia/<model> id in the body
returns 200 OK, confirming credentials and connectivity are fine — the
bug is purely in how the model ref gets split before reaching the wire.
Root cause
parseStaticModelRef assumes:
- Provider id and model id are separable by
/.
- The wire body should contain only the model id (the suffix after the
first /).
Both assumptions break for providers whose model ids embed the provider
name. NIM is one example; OpenRouter-style ids (e.g.
anthropic/claude-3-opus) have the same shape.
Suggested fix
A per-provider config option that tells the parser to send the full id
in the wire body when the parsed prefix matches a provider that needs
it. Something like:
"models": {
"providers": {
"nvidia": {
"modelIdPrefix": "preserve"
}
}
}
Or a plugin-manifest flag: supportsBareModelRef: false.
Environment
- OpenClaw
2026.4.23 (commit a979721)
- Linux container
- Node
22.22.1
Workaround
Register the model under a different provider id (e.g.
nvidia-endpoints) so the parsed model id becomes the full
nvidia/<model> form (correct shape for NIM). Awkward but functional —
we ship this in production today. Worked example available in our
internal docs/operations/nvidia-routing.md writeup; happy to share
the relevant patches.
Reported by FortiumPartners after running into both bugs while wiring
NVIDIA NIM into a multi-agent NemoClaw deployment. Happy to test patches.
Symptom
fails with
404 page not foundfrom NVIDIA NIM.NIM requires the full
nvidia/<model>form in the request body,but
parseStaticModelRef(line 28-52 ofmodel-ref-shared-DcLkozLZ.js)splits on the first
/and yields:provider = "nvidia"modelId = "nemotron-3-super-120b-a12b"(bare — prefix stripped)The OpenAI-completions client then posts
{"model": "nemotron-3-super-120b-a12b", ...}— wrong shape for NIM,because
nemotron-3-super-120b-a12b(without thenvidia/prefix)isn't a valid NIM model identifier.
Reproduction
nvidia/<model>correctly inmodels.json(workaround for the related apiKey bug — see companion issue).
openclaw infer model run --model nvidia/nemotron-3-super-120b-a12b --prompt hi404 page not found.Direct curl against NIM with the full
nvidia/<model>id in the bodyreturns 200 OK, confirming credentials and connectivity are fine — the
bug is purely in how the model ref gets split before reaching the wire.
Root cause
parseStaticModelRefassumes:/.first
/).Both assumptions break for providers whose model ids embed the provider
name. NIM is one example; OpenRouter-style ids (e.g.
anthropic/claude-3-opus) have the same shape.Suggested fix
A per-provider config option that tells the parser to send the full id
in the wire body when the parsed prefix matches a provider that needs
it. Something like:
Or a plugin-manifest flag:
supportsBareModelRef: false.Environment
2026.4.23(commita979721)22.22.1Workaround
Register the model under a different provider id (e.g.
nvidia-endpoints) so the parsed model id becomes the fullnvidia/<model>form (correct shape for NIM). Awkward but functional —we ship this in production today. Worked example available in our
internal
docs/operations/nvidia-routing.mdwriteup; happy to sharethe relevant patches.
Reported by FortiumPartners after running into both bugs while wiring
NVIDIA NIM into a multi-agent NemoClaw deployment. Happy to test patches.