Description
When using Ollama with nemotron-3-nano:30b as the local inference provider, the OpenClaw agent returns blank responses in the dashboard chat. The gateway processes the request and the model generates output, but nothing is displayed to the user.
Root cause
Nemotron 3 Nano is a reasoning model. Ollama's OpenAI-compatible /v1/chat/completions endpoint puts the model's actual output into a reasoning field instead of content. OpenClaw reads content only, so the user sees an empty message.
Example raw response from Ollama:
{
"choices": [{
"message": {
"role": "assistant",
"content": "",
"reasoning": "The user wants: \"Say hello\"..."
},
"finish_reason": "stop"
}]
}
content is an empty string. The real output sits in reasoning.
Sending "reasoning_effort": "none" forces the model to write directly into content and the response shows up correctly:
{
"choices": [{
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
"finish_reason": "stop"
}]
}
Steps to reproduce
- Install Ollama with
nemotron-3-nano:30b on the host
- Run
nemoclaw onboard, select Ollama as inference provider
- Open the dashboard, send any message
- Observe: the assistant bubble appears but contains no text
Environment
- NemoClaw 0.1.0 / OpenClaw 2026.3.11
- Ollama 0.18+ with
nemotron-3-nano:30b
- WSL2 Ubuntu 24.04, RTX 5090 32GB
What should happen
The agent should display the model's output regardless of whether the model uses content or reasoning fields.
Suggested fix
A few options (not mutually exclusive):
- Send
reasoning_effort: "none" (or think: false) for models that don't need chain-of-thought — this is the simplest server-side fix and keeps the response format standard.
- Fall back to
reasoning when content is empty — if the completion comes back with an empty content but a non-empty reasoning field, treat reasoning as the display text.
- Document the limitation — at minimum, the Ollama onboarding path (currently behind
NEMOCLAW_EXPERIMENTAL=1) should warn that reasoning models may produce blank output, and suggest creating a non-reasoning model variant via ollama create.
Workaround
Create a non-reasoning model variant:
echo "FROM nemotron-3-nano:30b" | ollama create nemotron-nano-chat
Then set the inference model:
openshell inference set --no-verify --provider ollama-local --model nemotron-nano-chat
This works but the user shouldn't have to figure this out.
Description
When using Ollama with
nemotron-3-nano:30bas the local inference provider, the OpenClaw agent returns blank responses in the dashboard chat. The gateway processes the request and the model generates output, but nothing is displayed to the user.Root cause
Nemotron 3 Nano is a reasoning model. Ollama's OpenAI-compatible
/v1/chat/completionsendpoint puts the model's actual output into areasoningfield instead ofcontent. OpenClaw readscontentonly, so the user sees an empty message.Example raw response from Ollama:
{ "choices": [{ "message": { "role": "assistant", "content": "", "reasoning": "The user wants: \"Say hello\"..." }, "finish_reason": "stop" }] }contentis an empty string. The real output sits inreasoning.Sending
"reasoning_effort": "none"forces the model to write directly intocontentand the response shows up correctly:{ "choices": [{ "message": { "role": "assistant", "content": "Hello! How can I assist you today?" }, "finish_reason": "stop" }] }Steps to reproduce
nemotron-3-nano:30bon the hostnemoclaw onboard, select Ollama as inference providerEnvironment
nemotron-3-nano:30bWhat should happen
The agent should display the model's output regardless of whether the model uses
contentorreasoningfields.Suggested fix
A few options (not mutually exclusive):
reasoning_effort: "none"(orthink: false) for models that don't need chain-of-thought — this is the simplest server-side fix and keeps the response format standard.reasoningwhencontentis empty — if the completion comes back with an emptycontentbut a non-emptyreasoningfield, treatreasoningas the display text.NEMOCLAW_EXPERIMENTAL=1) should warn that reasoning models may produce blank output, and suggest creating a non-reasoning model variant viaollama create.Workaround
Create a non-reasoning model variant:
Then set the inference model:
This works but the user shouldn't have to figure this out.