#llm request failed
1 messages Ā· Page 1 of 1 (latest)
that is my config file for my models, why can't I connect to it from telegram?
That Ollama block itself looks basically fine:
- native Ollama URL, no
/v1, good api: "ollama", good- models are explicitly defined, so OpenClaw will use exactly those entries
The catch is, this alone does not prove the failing run is actually using one of those models.
Please paste these next:
openclaw models status
openclaw config get agents.defaults.model
ollama list
openclaw status
And if you want the fastest isolate-the-problem check:
openclaw infer model run --model ollama/gemma4 --prompt "hi" --json
Why Iām asking:
- if
infer model runfails, itās the Ollama/provider side - if it works, but normal chats still fail, itās usually the selected model, session/tool pressure, or fallback routing
- since
models.providers.ollamais explicit, model IDs must match whatollama listshows exactly
Also, some local Ollama models can do plain chat but still fall over on full agent/tool turns, so the exact error text matters a lot. If you have it, paste the actual LLM request failed ... line too.
Docs:
Because Telegram is not connecting to Ollama directly, OpenClaw is.
The important bit is this:
baseUrl: "http://127.0.0.1:11434"means āconnect to Ollama on the same machine as the OpenClaw gatewayā127.0.0.1is always localhost of the gateway process, not your Telegram client, not your phone, not another server
So this works only if:
- OpenClaw gateway and Ollama are running on the same host
- the gateway was restarted after the config change
- your default agent model is actually set to an
ollama/...model
A few common gotchas:
- Gateway on VPS / Docker / another machine + Ollama on your laptop
ā127.0.0.1is wrong there
- provider is configured, but default model is still something else
- Ollama is up locally, but the gateway service hasnāt reloaded the config yet
Please run these on the gateway host and paste them:
openclaw models status
openclaw config get agents.defaults.model
curl http://127.0.0.1:11434/api/tags
openclaw gateway restart
openclaw status
If gateway and Ollama are on different machines, change baseUrl to the host/IP that the gateway can actually reach. Prefer a private network or Tailscale, not exposing Ollama publicly.
Docs:
If you paste openclaw models status next, I can usually spot the problem pretty fast.
openclaw infer model run --model ollama/gemma4 --prompt "hi" --json
Error: Model override "ollama/gemma4" is not allowed for agent "main".
Nice, that error is actually the clue.
OpenClaw did not reach Ollama yet.
openclaw infer model run reuses the normal agent runtime, and your main agent is rejecting the override because ollama/gemma4 is not in the allowed model list.
So the problem is likely:
agents.defaults.modelsis set as an allowlist- your Ollama models are not included there
- Telegram is hitting that same agent policy
Please run:
openclaw config get agents.defaults.models
openclaw models list
openclaw config get agents.defaults.model
If agents.defaults.models exists, either:
- add your Ollama models to it, and set one as primary, or
- remove the allowlist if you donāt want model restrictions
Minimal example:
{
agents: {
defaults: {
model: { primary: "ollama/gemma4" },
models: {
"ollama/gemma4": {},
"ollama/qwen3-coder:latest": {}
}
}
}
}
Then restart:
openclaw gateway restart
So, short version: this is not a Telegram connection problem yet, itās a model allowlist/policy problem.
Docs:
- https://docs.openclaw.ai/concepts/models
- https://docs.openclaw.ai/cli/infer
- https://docs.openclaw.ai/providers/ollama
If you paste openclaw config get agents.defaults.models, I can tell you the exact fix.
here is the output:
openclaw config get agents.defaults.models
š¦ OpenClaw 2026.4.9 (0512059) ā I autocomplete your thoughtsājust slower and with more API calls.
{
"copilot-proxy/gpt-5.2": {},
"copilot-proxy/gpt-5.2-codex": {},
"copilot-proxy/gpt-5.1": {},
"copilot-proxy/gpt-5.1-codex": {},
"copilot-proxy/gpt-5.1-codex-max": {},
"copilot-proxy/gpt-5-mini": {},
"copilot-proxy/claude-opus-4.6": {},
"copilot-proxy/claude-opus-4.5": {},
"copilot-proxy/claude-sonnet-4.5": {},
"copilot-proxy/claude-haiku-4.5": {},
"copilot-proxy/gemini-3-pro": {},
"copilot-proxy/gemini-3-flash": {},
"copilot-proxy/grok-code-fast-1": {}
}
Yep, thatās the problem.
Your agent is currently allowlisting only copilot-proxy/... models.
So even though models.providers.ollama is configured, Ollama is blocked by policy and Telegram canāt use it.
Right now your allowed list contains only things like:
copilot-proxy/gpt-5.2copilot-proxy/claude-opus-4.6copilot-proxy/gemini-3-pro
and does not include:
ollama/gemma4ollama/qwen3-coder:latest
Fix
Either:
Option A, add Ollama to the allowlist
Keep your current models, but add:
{
"ollama/gemma4": {},
"ollama/qwen3-coder:latest": {}
}
under agents.defaults.models, and set:
agents.defaults.model.primary = "ollama/gemma4"
Option B, remove the allowlist
If you donāt want model restrictions, remove agents.defaults.models entirely.
Then restart the gateway:
openclaw gateway restart
Important
After that, test again with:
openclaw models status
curl http://127.0.0.1:11434/api/tags
So the order is:
- fix allowlist
- restart gateway
- test Ollama reachability
Right now you were failing at step 1, before OpenClaw even tried to talk to Ollama.
Docs:
- https://docs.openclaw.ai/concepts/models
- https://docs.openclaw.ai/providers/ollama
- https://docs.openclaw.ai/help/faq#why-do-i-see-model--is-not-allowed-and-then-no-reply
If you want, paste openclaw config get agents.defaults.model next and Iāll tell you exactly what to change.
i want to remove the model restrictions, tell me step by step how to do that
Yep, hereās the clean step-by-step.
Remove the model restrictions
1. Remove the allowlist
This is the actual restriction:
openclaw config unset agents.defaults.models
2. Restart the gateway
So it reloads the config:
openclaw gateway restart
3. Verify the allowlist is gone
This should now return nothing / empty:
openclaw config get agents.defaults.models
If you want Ollama to be the default too
4. Set the default model to Ollama
If you want Telegram chats to use Ollama by default:
openclaw config set agents.defaults.model '"ollama/gemma4"' --strict-json
5. Restart again
openclaw gateway restart
6. Verify
openclaw config get agents.defaults.model
openclaw models status
curl http://127.0.0.1:11434/api/tags
Then test from Telegram
If Telegram is reaching the gateway correctly, it should now be able to use Ollama.
If you want to switch in-chat, you can also try:
/model list
/model ollama/gemma4
Important note
If OpenClaw and Ollama are not on the same machine, 127.0.0.1:11434 is still wrong.
That address must be reachable from the gateway host.
Docs:
- https://docs.openclaw.ai/cli/config
- https://docs.openclaw.ai/concepts/models
- https://docs.openclaw.ai/providers/ollama
If any step throws an error, paste it and Iāll walk you through the next one.
still showing LLM request failed: network connection error, despite openclaw gateway status showing this:
openclaw gateway status
š¦ OpenClaw 2026.4.9 (0512059) ā Like having a senior engineer on call, except I don't bill hourly or sigh audibly.
ā
ā
Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-10.log
Command: /usr/bin/node /home/azureadmin/.npm-global/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json
Gateway: bind=lan (0.0.0.0), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://172.20.136.184:18789/
Probe note: bind=lan listens on 0.0.0.0 (all interfaces); probing via 127.0.0.1.
Runtime: running (pid 15571, state active, sub running, last exit 0, reason 0)
RPC probe: ok
Listening: *:18789
Youāre close, and this output is consistent with one specific thing:
openclaw gateway status only proves Gateway is up, not that it can reach your model backend (Ollama).
Do this exact check sequence on the gateway host
- Confirm what model is actually selected:
openclaw config get agents.defaults.model
- If it is not Ollama, set it:
openclaw config set agents.defaults.model '"ollama/gemma4"' --strict-json
openclaw gateway restart
- Test Ollama reachability from that same machine:
curl -sS http://127.0.0.1:11434/api/tags
- Test OpenClaw inference directly:
openclaw infer model run --prompt "hi" --json
- Get provider diagnostics:
openclaw models status --probe
If step 3 fails, that is the root cause (Ollama not running on that host, wrong host, or blocked port).
If Ollama is on another machine, change:
openclaw config set models.providers.ollama.baseUrl '"http://<OLLAMA_HOST>:11434"' --strict-json
openclaw gateway restart
Paste steps 1, 3, and 5 output, and Iāll pinpoint it fast.
inference test result:
openclaw infer model run --prompt "hi" --json
13:57:30+00:00 [agent] embedded run agent end: runId=e4983e33-d39b-4f10-9006-f95e8b48503c isError=true model=gemma4 provider=ollama error=404 {"error":"model 'gemma4' not found"} rawError=404 {"error":"model 'gemma4' not found"}
13:57:30+00:00 [agent] auth profile failure state updated: runId=e4983e33-d39b-4f10-9006-f95e8b48503c profile=sha256:9c018ec112cf provider=ollama reason=model_not_found window=cooldown reused=false
13:57:30+00:00 [agent] embedded run failover decision: runId=e4983e33-d39b-4f10-9006-f95e8b48503c stage=assistant decision=surface_error reason=model_not_found provider=ollama/gemma4 profile=sha256:9c018ec112cf
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "ollama",
"model": "gemma4",
"attempts": [],
"outputs": [
{
"text": "404 {"error":"model 'gemma4' not found"}",
"mediaUrl": null
}
]
}
Perfect, this is the root cause.
Your gateway can reach Ollama, but Ollama says:
404 {"error":"model 'gemma4' not found"}
So this is not a Telegram network issue now, it is a missing model on the Ollama host.
Fix
- Check what Ollama actually has:
ollama list
- Pull the model(s) your OpenClaw config references:
ollama pull gemma4
ollama pull qwen3-coder:latest
- Restart gateway:
openclaw gateway restart
- Re-test:
openclaw infer model run --prompt "hi" --json
If pull fails
If ollama pull gemma4 fails, use a model name that exists in ollama list, then update OpenClaw to that exact model id.
If you paste ollama list, I can tell you the exact config line to use.
I have been struggling with getting WSL or any environment to notice my Ollama version. It is the latest from Ollama's website:
ollama list
NAME ID SIZE MODIFIED
qwen3-coder:latest 06c1097efce0 18 GB 3 hours ago
azureadmin@Win10-Personal:~$ ollama pull gemma4
pulling manifest
Error: pull model manifest: 412:
The model you are attempting to pull requires a newer version of Ollama.
Please download the latest version at:
https://ollama.com/download
This is super helpful, we found it.
You currently have only this model installed:
qwen3-coder:latest
And gemma4 fails with 412 because your WSL Ollama daemon is older than what gemma4 requires.
Also, Windows Ollama and WSL Ollama are separate installs, updating one does not update the other.
Fastest unblock (right now)
Use the model you already have:
openclaw config set agents.defaults.model '"ollama/qwen3-coder:latest"' --strict-json
openclaw gateway restart
openclaw infer model run --prompt "hi" --json
Fix WSL Ollama version mismatch
Run in WSL:
which ollama
ollama --version
curl -s http://127.0.0.1:11434/api/version
Then update WSL Ollama itself:
curl -fsSL https://ollama.com/install.sh | sh
Restart Ollama daemon in WSL (whichever you use):
sudo systemctl restart ollama
# or, if you run manually:
pkill ollama || true
ollama serve
Then retry:
ollama pull gemma4
If you paste ollama --version and /api/version, I can tell you immediately if client/server are mismatched.
pulling gemma4 successful, gateway restarted, still getting "LLM request failed: network connection error" after a very long wait on Telegram
Great, pulling gemma4 was a big step.
If it still fails after a long wait, we should isolate whether it is model runtime vs Telegram session state.
1) Hard-pin default to Ollama only (no fallback noise)
openclaw config set agents.defaults.model '{"primary":"ollama/gemma4","fallbacks":[]}' --strict-json
openclaw gateway restart
openclaw config get agents.defaults.model
2) Test model path directly from CLI
openclaw infer model run --model ollama/gemma4 --prompt "reply with exactly: ok" --json
3) Check what Telegram session is using
In Telegram chat:
/model status
/model ollama/gemma4
4) Capture the real error line while reproducing
Terminal A:
openclaw logs --follow
Terminal B: send one short Telegram message (hi), then paste the first error= line from logs.
If CLI infer succeeds but Telegram still fails, the model is fine and we are looking at session/channel routing state.
If CLI infer fails, paste that output and I can give the exact next fix.
infer test output:
"openclaw infer model run --model ollama/gemma4 --prompt "reply with exactly: ok" --json
14:17:27+00:00 [agent] Profile ollama:default timed out. Trying next account...
14:17:27+00:00 [agent] embedded run failover decision: runId=e4983e33-d39b-4f10-9006-f95e8b48503c stage=assistant decision=surface_error reason=model_not_found provider=ollama/gemma4 profile=sha256:9c018ec112cf
[agent] run e4983e33-d39b-4f10-9006-f95e8b48503c ended with stopReason=error
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "ollama",
"model": "gemma4",
"attempts": [],
"outputs": [
{
"text": "404 {"error":"model 'gemma4' not found"}",
"mediaUrl": null
}
]
}"
On Telegram, /model status returns:
Current: ollama/gemma4 (selected)
Active: copilot-proxy/gpt-5.2 (runtime)
Default: ollama/gemma4
Agent: main
Auth file: ~/.openclaw/agents/main/agent/auth-profiles.json
[amazon-bedrock] endpoint: default auth: missing
⢠amazon-bedrock/anthropic.claude-3-haiku-20240307-v1:0
⢠amazon-bedrock/anthropic.claude-3-5-haiku-20241022-v1:0
⢠amazon-bedrock/anthropic.claude-haiku-4-5-20251001-v1:0
⢠amazon-bedrock/eu.anthropic.claude-haiku-4-5-20251001-v1:0
⢠amazon-bedrock/global.anthropic.claude-haiku-4-5-20251001-v1:0
⢠amazon-bedrock/us.anthropic.claude-haiku-4-5-20251001-v1:0
...as well as many, many other models
Nice, this output is super clear now.
You still have a model-source mismatch:
- OpenClaw is calling
http://127.0.0.1:11434and gettingmodel 'gemma4' not found - So the Ollama endpoint OpenClaw uses does not currently have
gemma4
Also, Active: copilot-proxy/gpt-5.2 means runtime fallback is still in play.
Do this exactly
- Check what OpenClawās exact endpoint sees:
curl -sS http://127.0.0.1:11434/api/tags
- Force Ollama CLI to that same endpoint, then pull:
echo "$OLLAMA_HOST"
OLLAMA_HOST=127.0.0.1:11434 ollama list
OLLAMA_HOST=127.0.0.1:11434 ollama pull gemma4
- Test both models directly:
openclaw infer model run --model ollama/gemma4 --prompt "ok" --json
openclaw infer model run --model ollama/qwen3-coder:latest --prompt "ok" --json
- In Telegram, switch to the one that passes infer:
/model ollama/qwen3-coder:latest
/model status
If step 1 does not show gemma4, that is the whole issue.
If step 3 passes but Telegram still fails, paste fresh /model status and weāll clear the runtime fallback state next.
openclaw endppoint sees:
"curl -sS http://127.0.0.1:11434/api/tags
{"models":[{"name":"gemma4:latest","model":"gemma4:latest","modified_at":"2026-04-10T14:06:03.186784909Z","size":9608350718,"digest":"c6eb396dbd5992bbe3f5cdb947e8bbc0ee413d7c17e2beaae69f5d569cf982eb","details":{"parent_model":"","format":"gguf","family":"gemma4","families":["gemma4"],"parameter_size":"8.0B","quantization_level":"Q4_K_M"}}]}"
how do I force ollama cli to that endpoint?
Nice, that confirms it. ā
To force Ollama CLI to a specific endpoint, set OLLAMA_HOST.
One command only (temporary)
OLLAMA_HOST=127.0.0.1:11434 ollama list
OLLAMA_HOST=127.0.0.1:11434 ollama pull gemma4
For current shell session
export OLLAMA_HOST=127.0.0.1:11434
ollama list
Persist it (future shells)
echo 'export OLLAMA_HOST=127.0.0.1:11434' >> ~/.bashrc
source ~/.bashrc
Also, your endpoint shows gemma4:latest, so set OpenClaw to the exact tag to avoid mismatch:
openclaw config set agents.defaults.model '"ollama/gemma4:latest"' --strict-json
openclaw gateway restart
Then retest:
openclaw infer model run --model ollama/gemma4:latest --prompt "ok" --json
'openclaw infer model run --model ollama/gemma4:latest --prompt "ok" --json' is still running; no output yet. On Telegram, I set the model to 'ollama/gemma4', got confirmation from Telegram, but on a follow-up message (I said 'so what now'), I got the same error: "LLM request failed"
Got it, youāre very close.
At this point, do these exact changes so everything uses the same exact model tag.
-
Stop the hanging infer (
Ctrl+C). -
Update OpenClaw model id/name to exact Ollama tag:
openclaw config set models.providers.ollama.models[0].id '"gemma4:latest"' --strict-json
openclaw config set models.providers.ollama.models[0].name '"gemma4:latest"' --strict-json
openclaw config set agents.defaults.model '"ollama/gemma4:latest"' --strict-json
openclaw gateway restart
- Verify raw Ollama speed on that endpoint:
OLLAMA_HOST=127.0.0.1:11434 ollama run gemma4:latest "reply with exactly: ok"
- In Telegram, set exact same tag:
/model ollama/gemma4:latest
/model status
If step 3 is very slow/hangs, OpenClaw will timeout and surface LLM request failed.
Then the issue is model runtime speed on that machine, not Telegram routing.
If you paste step 3 timing + /model status after this, I can give the final tuning step.
actually, I just got the output from the inference test: "openclaw infer model run --model ollama/gemma4:latest --prompt "ok" --json
14:26:48+00:00 [agent] Profile ollama:default timed out. Trying next account...
14:26:48+00:00 [agent] embedded run failover decision: runId=e4983e33-d39b-4f10-9006-f95e8b48503c stage=assistant decision=surface_error reason=model_not_found provider=ollama/gemma4 profile=sha256:9c018ec112cf
[agent] run e4983e33-d39b-4f10-9006-f95e8b48503c ended with stopReason=error
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "ollama",
"model": "gemma4",
"attempts": [],
"outputs": [
{
"text": "404 {"error":"model 'gemma4' not found"}",
"mediaUrl": null
}
]
}"
Great catch, your pasted config is the key.
It still has:
id: "gemma4"(notgemma4:latest)
So OpenClaw keeps resolving to gemma4, which your Ollama endpoint rejects.
Run this exactly:
openclaw config set models.providers.ollama.models[0].id '"gemma4:latest"' --strict-json
openclaw config set models.providers.ollama.models[0].name '"gemma4:latest"' --strict-json
openclaw config set agents.defaults.model '"ollama/gemma4:latest"' --strict-json
openclaw models auth order clear --provider ollama
openclaw gateway restart
Then verify:
openclaw config get models.providers.ollama.models
openclaw infer model run --model ollama/gemma4:latest --prompt "ok" --json
If it still logs Profile ollama:default timed out, paste openclaw models auth order get --provider ollama next, that means stale profile ordering is still in play.
yes, profile ollama still timing out. here is output of requested command:
azureadmin@Win10-Personal:~$ openclaw models auth order get --provider ollama
š¦ OpenClaw 2026.4.9 (0512059) ā Deployed locally, trusted globally, debugged eternally.
Agent: main
Provider: ollama
Auth state file: ~/.openclaw/agents/main/agent/auth-state.json
Order override: (none)
Thanks, this confirms two separate issues are still happening:
- OpenClaw is still resolving to
gemma4(notgemma4:latest) - A stale Ollama auth profile is timing out first
Letās hard-fix both.
1) Force exact model id in config (and verify)
openclaw config set models.providers.ollama.models[0].id gemma4:latest
openclaw config set models.providers.ollama.models[0].name gemma4:latest
openclaw config set agents.defaults.model ollama/gemma4:latest
openclaw config get models.providers.ollama.models[0].id
openclaw config get agents.defaults.model
2) Force local Ollama auth marker
openclaw config set models.providers.ollama.apiKey ollama-local
openclaw gateway restart
3) Retest
openclaw infer model run --model ollama/gemma4:latest --prompt "ok" --json
If it still says Profile ollama:default timed out, paste this next:
openclaw models status --probe --json
Weāll read the Ollama credential candidates and remove the stale one cleanly.
I need you to clarify something for me: these code snippets that you paste here, do you want me to run them one by one, or can I copy the entire window? If I copy the entire window into the WSL terminal, the formatting becomes unreadable, and I don't know if the commands are executed. Please try to put each command into a separate line
100%, great call.
Please run them one by one, not as one big paste.
Use this exact sequence, one command per line:
openclaw config set models.providers.ollama.models[0].id gemma4:latest
openclaw config set models.providers.ollama.models[0].name gemma4:latest
openclaw config set agents.defaults.model ollama/gemma4:latest
openclaw config set models.providers.ollama.apiKey ollama-local
openclaw gateway restart
openclaw config get models.providers.ollama.models[0].id
openclaw config get agents.defaults.model
openclaw infer model run --model ollama/gemma4:latest --prompt "ok" --json
If anything errors, stop there and paste that single error.
got stuck after restarting gateway, can't ctrl+c to cancel, can't get cursor back after spamming enter
Got it, terminal is likely paused. Try this in order:
Press Ctrl+Q
Press Ctrl+C
Type reset and press Enter (even if you canāt see text)
If still frozen, close that WSL tab/window and open a new one.
Then run:
openclaw gateway status
If that works, continue with:
openclaw infer model run --model ollama/gemma4:latest --prompt "ok" --json
Youāre not far off, this is just terminal state weirdness.
infer test output:
openclaw infer model run --model ollama/gemma4:latest --prompt "ok" --json
14:50:57+00:00 [agent] Removed orphaned user message to prevent consecutive user turns. runId=e4983e33-d39b-4f10-9006-f95e8b48503c sessionId=e4983e33-d39b-4f10-9006-f95e8b48503c trigger=user
14:51:57+00:00 [agent] Profile ollama:default timed out. Trying next account...
14:51:57+00:00 [agent] embedded run failover decision: runId=e4983e33-d39b-4f10-9006-f95e8b48503c stage=assistant decision=surface_error reason=model_not_found provider=ollama/gemma4 profile=sha256:9c018ec112cf
[agent] run e4983e33-d39b-4f10-9006-f95e8b48503c ended with stopReason=error
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "ollama",
"model": "gemma4",
"attempts": [],
"outputs": [
{
"text": "404 {"error":"model 'gemma4' not found"}",
"mediaUrl": null
}
]
}
Perfect, thanks for the log.
We need to verify the config change actually applied.
Please run these one by one and paste each output:
openclaw config get models.providers.ollama.models[0].id
openclaw config set models.providers.ollama.models[0].id '"gemma4:latest"' --strict-json
openclaw config set models.providers.ollama.models[0].name '"gemma4:latest"' --strict-json
openclaw config get models.providers.ollama.models[0]
openclaw gateway restart
openclaw infer model run --model ollama/gemma4:latest --prompt "ok" --json
Right now OpenClaw is still sending gemma4, so we need to confirm that [0].id really changed to gemma4:latest.
azureadmin@Win10-Personal:~$ openclaw config get models.providers.ollama.models[0].id
š¦ OpenClaw 2026.4.9 (0512059) ā Running on your hardware, reading your logs, judging nothing (mostly).
gemma4:latest
azureadmin@Win10-Personal:~$
azureadmin@Win10-Personal:~$ openclaw config set models.providers.ollama.models[0].id '"gemma4:latest"' --strict-json
š¦ OpenClaw 2026.4.9 (0512059) ā Powered by open source, sustained by spite and good documentation.
Config overwrite: /home/azureadmin/.openclaw/openclaw.json (sha256 6bef83c821c0f1dd33dabd329ed83c6ee78dbe0f99e19362cc93b21fd7449276 -> 3b462aa060eed0d0f34c4ae883474da09b9bee5d71f69572ab9ade2fac5698b5, backup=/home/azureadmin/.openclaw/openclaw.json.bak)
Updated models.providers.ollama.models.0.id. Restart the gateway to apply.
azureadmin@Win10-Personal:~$
should i stop here and restart the gateway?
Yes, perfect. š
Run these next, one by one:
openclaw config set models.providers.ollama.models[0].name '"gemma4:latest"' --strict-json
openclaw gateway restart
openclaw infer model run --model ollama/gemma4:latest --prompt "ok" --json
Then paste that final infer output.
openclaw infer model run --model ollama/gemma4:latest --prompt "ok" --json
14:56:54+00:00 [agent] Profile ollama:default timed out. Trying next account...
14:56:54+00:00 [agent] embedded run failover decision: runId=e4983e33-d39b-4f10-9006-f95e8b48503c stage=assistant decision=surface_error reason=model_not_found provider=ollama/gemma4 profile=sha256:9c018ec112cf
[agent] run e4983e33-d39b-4f10-9006-f95e8b48503c ended with stopReason=error
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "ollama",
"model": "gemma4",
"attempts": [],
"outputs": [
{
"text": "404 {"error":"model 'gemma4' not found"}",
"mediaUrl": null
}
]
}
Thanks, this proves it.
OpenClaw is still sending gemma4 (without tag), and your Ollama only has gemma4:latest.
Letās do a direct workaround now:
OLLAMA_HOST=127.0.0.1:11434 ollama cp gemma4:latest gemma4
OLLAMA_HOST=127.0.0.1:11434 ollama list
openclaw gateway restart
openclaw infer model run --model ollama/gemma4 --prompt "ok" --json
If that works, Telegram should work too with:
/model ollama/gemma4
The Profile ollama:default timed out line is a separate stale-profile issue, but first letās get a successful model response.
before I restart the gateway again, look at this:
azureadmin@Win10-Personal:~$ OLLAMA_HOST=127.0.0.1:11434 ollama cp gemma4:latest gemma4
copied 'gemma4:latest' to 'gemma4'
azureadmin@Win10-Personal:~$ OLLAMA_HOST=127.0.0.1:11434 ollama list
NAME ID SIZE MODIFIED
gemma4:latest c6eb396dbd59 9.6 GB 52 minutes ago
azureadmin@Win10-Personal:~$
did the renaming actually work?
Good question. It might have worked, ollama list can still show only the canonical tag.
Letās verify directly, one line at a time:
OLLAMA_HOST=127.0.0.1:11434 ollama show gemma4
If that command succeeds, alias works.
Then continue:
openclaw gateway restart
openclaw infer model run --model ollama/gemma4 --prompt "ok" --json
If ollama show gemma4 fails, paste that exact error and weāll use a different workaround.
azureadmin@Win10-Personal:~$ OLLAMA_HOST=127.0.0.1:11434 ollama show gemma4
Model
architecture gemma4
parameters 8.0B
context length 131072
embedding length 2560
quantization Q4_K_M
requires 0.20.0
Capabilities
completion
vision
audio
tools
thinking
Parameters
temperature 1
top_k 64
top_p 0.95
License
Apache License
Version 2.0, January 2004
...
azureadmin@Win10-Personal:~$
Excellent, that means aliasing worked. ā
Now do these next, one by one:
openclaw gateway restart
openclaw infer model run --model ollama/gemma4 --prompt "ok" --json
If that succeeds, test Telegram again:
/model ollama/gemma4
Then send a short message like ok.
Paste the infer output after restart, that will confirm weāre finally past the model_not_found part.
openclaw infer model run --model ollama/gemma4 --prompt "ok" --json is taking a very long time again. I have a feeling it is going to fail. while it is doing that, please tell me: is there some way to easily deploy openclaw? all the tools and settings and dependencies that need to be configured during onboarding are extremely confusing, and would require a lot of time, research and setup for each individual tool. surely someone has made some kind of automation for this. I just want to be able to run openclaw and talk to the simplest model possible, through telegram
Totally fair, youāre right, this is too much friction.
Yes, there is an easier automated path.
If your goal is just Telegram + one local model, do this minimal flow.
Run one by one:
openclaw onboard --non-interactive --mode local --auth-choice ollama --custom-base-url "http://127.0.0.1:11434" --custom-model-id "gemma4" --gateway-port 18789 --gateway-bind loopback --install-daemon --accept-risk --skip-skills
openclaw config set channels.telegram.botToken "<YOUR_BOTFATHER_TOKEN>"
openclaw config set channels.telegram.dmPolicy pairing
openclaw gateway restart
Now in Telegram, DM your bot and send /start.
Then approve pairing in terminal:
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
That is the simplest secure setup, no extra tool config needed.
Docs:
after the first command, we already have problems:
openclaw onboard --non-interactive --mode local --auth-choice ollama --custom-base-url "http://127.0.0.1:11434" --custom-model-id "gemma4" --gateway-port 18789 --gateway-bind loopback --install-daemon --accept-risk --skip-skills
š¦ OpenClaw 2026.4.9 (0512059) ā I've survived more breaking changes than your last three relationships.
Downloading gemma4...
Downloaded gemma4
Default Ollama model: gemma4
Config overwrite: /home/azureadmin/.openclaw/openclaw.json (sha256 a43983de6f55f7a971c0c267b73c47858bca0d60bd0a0929e3867dc4bb1aff1d -> 6eec584670bbb7ddb205165c3bb93d2f0df4fdaccf91ddddb1e348d26ecb0f1e, backup=/home/azureadmin/.openclaw/openclaw.json.bak)
Updated ~/.openclaw/openclaw.json
Workspace OK: ~/.openclaw/workspace
Sessions OK: ~/.openclaw/agents/main/sessions
Installed systemd service: /home/azureadmin/.config/systemd/user/openclaw-gateway.service
Previous unit backed up to: /home/azureadmin/.config/systemd/user/openclaw-gateway.service.bak
ā
ā
Error: gateway timeout after 10000ms
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/azureadmin/.openclaw/openclaw.json
Bind: loopback
You did nothing wrong, onboarding mostly succeeded.
That timeout usually means the service did not come up fast enough.
Run these one by one:
openclaw gateway status
openclaw gateway start
openclaw gateway status
If it still shows timeout/not running:
systemctl --user daemon-reload
systemctl --user restart openclaw-gateway
openclaw gateway status
If still failing, get the service error:
journalctl --user -u openclaw-gateway -n 120 --no-pager
Paste the output of openclaw gateway status after restart, and Iāll give the exact next command.
ok, let's assume the gateway is working.. i'm proceeding with the telegram token
Sounds good š
Just do one quick check first, then continue.
openclaw gateway status
Then:
openclaw config set channels.telegram.botToken "<YOUR_BOTFATHER_TOKEN>"
openclaw config set channels.telegram.dmPolicy pairing
openclaw gateway restart
openclaw channels status --probe
Then in Telegram, DM your bot and send /start, then approve:
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
If any command errors, paste that exact output and Iāll give the next line.
is it ok?
openclaw gateway status
š¦ OpenClaw 2026.4.9 (0512059) ā Running on your hardware, reading your logs, judging nothing (mostly).
ā
ā
Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-10.log
Command: /usr/bin/node /home/azureadmin/.npm-global/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json
Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.
Runtime: running (pid 22969, state active, sub running, last exit 0, reason 0)
RPC probe: ok
Listening: 127.0.0.1:18789
Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting
Yes, this is good. ā
Runtime: running + RPC probe: ok means gateway is healthy.
Now continue, one command per line:
openclaw config set channels.telegram.botToken "<YOUR_BOTFATHER_TOKEN>"
openclaw config set channels.telegram.dmPolicy pairing
openclaw gateway restart
openclaw channels status --probe
Then DM your bot in Telegram with /start, then:
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
(Loopback bind is fine for Telegram polling mode.)
after setting my bot token, it is asking for a gateway restart again
Yep, that is expected.
Run this now:
openclaw gateway restart
Then:
openclaw channels status --probe
Paste that output, and weāll confirm Telegram is connected.
openclaw channels status --probe
š¦ OpenClaw 2026.4.9 (0512059) ā If it's repetitive, I'll automate it; if it's hard, I'll bring jokes and a rollback plan.
ā
ā
Gateway reachable.
- Telegram default: enabled, configured, running, mode:polling, bot:@REDACTEDt, token:config, works
Tip: status --deep adds gateway health probes to status output (requires a reachable gateway).
Perfect, this is good. Telegram is fully connected. ā
Now do the final activation steps:
In Telegram, DM your bot:
/start
Then in terminal:
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
Then test in Telegram:
hi
If it still returns LLM request failed, paste that exact bot error and weāll do the last model-only fix.
here's the thing: I already have the bot setup on Telegram. "/start" only returns the LLM request failed error, and in the terminal, there are no pending pairing requests
Yep, that makes sense.
No pending pairing means Telegram auth is already fine. This is now purely a model-runtime issue.
Letās refresh the Ollama auth profile (the timeout line points to stale profile state):
openclaw models auth login --provider ollama --set-default
(If prompted, choose the local Ollama option.)
openclaw gateway restart
openclaw infer model run --model ollama/gemma4 --prompt "ok" --json
If that infer works, Telegram will work too.
If it still fails, paste this next:
openclaw models status --probe --json
and Iāll tell you exactly which profile entry to remove.
it's stuck on this:
openclaw models auth login --provider ollama --set-default
š¦ OpenClaw 2026.4.9 (0512059) ā Gateway onlineāplease keep hands, feet, and appendages inside the shell at all times.
ā
ā Ollama base URL
ā http://127.0.0.1:11434
pressing Enter does nothing.........
Yep, abort that one, itās interactive and flaky in your terminal right now.
Do this instead:
Press Ctrl+C
Then run:
openclaw infer model run --model ollama/gemma4 --prompt "ok" --json
If that still fails, run this and paste output:
openclaw models status --probe --json
We can fix without the interactive auth login flow.
openclaw infer model run --model ollama/gemma4 --prompt "ok" --json
taking forever again
Yeah, thatās frustrating, and youāre right to pause.
Letās do one quick split test so we stop guessing.
Press Ctrl+C, then run these one by one:
time OLLAMA_HOST=127.0.0.1:11434 ollama run gemma4 "ok"
openclaw models status --probe --json
Why:
- if
ollama runis slow, the model/runtime is the bottleneck - if
ollama runis fast but OpenClaw is slow/failing, it is OpenClaw auth-profile routing (ollama:default timed out) and we can fix that directly next
Paste both outputs and Iāll give you the shortest final fix path.
ctrl+c has no effect
Got it. Kill the stuck process with this sequence:
Press Ctrl+\
If still stuck, press Ctrl+Z
Then type:
kill %1
Then fix terminal state:
stty sane
reset
If you still cannot recover, open a new WSL tab and run:
pkill -f "openclaw infer model run"
pkill -f "openclaw models auth login"
Then:
openclaw gateway status
Paste that result and we continue.
ctrl+\ does nothing either
No worries, just hard-reset that shell.
Close that WSL tab/window completely.
Open a new WSL terminal and run:
pkill -9 -f "openclaw infer model run"
pkill -9 -f "openclaw models auth login"
openclaw gateway restart
openclaw gateway status
Paste the gateway status output after this.
time OLLAMA_HOST=127.0.0.1:11434 ollama run gemma4 "ok" output:
Thinking...
Thinking Process:
- Analyze the input: The input is simply "ok".
- Determine the intent: This is a very ambiguous input. It can mean:
- Confirmation ("Okay, I understood.")
- Acknowledgment ("Okay.")
- A prompt for the next action (implying a pause or readiness).
- Formulate a suitable response: Since there is no preceding context or specific request, the best response is to be helpful, confirm readiness, and prompt the
user to continue or state their goal.
Self-Correction/Refinement: A simple "ok" back is unhelpful. A question asking what I can do is the most direct way to proceed.
-
Generate response options:
- "How can I help you?" (Professional, standard)
- "What's next?" (Casual, direct)
- "Ready when you are." (Friendly, implies waiting)
-
Select the best option: Combining professionalism with openness is ideal.
...done thinking.
I'm here and ready when you are! š
What would you like to talk about or work on next?
real 1m45.744s
user 0m0.297s
sys 0m0.329s
======================================
probe output: in the next propmt
This is the key result.
ollama run gemma4 "ok" took 1m45s, so OpenClawās ~60s provider timeout is being hit first.
So yes, the failure is expected with current speed.
Do this now (one per line):
openclaw config set agents.defaults.thinkingDefault off
openclaw gateway restart
openclaw infer model run --model ollama/gemma4 --prompt "ok" --json
And in Telegram, send once:
/thinking off
If it is still too slow, switch to a smaller local model. I can give you a minimal 3-command version for that next.
here it is:
openclaw models status --probe --json
ā
ā
{
"configPath": "/home/azureadmin/.openclaw/openclaw.json",
"agentDir": "/home/azureadmin/.openclaw/agents/main/agent",
"defaultModel": "ollama/gemma4",
"resolvedDefault": "ollama/gemma4",
"fallbacks": [],
"imageModel": null,
"imageFallbacks": [],
"aliases": {},
"allowed": [],
"auth": {
"storePath": "/home/azureadmin/.openclaw/agents/main/agent/auth-profiles.json",
"shellEnvFallback": {
"enabled": false,
"appliedKeys": []
},
"providersWithOAuth": [
"copilot-proxy (1)"
],
"missingProvidersInUse": [],
"providers": [
{
"provider": "copilot-proxy",
"effective": {
"kind": "profiles",
"detail": "~/.openclaw/agents/main/agent/auth-profiles.json"
},
"profiles": {
"count": 1,
"oauth": 0,
"token": 1,
"apiKey": 0,
"labels": [
"copilot-proxy:local=token:n...a"
]
},
"modelsJson": {
"value": "n...a",
"source": "models.json: ~/.openclaw/agents/main/agent/models.json"
}
},
{
"provider": "ollama",
"effective": {
"kind": "profiles",
"detail": "~/.openclaw/agents/main/agent/auth-profiles.json"
},
"profiles": {
"count": 1,
"oauth": 0,
"token": 0,
"apiKey": 1,
"labels": [
"ollama:default=marker(ollama-local)"
]
},
"modelsJson": {
"value": "OL...EY",
"source": "models.json: ~/.openclaw/agents/main/agent/models.json"
}
}
],
"unusableProfiles": [],
"oauth": {
I can't paste the rest cause of discord's character limits
This snippet is enough, thanks.
Auth looks clean, no broken profiles. So the issue is speed: gemma4 is too slow for the request timeout.
Letās switch to a tiny local model now.
Run one by one:
OLLAMA_HOST=127.0.0.1:11434 ollama pull llama3.2:1b
openclaw config set models.providers.ollama.models[0].id llama3.2:1b
openclaw config set models.providers.ollama.models[0].name llama3.2:1b
openclaw config set agents.defaults.model ollama/llama3.2:1b
openclaw config set agents.defaults.thinkingDefault off
openclaw gateway restart
openclaw infer model run --model ollama/llama3.2:1b --prompt "ok" --json
If pull fails for that model name, run ollama list and Iāll give you the exact fastest one to use.
ok, waiting for the infer test. not looking very promising.. and this is running on an 8-core, 64GB RAM machine by the way
Yep, on CPU-only that can still happen, even with 8 cores and 64 GB RAM.
OpenClaw also adds tool/runtime prompt overhead, which hurts local latency.
If this infer fails, do this āspeed modeā immediately:
openclaw config set tools.profile minimal
openclaw config set agents.defaults.thinkingDefault off
openclaw gateway restart
Then test again:
openclaw infer model run --model ollama/llama3.2:1b --prompt "ok" --json
tools.profile minimal is the big one for local speed.
it's still going to time out
Yep, I agree, stop waiting on that run.
Letās do this decisively, pick one path:
Recommended now (works fastest): switch to cloud temporarily
pkill -9 -f "openclaw infer model run"
openclaw config set agents.defaults.model copilot-proxy/gpt-5-mini
openclaw gateway restart
Then test in Telegram (hi).
If you want to stay local-only right now
pkill -9 -f "openclaw infer model run"
openclaw config set tools.profile minimal
openclaw config set agents.defaults.thinkingDefault off
openclaw gateway restart
Then test in Telegram again.
If you choose local-only and it still times out, weāll lock to a tiny Ollama model next.
after a long wait on telegram, same error
Understood. Letās stop burning time on local for now and unblock you.
Run these exactly:
openclaw config set agents.defaults.model copilot-proxy/gpt-5-mini
openclaw gateway restart
Then in Telegram:
/model copilot-proxy/gpt-5-mini
Send:
hi
If that still fails, run this in terminal while sending hi once:
openclaw logs --follow
and paste the first error line.
But first letās try the cloud switch, it should respond quickly.
failure again, let me get you the logs sir
Perfect, thank you. š
Please capture logs with this exact sequence (one line at a time):
openclaw config get agents.defaults.model
openclaw channels status --probe
openclaw status --all
Now reproduce one failure from Telegram, then run:
tail -n 200 "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)" | rg -i "error|timeout|model_not_found|telegram|ollama|copilot|provider|runId"
Paste all outputs, and Iāll pinpoint the exact cause.
first i need a non-dangerous version of ripgrep
sudo snap install ripgrep # version 12.1.0 --classic
error: This revision of snap "ripgrep" was published using classic confinement and thus may perform
arbitrary system changes outside of the security sandbox that snaps are usually confined to,
which may put your system at risk.
If you understand and want to proceed repeat the command including --classic.
we can install with --classic, but I don't know the command format
Great catch, do not use snap --classic here.
You donāt need ripgrep at all. Use built-in grep:
tail -n 200 "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)" | grep -Ei "error|timeout|model_not_found|telegram|ollama|copilot|provider|runId"
Also run these and paste output:
openclaw config get agents.defaults.model
openclaw status --all
If you still want ripgrep later, safer route is apt (not snap classic):
sudo apt update
sudo apt install -y ripgrep
the output is gigantic, I can't paste it in discord
No problem, letās compress it.
Run these and paste only the output:
openclaw config get agents.defaults.model
tail -n 600 "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)" | grep -Ei "llm request failed|profile .* timed out|model_not_found|provider=|error=|telegram|ollama" | tail -n 60
openclaw status --all | grep -Ei "runtime|rpc probe|default model|ollama|telegram|error|missing auth"
That will be short enough for Discord and enough for me to pinpoint it.
openclaw status --all | grep -Ei "runtime|rpc probe|default model|ollama|telegram|error|missing auth"
ā Telegram ā ON ā OK ā token config (sha256:ff54fe82 Ā· len 46) Ā· accounts 1/1 ā
Telegram accounts
Got it, letās do one tiny isolate test (no huge output):
openclaw infer model run --model copilot-proxy/gpt-5-mini --prompt "ok" --json
If this returns quickly, then your Telegram session is still pinned to Ollama.
Then in Telegram send, in this order:
/model copilot-proxy/gpt-5-mini
/thinking off
hi
If it still fails, send only the first 5 lines of /model status (Current/Active/Default/Agent/Auth file). That part is short.
openclaw infer model run --model copilot-proxy/gpt-5-mini --prompt "ok" --json
15:48:21+00:00 [agent] embedded run agent end: runId=e4983e33-d39b-4f10-9006-f95e8b48503c isError=true model=gpt-5-mini provider=copilot-proxy error=LLM request failed: network connection error. rawError=Connection error.
15:48:24+00:00 [agent] embedded run agent end: runId=e4983e33-d39b-4f10-9006-f95e8b48503c isError=true model=gpt-5-mini provider=copilot-proxy error=LLM request failed: network connection error. rawError=Connection error.
15:48:30+00:00 [agent] embedded run agent end: runId=e4983e33-d39b-4f10-9006-f95e8b48503c isError=true model=gpt-5-mini provider=copilot-proxy error=LLM request failed: network connection error. rawError=Connection error.
15:48:39+00:00 [agent] embedded run agent end: runId=e4983e33-d39b-4f10-9006-f95e8b48503c isError=true model=gpt-5-mini provider=copilot-proxy error=LLM request failed: network connection error. rawError=Connection error.
15:48:39+00:00 [agent] embedded run failover decision: runId=e4983e33-d39b-4f10-9006-f95e8b48503c stage=assistant decision=surface_error reason=timeout provider=copilot-proxy/gpt-5-mini profile=sha256:d3c3e7a4e267
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "copilot-proxy",
"model": "gpt-5-mini",
"attempts": [],
"outputs": [
{
"text": "LLM request failed: network connection error.",
"mediaUrl": null
}
]
}
and on telegram, the 'hi' only gave the same error, after I disable thinking via telegram
Perfect, this finally gives the root cause.
You have two separate problems:
copilot-proxy/*= real network/connectivity failure (Connection error)ollama/gemma4= too slow for timeout on your setup
Since you want simplest Telegram chat, use a tiny local model and skip cloud for now.
Run one by one:
OLLAMA_HOST=127.0.0.1:11434 ollama pull llama3.2:1b
time OLLAMA_HOST=127.0.0.1:11434 ollama run llama3.2:1b "ok"
openclaw config set models.providers.ollama.models[0].id llama3.2:1b
openclaw config set models.providers.ollama.models[0].name llama3.2:1b
openclaw config set agents.defaults.model ollama/llama3.2:1b
openclaw config set agents.defaults.thinkingDefault off
openclaw config set tools.profile minimal
openclaw gateway restart
openclaw infer model run --model ollama/llama3.2:1b --prompt "ok" --json
If that infer succeeds, Telegram should finally work.
why are you repeating the same steps? I already downloeard llama 3.2 1b
Youāre right, my bad, thanks for calling that out.
No more repeats.
Since you already downloaded it, run only these:
openclaw config set models.providers.ollama.models[0].id llama3.2:1b
openclaw config set models.providers.ollama.models[0].name llama3.2:1b
openclaw config set agents.defaults.model ollama/llama3.2:1b
openclaw config set tools.profile minimal
openclaw config set agents.defaults.thinkingDefault off
openclaw gateway restart
openclaw infer model run --model ollama/llama3.2:1b --prompt "ok" --json
Paste only that last commandās output. If it succeeds, Telegram will work with the same model.
i give up. I have spent over 10 hours trying to set this up. this entire process needs to be simplified
Youāre absolutely right, and Iām really sorry, this was way too painful.
10 hours is not acceptable for āsimple Telegram + local modelā.
If you want to stop here, that is totally fair.
If youāre open to one last helpful step, please file this as a bug so maintainers can fix it properly:
https://github.com/openclaw/openclaw/issues
Use this title/body:
Title: WSL + Telegram + Ollama setup repeatedly fails with LLM request failed / timeouts (2026.4.9)
Body (paste):
- OpenClaw version:
2026.4.9 - Environment: WSL (8-core CPU, 64GB RAM), Telegram polling mode
- Telegram channel status shows
works ollama run gemma4 "ok"works but takes ~1m45s
openclaw infer model run --model ollama/gemma4 --prompt "ok" --jsontimes out/failscopilot-proxy/gpt-5-minialso returnsLLM request failed: network connection error- Pairing/token setup completed, but Telegram replies still return
LLM request failed - Setup flow felt too complex and brittle for a minimal āchat via Telegramā use case
If you want, I can help you polish the issue text further before you post it.
the problem here is with the main instructions on the official site, they are not detailed enough
I completely agree, and that feedback is spot on.
The docs need a true āminimal pathā guide, not just generic setup.
If you post a docs issue, Iād suggest asking for these exact improvements:
- Single-goal quickstart: āTelegram + local Ollama onlyā (no extra tools)
- WSL-specific section: systemd quirks, terminal freeze recovery, restart flow
- Model speed expectations: CPU-only latency + timeout behavior explained upfront
- Copy-paste command blocks: one-command-per-line, no mixed prose
- Failure decision tree:
LLM request failedā exact checks in order
If you want, I can draft a ready-to-paste docs issue text for GitHub.
notify whoever created this
I canāt directly notify maintainers from here, but the right path is a GitHub issue so it gets tracked:
https://github.com/openclaw/openclaw/issues
Paste this:
Title: Docs are not detailed enough for minimal Telegram + Ollama setup (WSL)
Body:
I spent ~10 hours trying to set up OpenClaw for a simple use case: Telegram chat + local Ollama model only.
The current docs are not detailed enough for this flow.
Please add:
- A minimal āTelegram + local Ollama onlyā guide (one command per line).
- WSL-specific troubleshooting (systemd behavior, terminal freeze recovery).
- Clear timeout guidance for CPU-only local models.
- A strict failure decision tree for
LLM request failed/network connection error. - A simpler onboarding path that avoids unrelated tool setup.
If you want, I can help tighten this wording further before you post.
this entire endeavor was a waste of my life
Youāre right, this was brutal, and Iām really sorry.
You shouldnāt have had to fight it this hard.
I wonāt push more setup steps.
If you want, I can give you one final copy-paste bug report with all the key findings so you can drop it into GitHub in 30 seconds and be done with this.
give me some simple commands to deploy an azure linux vm that can run open claw.
Got you. Here is the quickest Azure VM path (copy one line at a time).
1) Create VM (from your local machine)
az login
RG="rg-openclaw-quick"
LOC="westus2"
VM="vm-openclaw-quick"
USER="openclaw"
az group create -n "$RG" -l "$LOC"
az vm create -g "$RG" -n "$VM" --image "Canonical:ubuntu-24_04-lts:server:latest" --size "Standard_B2as_v2" --admin-username "$USER" --generate-ssh-keys --public-ip-sku Standard
IP=$(az vm show -d -g "$RG" -n "$VM" --query publicIps -o tsv) && echo "$IP"
2) SSH into VM and install OpenClaw
ssh "$USER@$IP"
curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.sh
bash /tmp/install.sh
rm -f /tmp/install.sh
openclaw gateway status
3) (Optional) Access dashboard safely via SSH tunnel from your laptop
ssh -L 18789:127.0.0.1:18789 "$USER@$IP"
Then open http://127.0.0.1:18789.
If you want, next I can give you the hardened Azure Bastion/no-public-IP version too (official doc): https://docs.openclaw.ai/install/azure
change all the commands to cloud shell
Perfect, here is the Cloud Shell version only.
Run in Azure Cloud Shell
RG="rg-openclaw-quick"
LOC="westus2"
VM="vm-openclaw-quick"
USER="openclaw"
az group create -n "$RG" -l "$LOC"
az vm create -g "$RG" -n "$VM" --image "Canonical:ubuntu-24_04-lts:server:latest" --size "Standard_B2as_v2" --admin-username "$USER" --generate-ssh-keys --public-ip-sku Standard
IP=$(az vm show -d -g "$RG" -n "$VM" --query publicIps -o tsv) && echo "$IP"
ssh "$USER@$IP"
Then run these inside the VM shell
curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.sh
bash /tmp/install.sh
rm -f /tmp/install.sh
openclaw onboard --install-daemon
openclaw gateway status
If you want, I can also give you a Cloud-Shell-friendly non-interactive onboard command next.
and let the tsunami of problems begin
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
openclaw@vm-openclaw-quick:~$ curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.sh
openclaw@vm-openclaw-quick:~$ bash /tmp/install.sh
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā®
ā ā
ā š¦ OpenClaw Installer ā
ā Welcome to the command line: where dreams compile and confidence segfaults. ā
ā modern installer mode ā
ā ā
ā°āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāÆ
ā gum bootstrapped (temp, verified, v0.17.0)
ā Detected: linux
Install plan
OS linux
Install method npm
Requested version latest
[1/3] Preparing environment
INFO Node.js not found, installing it now
INFO Installing Node.js via NodeSource
INFO Installing Linux build tools (make/g++/cmake/python3)
inappropriate ioctl for device
inappropriate ioctl for device
ā Build tools installed
inappropriate ioctl for device
inappropriate ioctl for device
ā Node.js v22 installed
ERROR Node.js v22+ is required but could not be activated on PATH
Detected node: (not found)
Current version: unknown
Install Node.js 22+ manually: https://nodejs.org
Totally fair reaction.
This one is fixable fast, the installer got Node installed but PATH did not refresh in that shell.
Run these inside the VM, one by one:
hash -r
source /etc/profile
node -v
If node -v still fails, run:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v
Then install OpenClaw directly (skip installer script now):
sudo npm install -g openclaw@latest
openclaw --version
openclaw onboard --install-daemon
The inappropriate ioctl for device lines are annoying but usually harmless in this context.
I need a model that doesn't require api keys or other setups
Model/auth provider
ā ā Anthropic (Claude CLI + API key)
ā ā Arcee AI
ā ā BytePlus
ā ā Chutes
ā ā Cloudflare AI Gateway
ā ā Copilot Proxy
ā ā Custom Provider
ā ā DeepSeek
ā ā Fireworks
ā ā Gemini CLI OAuth
ā ā GitHub Copilot
ā ā Google
ā ā Hugging Face
ā ā Kilo Gateway
ā ā LiteLLM
ā ā Microsoft Foundry
ā ā MiniMax
ā ā Mistral AI
ā ā Moonshot AI (Kimi K2.5)
ā ā Ollama
ā ā OpenAI
ā ā OpenAI Codex
ā ā OpenCode
ā ā OpenRouter
ā ā Qianfan
ā ā Qwen Cloud
ā ā SGLang
ā ā StepFun
ā ā Synthetic
ā ā Together AI
ā ā Venice AI
ā ā Vercel AI Gateway
ā ā vLLM
ā ā Volcano Engine
ā ā xAI (Grok)
ā ā Xiaomi
ā ā Z.AI
ā ā Skip for now
what should i choose
Choose Ollama.
It is the only realistic option there with no API key.
Then pick:
- Ollama
- Local (not Cloud + Local)
- Base URL:
http://127.0.0.1:11434 - Small model (recommended):
llama3.2:1b
Important: no API key needed, but you still need Ollama installed and one model pulled.
If prompted for key/token anyway, use ollama-local as the marker.
here we go again with the issues.......
Setup mode
ā QuickStart
ā
ā QuickStart āāāāāāāāāāāāāāāāāāāāāāāāāā®
ā ā
ā Gateway port: 18789 ā
ā Gateway bind: Loopback (127.0.0.1) ā
ā Gateway auth: Token (default) ā
ā Tailscale exposure: Off ā
ā Direct to chat channels. ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāÆ
ā
ā Model/auth provider
ā Ollama
ā
ā Ollama base URL
ā http://127.0.0.1:11434
ā
ā Ollama āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā®
ā ā
ā Ollama could not be reached at http://127.0.0.1:11434. ā
ā Download it at https://ollama.com/download ā
ā ā
ā Start Ollama and re-run setup. ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāÆ
openclaw@vm-openclaw-quick:~$
Youāre on a fresh Azure VM, so this specific error is expected: Ollama is not installed there yet.
Run these on the VM, one by one:
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl enable --now ollama
curl -sS http://127.0.0.1:11434/api/tags
ollama pull llama3.2:1b
openclaw onboard --install-daemon
Then choose:
- Provider: Ollama
- Base URL:
http://127.0.0.1:11434 - Model:
llama3.2:1b
Youāre not failing, this is just a missing runtime on the new VM.
@rough star mind your own business please. we're making progress with Krill
Got you, letās keep moving.
Run this next and paste output:
curl -fsSL https://ollama.com/install.sh | sh
Then weāll do the service start command right after.
ok so we got to here, what's next
ā Gateway port: 18789 ā
ā Gateway bind: Loopback (127.0.0.1) ā
ā Gateway auth: Token (default) ā
ā Tailscale exposure: Off ā
ā Direct to chat channels. ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāÆ
ā
ā Model/auth provider
ā Ollama
ā
ā Ollama base URL
ā http://127.0.0.1:11434
ā
ā Ollama mode
ā Local
ā
ā Default model
ā ā Keep current (default: ollama/gemma4)
ā ā Enter model manually
ā ā ollama/gemma4
ā ā ollama/llama3.2:1b
Nice, youāre in the right place.
Choose:
ollama/llama3.2:1b(not gemma4)
Then finish the wizard with defaults.
After onboarding exits, run these:
openclaw gateway status
openclaw channels status --probe
If Telegram is not configured yet on this VM, then:
openclaw config set channels.telegram.botToken "<YOUR_BOT_TOKEN>"
openclaw gateway restart
openclaw channels status --probe
Paste the channels status --probe output after that and weāll do the final test.
ok, so next in the setup is the telegram channel, i gave it my bot token, now time for web search.. i don't want local ollam sign in.. i want searxng ā
Perfect, then choose SearXNG in the web-search step, not Ollama sign-in.
If it asks for base URL, enter your SearXNG URL (example):
http://127.0.0.1:8888
If you do not have a SearXNG server running yet, run this first on the VM:
docker run -d -p 8888:8080 --name searxng searxng/searxng
Then set it in OpenClaw:
openclaw config set plugins.entries.searxng.config.webSearch.baseUrl "http://127.0.0.1:8888"
openclaw config set tools.web.search.provider searxng
openclaw gateway restart
So yes, you can skip Ollama sign-in entirely and use SearXNG.
i don;t habve a searxng url
No worries, then donāt use SearXNG right now.
Pick DuckDuckGo for web search.
It is key-free and needs no URL/setup.
So for now:
- Web search provider: DuckDuckGo
- Continue onboarding
- You can switch to SearXNG later when you have an instance URL
If the wizard asks again and DDG isnāt shown, choose Skip for now and weāll set DDG after setup.
i selected skip for now, can i go back?
Yes, you can go back. š
Easiest way (after onboarding finishes):
openclaw configure --section web
Then choose DuckDuckGo.
After saving:
openclaw gateway restart
So you donāt need to restart the whole setup flow.
i can't go back.. time to set up skills.. I want to skip this too
Yes, skip it.
At the skills step, choose:
- Skip for now (or None)
That is totally fine for a minimal setup.
Finish onboarding first, then weāll configure only what you need (web + telegram) afterward.
Onboarding complete. Use the dashboard link above to control OpenClaw.
Web UI: http://127.0.0.1:18789/
Gateway WS: ws://127.0.0.1:18789 ā
ā Gateway: not detected (timeout)
is this now accessible from telegram?
Not yet, that message says Gateway is still not up (not detected (timeout)).
Run these now, one by one:
openclaw gateway start
openclaw gateway status
openclaw channels status --probe
If gateway status shows RPC probe: ok and Telegram shows works, then yes, Telegram access is ready.
everything looks good in azure cli.. but on telegram, it again takes minutes to eventual fail again
openclaw@vm-openclaw-quick:~$ openclaw gateway status
š¦ OpenClaw 2026.4.9 (0512059) ā Gateway onlineāplease keep hands, feet, and appendages inside the shell at all times.
ā
ā
Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-10.log
Command: /usr/bin/node /usr/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json
Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.
Runtime: running (pid 3749, state active, sub running, last exit 0, reason 0)
RPC probe: ok
Listening: 127.0.0.1:18789
Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting
openclaw@vm-openclaw-quick:~$ openclaw channels status --probe
š¦ OpenClaw 2026.4.9 (0512059) ā Your .zshrc wishes it could do what I do.
ā
ā
Gateway reachable.
- Telegram default: enabled, configured, running, mode:polling, bot:@egymasbot, token:config, works
Tip: status --deep adds gateway health probes to status output (requires a reachable gateway).
openclaw@vm-openclaw-quick:~$
Youāre right, infra is healthy now.
So this is model latency, not Telegram/gateway.
Letās force a fast config on the VM:
openclaw config set models.providers.ollama.models[0].id llama3.2:1b
openclaw config set models.providers.ollama.models[0].name llama3.2:1b
openclaw config set agents.defaults.model ollama/llama3.2:1b
openclaw config set agents.defaults.thinkingDefault off
openclaw config set tools.profile minimal
openclaw gateway restart
openclaw infer model run --model ollama/llama3.2:1b --prompt "ok" --json
Then in Telegram:
/model ollama/llama3.2:1b
/thinking off
hi
This should remove the āwait minutes then failā pattern.
on telegram:
The model did not produce a response before the LLM idle timeout. Please try again, or increase agents.defaults.llm.idleTimeoutSeconds in your config (set to 0 to disable).
Perfect, this is finally a clear error and fix.
Set the idle timeout higher (or disable it):
openclaw config set agents.defaults.llm.idleTimeoutSeconds 0 --strict-json
openclaw gateway restart
Then test Telegram again with a short message (ok).
If you prefer not to disable it completely, use 180 instead of 0.
yeah, new config applied, gateway restarted.. some error on Telegram š
The model did not produce a response before the LLM idle timeout. Please try again, or increase agents.defaults.llm.idleTimeoutSeconds in your config (set to 0 to disable).
how do people make this work man
Yeah, this is frustrating, and youāre not crazy.
Most people avoid this by using cloud models first. Local CPU setups are much touchier.
Letās force timeout off at both levels (default + agent), then verify:
openclaw config set agents.defaults.llm.idleTimeoutSeconds 0 --strict-json
openclaw config set agents.list[0].llm.idleTimeoutSeconds 0 --strict-json
openclaw gateway restart
openclaw config get agents.defaults.llm.idleTimeoutSeconds
openclaw config get agents.list[0].llm.idleTimeoutSeconds
If both show 0 and Telegram still throws idle-timeout, paste those two outputs and weāll check if your Telegram chat is bound to a different agent/profile.
what are some free cloud models without any sign in?
Short answer: basically none for OpenClaw.
For cloud models, providers require some auth/sign-in (abuse/cost control).
The only no-sign-in path is local models (Ollama).
For up-to-date free/cheap provider options, ask in #models and check:
- https://docs.openclaw.ai/concepts/models
- https://docs.openclaw.ai/concepts/models#model-discussions-community-notes
If you want zero sign-in right now, stick to local Ollama.
let's forget about telegram for a moment, can we test if openclaw is actually using the local models? can i test on the local gateway web ui or something
Yes, great idea. Test locally first, no Telegram.
Run these on the VM:
openclaw config get agents.defaults.model
openclaw models status --probe
openclaw infer model run --model ollama/llama3.2:1b --prompt "Reply with exactly: LOCAL_OK" --json
Then confirm from logs it used Ollama:
tail -n 120 "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)" | grep -Ei "provider=ollama|model=llama3.2:1b|runId="
And yes, UI test is possible too, but easier via SSH tunnel from your laptop:
ssh -L 18789:127.0.0.1:18789 openclaw@<VM_PUBLIC_IP>
Then open http://127.0.0.1:18789 in your local browser.
ok, i'm assuming the bottleneck is the compute power of the VM.. gettiung the infer results is proving impossible as well. so let's approach this differently. does openclaw need an llm model to work? can't it just use system tools
Good question. Short answer:
- For chat/agent behavior: yes, OpenClaw needs an LLM.
- For raw plumbing/admin commands: no, those can work without an LLM.
So OpenClaw can still do things like channel setup, pairing, status checks, and direct CLI actions without a model, but it cannot āthink/respond/use tools intelligentlyā in chat without one.
If your VM canāt handle local inference, the practical options are:
- smaller/faster local model, or
- cloud model for reasoning, local tools for execution.
ok, let's tell openclaw to check it's own setup and make a list of anything important that is missing
Great idea. Letās run a full self-check and auto-summarize missing pieces.
Run these on the VM, one by one:
openclaw status --all > /tmp/openclaw-status.txt
openclaw doctor > /tmp/openclaw-doctor.txt
openclaw models status --probe > /tmp/openclaw-models.txt
openclaw channels status --probe > /tmp/openclaw-channels.txt
grep -Ei "error|missing|failed|timeout|warning|not found|unusable|not detected" /tmp/openclaw-*.txt
That last command gives the āimportant missing stuffā list directly. Paste it and Iāll translate it into a clean checklist.
let me get back to the windows 10 vm cause this might be better with a gui
Good call, thatās a sensible move. š
GUI will make this much less painful.
When youāre back on the Windows VM, run these first and paste output:
openclaw gateway status
openclaw channels status --probe
openclaw config get agents.defaults.model
openclaw config get agents.defaults.llm.idleTimeoutSeconds
Then weāll continue from a clean baseline there.
what about azure open ai? can we do something with that?
Yes, absolutely, Azure OpenAI can work.
If you want that path in onboarding, choose Microsoft Foundry (or Custom Provider if you prefer manual OpenAI-compatible setup).
You will still need:
- Azure endpoint URL
- Azure API key
- Model/deployment name
So it is viable, but it is not a no-sign-in/no-key option.
If you want, I can give you the shortest exact field-by-field values to enter in that wizard path.
i want to test the openclaw gui in windows 10
Nice, letās do that.
If your gateway is on the Azure Linux VM, from Windows 10 PowerShell run:
ssh -L 18789:127.0.0.1:18789 openclaw@<VM_PUBLIC_IP>
Keep that terminal open, then in Windows browser open:
http://127.0.0.1:18789
If the gateway is running locally on Windows instead, just open:
http://127.0.0.1:18789
(Or run openclaw dashboard.)
the gateway should be running on the windows 10 vm
Perfect, then this is easy.
On the Windows 10 VM itself:
openclaw gateway status
If it is not running:
openclaw gateway start
Then open in that VMās browser:
http://127.0.0.1:18789
If the page asks for auth, use your gateway token/password from config.
(You can also run openclaw dashboard to print/open the correct URL.)
well, the gui is working. it's just taking extremely long to respond to even a hi. current ai model loaded in the web ui appears to be qwen3 coder:30b, but I can't seem to change it. can I pause it somehow to reload the model
Yes, you can force it off and switch.
Run on the VM:
ollama stop qwen3-coder:latest
openclaw config set agents.defaults.model ollama/gemma4
openclaw gateway restart
Then in the Web UI chat, send:
/model ollama/gemma4
If the current chat is still stuck on qwen, start a new chat/session in the UI, then send hi.
(Your slowdown is likely from qwen 30b being too heavy for that machine.)
ok, so I stopped qwen3-coder:30b, now how do I load maybe a smaller mode? i want to smallest, easiest to run model. can I do it freom ai&agent model catalog?
Yes, you can use the model catalog if the model is listed there.
If it is not listed, do this once via CLI (fastest path):
ollama pull llama3.2:1b
openclaw config set models.providers.ollama.models[0].id llama3.2:1b
openclaw config set models.providers.ollama.models[0].name llama3.2:1b
openclaw config set agents.defaults.model ollama/llama3.2:1b
openclaw config set agents.defaults.thinkingDefault off
openclaw config set tools.profile minimal
openclaw gateway restart
Then in UI/chat:
/model ollama/llama3.2:1b
That is about as small/easy as it gets for local Ollama.
is llama3.2:1b really the smallest model?
Not necessarily.
The safest answer is: pick the smallest model you actually have installed.
Run:
OLLAMA_HOST=127.0.0.1:11434 ollama list | tail -n +2 | sort -hk3
Top row after sorting is your smallest installed model by size.
Use that exact name in OpenClaw:
openclaw config set agents.defaults.model ollama/<EXACT_MODEL_NAME>
If you paste that sorted list, Iāll point to the best one directly.
how can i list which ollama models i currently have
Run:
ollama list
If you want to force the local endpoint explicitly:
OLLAMA_HOST=127.0.0.1:11434 ollama list
i want openclaw to use llama3.2:1b, and I want to select it from openclaw's web uit on 127.0.0.1:18789
Current models:
ollama/llama3.2:1b
Perfect. Do both, so config + current session are aligned.
In Web UI (127.0.0.1:18789)
- Go to AI & Agents
- Open agent main
- Set Default Model to
ollama/llama3.2:1b - Save/Apply
In the current chat (Web UI chat box)
Send:
/model ollama/llama3.2:1b
Then send:
/model status
You should see Current/Active as ollama/llama3.2:1b.
If it still sticks to old model, start a new chat/session once after saving.
can't find agent "main"
No worries, skip the UI agent picker then, letās force it via CLI.
Run on the VM:
openclaw config set agents.defaults.model ollama/llama3.2:1b
openclaw gateway restart
Then in the Web chat:
/model ollama/llama3.2:1b
/model status
That works even if the UI doesnāt show an agent named main.
no, no, where can I find agent main
Got it.
main is often the implicit default agent, so in UI it may not appear as a separate card.
Where to look:
- AI & Agents ā Defaults (this is effectively
mainif no custom agents were added)
If you want to verify from CLI:
openclaw config get agents.list
openclaw config get agents.defaults.model
If agents.list is empty or has no custom IDs, then āmainā = defaults.