The config template never set intent_judge_model, so it fell back to the code default gemma4:e2b. That model is not pulled by this stack (Ollama only has qwen2.5:3b, qwen3:8b, nomic-embed-text), so every auxiliary small-model call — intent judge, tool router, weather place extraction, query decomposition — targeted a non-existent model, silently failed, and fell open. This crippled tool routing and argument extraction on the 3B brain. Render intent_judge_model from a new OLLAMA_INTENT_MODEL env var that defaults to OLLAMA_CHAT_MODEL, so the auxiliary calls reuse the already-warm chat model (one resident model, no extra load). tool_router_model="" then resolves through the chain to the same model. Verified: rendered jarvis.json now has intent_judge_model=qwen2.5:3b, and the weather place extractor returns "서울" / "Tokyo" (it returned None for everything while pointed at the missing gemma4:e2b).
636 B
636 B