Symptom. take_photo captures fine (3040 bytes) but the VLM explain call to
OpenRouter 404s, so Dotty can't describe what they see.
Expected. VLM returns a scene description.
Actual / log excerpt (dotty-behaviour).
20:01:31 [dispatch.vlm] ERROR VLM call failed (url=https://openrouter.ai/api/v1/chat/completions)
requests.exceptions.HTTPError: 404 Client Error: Not Found
20:01:31 vision result desc=ERROR: the vision service didn't respond...
Root cause (CONFIRMED 2026-07-11). The container has no VISION_MODEL/VLM_MODEL env
override, so the code default applies — dotty-behaviour/config.py:171:
VISION_MODEL = os.environ.get("VISION_MODEL", "google/gemini-2.0-flash-001").
google/gemini-2.0-flash-001 is no longer in OpenRouter's /api/v1/models list
(checked 2026-07-11) → 404. Current vision-capable Gemini IDs on OpenRouter include
google/gemini-3.5-flash and google/gemini-3.1-flash-lite.
Fix. Set VLM_MODEL/VISION_MODEL env (or bump the code default) to a live vision
model and redeploy dotty-behaviour. Low-effort config fix — and consider updating the
default in config.py so a fresh deploy doesn't regress.
From the filmed UAT session 2026-07-11 (uat-sessions/2026-07-11/: results.csv, container logs, two video recordings). Investigated and drafted with AI assistance (Claude Fable 5 via Claude Code); human-reviewed before filing.
Symptom.
take_photocaptures fine (3040 bytes) but the VLM explain call toOpenRouter 404s, so Dotty can't describe what they see.
Expected. VLM returns a scene description.
Actual / log excerpt (dotty-behaviour).
Root cause (CONFIRMED 2026-07-11). The container has no
VISION_MODEL/VLM_MODELenvoverride, so the code default applies —
dotty-behaviour/config.py:171:VISION_MODEL = os.environ.get("VISION_MODEL", "google/gemini-2.0-flash-001").google/gemini-2.0-flash-001is no longer in OpenRouter's/api/v1/modelslist(checked 2026-07-11) → 404. Current vision-capable Gemini IDs on OpenRouter include
google/gemini-3.5-flashandgoogle/gemini-3.1-flash-lite.Fix. Set
VLM_MODEL/VISION_MODELenv (or bump the code default) to a live visionmodel and redeploy dotty-behaviour. Low-effort config fix — and consider updating the
default in
config.pyso a fresh deploy doesn't regress.From the filmed UAT session 2026-07-11 (
uat-sessions/2026-07-11/: results.csv, container logs, two video recordings). Investigated and drafted with AI assistance (Claude Fable 5 via Claude Code); human-reviewed before filing.