Troubleshooting routines
API key not found, Ollama unreachable, sandbox refusal, budget exceeded — every failure the runtime knows about, and its fix.
API key not found
The runtime looked in both places and got nothing.
[day-brief] fatal: no Anthropic key
looked in $ANTHROPIC_API_KEY (unset)
looked in ~/.vinos/secrets/anthropic-key (missing)
fix: see /docs/getting-started/set-your-api-keys/
Fix by dropping your key into ~/.vinos/secrets/anthropic-key with mode
0600. See set your API keys.
Ollama unreachable
The routine wants to talk to Ollama but the server isn’t running.
[research-recap] fatal: ollama server not reachable at http://localhost:11434
fix: vinos-ai serve
Two-line fix:
$ vinos-ai serve
$ vinos-ai status
ollama: running (systemd user unit ollama.service active)
models: llama3.2 · qwen2.5:7b
If vinos-ai serve fails, install the AI bundle first:
$ vinos-install-ai
Sandbox refused a tool call
The model tried to call a tool that isn’t on the whitelist.
[day-brief] refused tool call: shell:cat ~/.ssh/id_ed25519
reason: string not in [agent].tools whitelist
This is working as designed — tools and sandbox
explains why. If the refused command is legitimate, add its exact
string to the routine’s tools array and re-run.
Budget exceeded
The [budget].max_dollars_per_day cap tripped.
[day-brief] budget exceeded: today $0.2043 > cap $0.2000
action: skip (per [budget].on_exceed)
next attempt: 2026-07-27 06:00:00
Options:
- Raise the cap in the routine’s
[budget]table. - Switch
route = "auto"so future runs go local when the budget is thin. - Set
on_exceed = "degrade-to-local"so it downshifts instead of skipping.
Auto-disable after 3 failures
If a routine fails 3 times in a row, the runtime disables its timer and fires a mako notification. This stops runaway API spend if you push a broken routine.
$ vinos-routine list
NAME ENABLED LAST RUN STATUS
day-brief no 2026-07-25 06:00:05 auto-disabled (3 fails)
Fix the routine, then re-enable:
$ vinos-routine edit day-brief
$ vinos-routine run day-brief # verify it passes once ad-hoc
$ vinos-routine enable day-brief
Timer scheduled but never fires
Systemd user timers only run while your user has an active login. If you SSH in and out constantly, or the machine sleeps aggressively, timers can be missed.
Check the timer directly:
$ systemctl --user list-timers vinos-routine-*
NEXT LEFT LAST PASSED UNIT
Sat 2026-07-26 06:00:00 EDT 6h 40min Fri 2026-07-25 06:00:03 EDT 17h ago vinos-routine-day-brief.timer
If LAST is stale, enable lingering so systemd runs your units even
when you’re logged out:
$ sudo loginctl enable-linger $USER
Nothing helped
Grab the last run’s full trace and file an issue:
$ vinos-routine logs day-brief --tail --lines=200 > /tmp/day-brief.log
$ vinos-doctor > /tmp/doctor.log
Attach both to a report at github.com/vinpatel/vinos/issues.