10. Troubleshooting

First stop for any runtime problem: check the diagnostics log.

cat ~/.rayu/diagnostics.jsonl | jq .
RAYU_DIAGNOSTICS=1 rayu --print "hi"     # echo diagnostics to stderr

API Error: 404

Cause: the selected model isn't a chat model on that endpoint, or the model id is wrong. Base/code/embedding/OCR models (codegemma, *-embedding, *-ocr, starcoder, deplot) return 404 on /v1/chat/completions.

Fix: switch to an instruction/chat model with /model (e.g. meta/llama-3.3-70b-instruct, deepseek-chat). You can also clear a bad saved choice:

# edit ~/.rayu/settings.json and set "model" to a chat model, or:
rayu --model meta/llama-3.3-70b-instruct

API Error: 401 / 403

Cause: missing/invalid API key for the active provider.

Fix: re-enter the key with /connect, or set the right env var (RAYU_OPENAI_API_KEY / ANTHROPIC_API_KEY / NVIDIA_API_KEY …). Confirm the active provider in ~/.rayu/providers.json (activeProvider).

API Error: 429

Cause: provider rate limit / quota. Not a Rayu bug — the request reached the provider.

Fix: wait and retry, slow down requests, or switch provider/model.

"API Error: Connection error."

Cause: the base URL is unreachable (wrong URL, offline, DNS failure, or a local server isn't running).

Fix: verify the provider's baseURL in providers.json; for local, confirm the server is up and the URL ends with the right path (usually /v1).

"Not logged in · Please run /login"

Cause: no provider/key is configured for the active path.

Fix: run /connect and enter a key, or set the RAYU_OPENAI_* / ANTHROPIC_API_KEY env vars. (Rayu is bring-your-own-key; the Anthropic OAuth login flow is inert in this fork.)

Wrong context window (e.g. shows 200k for a 1M model)

Cause: the model's context isn't in the known table and isn't configured.

Fix: set it — see Models › Context windows:

RAYU_CONTEXT_TOKENS=1000000 rayu

or add modelContextWindows to the provider in providers.json. A rayu_context.unknown_model diagnostic is logged for unknown models.

/model or /connect doesn't open

Cause: when typing a slash command, sending the whole string at once can be treated as pasted text.

Fix: type the command normally (key by key) and press Enter. Ensure you're at the prompt (past the trust dialog) first.

The model over-calls tools / loops on simple prompts

Cause: weaker non-Claude models receive the full tool suite + system prompt and may call tools eagerly. In non-interactive --print mode without --permission-mode bypassPermissions, denied tools can cause retries.

Fix: for --print tool use, add --permission-mode bypassPermissions (sandbox only). Interactively, you'll get permission prompts you can decline. Prefer stronger instruct models for agentic tasks.

A reasoning model replies with empty/blank output

Cause: reasoning models (deepseek-reasoner, Qwen/gpt-oss, o-series) spend output tokens on hidden reasoning first. With a small max_tokens they can hit the limit before producing the visible answer (finish_reason: length).

Fix: allow more output budget (the on-screen thinking confirms it's working). OpenAI o1/o3/o4/gpt-5 token/temperature params are handled automatically.

Images aren't recognized

Cause: the selected model isn't a vision model — only vision models can read images (pasted or returned by tools).

Fix: switch to a vision model with /model, e.g. meta/llama-3.2-11b-vision-instruct (NVIDIA) or Qwen/Qwen3-VL-30B-A3B-Instruct-FP8 (Doubleword).

Build fails: "Could not resolve '@anthropic-ai/sdk'" (or similar)

Cause: incomplete/partial dependency install.

Fix:

rm -rf node_modules && bun install && bun run build

tsc reports many errors but the build/run works

Expected. The forked source has many pre-existing type errors (implicit-any, missing .d.ts for externalized optional deps). The source of truth is bun run build + bun test, which are green; the Rayu-authored modules are type-clean.

Inert features

These are present but non-functional in this fork (they won't crash the CLI): Computer Use, Claude-in-Chrome, OAuth login, bridge / remote-control / teleport, remote managed settings, auto-update, analytics/telemetry. Use API keys (/connect) instead of login.


Still stuck? Capture the diagnostics entry and the on-screen error:

RAYU_DIAGNOSTICS=1 rayu --print --model <your-model> "hi" 2>&1 | tail -40
tail -5 ~/.rayu/diagnostics.jsonl