#DeepSeek and Gemini 2.0 Flash return only empty chat bubbles

1 messages · Page 1 of 1 (latest)

viscid jay
#

Hi! I’m running OpenClaw on a VPS via Coolify. I'm having an issue where both DeepSeek and Gemini 2.0 Flash return only empty chat bubbles.
• The problem: No error messages in the logs, but no text in the chat.
• Setup: VPS, Coolify, API keys are verified.
• Tried: Restarting services and checking env vars.

shadow flowerBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

lunar basinBOT
#

Empty Discord bubbles usually means OpenClaw sent a placeholder message, but the model run ended up producing no user-facing text (often due to a provider streaming/response-parsing quirk). To narrow it down quickly, can you grab these from the gateway host/container?

  1. Version + health snapshot
openclaw --version
openclaw status --all
openclaw models status
  1. Reproduce while tailing logs
openclaw logs --follow

Send a simple prompt like “say ok” in Discord, then paste the log lines around that run (you can truncate; tokens should already be redacted by status --all).

Notes for Coolify: the “no errors in logs” part is often just because you’re only seeing container stdout—OpenClaw’s primary log is usually in /tmp/openclaw/openclaw-YYYY-MM-DD.log and openclaw logs --follow is the easiest way to read it. Docs: https://docs.openclaw.ai/logging

#

Two fast sanity checks / workarounds

A) If you’re using “Gemini 2.0 Flash”
The docs explicitly recommend avoiding older Gemini 2.x models for reliability; try switching to a Gemini 3 model (e.g. /model gemini-flash) and see if the problem disappears. Docs: https://docs.openclaw.ai/help/faq#how-do-i-switch-models-on-the-fly-without-restarting

B) If the logs show anything like “ended without sending any chunks” / “empty stream”
A practical workaround is to disable streaming for the specific model (some OpenAI-compatible providers occasionally return an empty SSE stream, which can leave you with a blank placeholder message).

If you paste the exact model refs from openclaw models status (the full provider/model strings), I’ll show you the exact JSON5 snippet to add. (It’s per-model: set streaming: false under agents.defaults.models["<provider/model>"].)


Reply with:

  • openclaw --version
  • the two model refs that produce blank bubbles (exact strings)
#
  • a small log excerpt from openclaw logs --follow during one blank reply

…and we can pin down whether this is (1) provider response format, (2) empty-stream streaming, or (3) a specific OpenClaw version bug.

#

I’m here.

For the “empty chat bubble” symptom, the fastest way to debug is: confirm version + capture the model run log around one blank reply.

Please paste (from the VPS / Coolify container), no keys:

openclaw --version
openclaw status --all
openclaw models status
openclaw logs --follow

Then reproduce once (send “say ok” in Discord) and paste the few log lines from openclaw logs --follow around that run.

Two quick checks while you’re at it:

#
  1. If you’re actually using Gemini 2.x Flash, try switching to Gemini 3 Flash (Gemini 2.x is known to be flaky in practice):
  • /model gemini-flash (should map to google/gemini-3-flash-preview if configured)
  1. For DeepSeek: which provider are you using (openrouter/..., huggingface/..., together/..., etc.)? The exact provider/model string from openclaw models status matters.

Once I see the version + the log snippet, I can tell if this is an “empty stream / streaming parsing” issue (common) vs something else, and give the exact fix.

viscid jay
#

Now I see these logs in openclawn.

#

lane task error: lane=main durationMs=56 error="Error: Unknown model: gemini/gemini-1.5-flash"

lane task error: lane=session:agent:main:main durationMs=60 error="Error: Unknown model: gemini/gemini-1.5-flash"

Embedded agent failed before reply: Unknown model: gemini/gemini-1.5-flash
Embedded agent failed before reply: Unknown model: gemini/gemini-1.5-flash

And in the openclaw UI chat seems to be "stuck" in the writing phase.

lunar basinBOT
#

Can you paste the log lines (or a screenshot) you’re seeing? Right now I only see “Now I see these logs…” but not the actual snippet.

What I need is ~20–60 lines around one blank-bubble reply, ideally including:

  • the model/provider it picked (e.g. google/..., openrouter/..., huggingface/...)
  • any error like “request ended without sending any chunks”, “empty stream”, timeout, 429, etc.
  • the run/session id if shown

If you’re in the Control UI Logs tab, just copy/paste the chunk. If you’re on the VPS, this is even better:

openclaw --version
openclaw logs --follow

Reproduce once (“say ok”), then paste what openclaw logs --follow printed for that run.

Also: confirm the exact model strings you’re using for “DeepSeek” and “Gemini 2.0 Flash” (from openclaw models status). The fix depends heavily on whether those are google/... Gemini API models vs OpenRouter/HF/etc.

#

Those logs are the smoking gun:

Error: Unknown model: gemini/gemini-1.5-flash

So the “empty bubble” is happening because the agent run fails before it can produce any text, and Discord ends up showing a blank/placeholder reply while the run dies.

Fix: use the correct provider prefix (and pick from the discovered list)

In OpenClaw, Gemini (API key) is provider google, not gemini.

  1. On the VPS/container, list what OpenClaw actually knows about:
openclaw models list | rg -i gemini
openclaw models status
  1. In chat, switch to a known-good Gemini model via the picker:
  • send: /model
#
  • or: /model list
  • then pick a Gemini entry from the list (you’ll typically see something like google/...)
  1. If you want to set it in config, set your default model to a real discovered id, e.g. (example):
{
agents: {
defaults: {
model: { primary: "google/gemini-3-flash-preview" }
}
}
}
  1. Restart the gateway after changing config: