9. Diagnostics & Privacy

Diagnostics log

Rayu records runtime bugs, issues, and vulnerabilities to a structured, append-only log so problems can be reviewed and fixed later:

<config-home>/diagnostics.jsonl      # e.g. ~/.rayu/diagnostics.jsonl

Each line is a JSON record:

{"ts":"2026-06-01T00:12:13.711Z","kind":"bug","severity":"medium",
 "code":"rayu_config.parse_failed","message":"providers.json could not be parsed; starting from empty config",
 "context":{"error":"Expected property name..."}}
FieldMeaning
kindbug, issue, or vulnerability
severitylow, medium, high, critical
codestable identifier, e.g. openai_adapter.request_failed
messagehuman-readable description
contextstructured, non-secret details

Examples of what's captured

CodeKindWhen
rayu_config.parse_failedbugproviders.json is corrupt (recovers to empty)
rayu_config.insecure_permissionsvulnerabilityprovider file is group/world-readable
openai_adapter.request_failedissuea provider request failed
openai_adapter.tool_args_parse_failedbuga provider returned unparsable tool-call args
rayu_models.fetch_failed / fetch_errorissueGET /models failed
rayu_context.unknown_modelissueno context window known for a model (defaulted)

Controls

VariableEffect
RAYU_DIAGNOSTICS=1Also echo each diagnostic to stderr (handy during debugging/tests)
RAYU_DIAGNOSTICS_NO_FILE=1Don't write the JSONL file

Secrets (API keys, tokens) are never written to diagnostics — providers are referenced by id, not key value.

Reviewing the log

cat ~/.rayu/diagnostics.jsonl | jq .          # all records
jq 'select(.kind=="vulnerability")' ~/.rayu/diagnostics.jsonl   # just vulnerabilities

Privacy & network posture

Rayu is telemetry-off by default. Privacy levels:

  • no-telemetry (default) — analytics/telemetry disabled.
  • essential-trafficall nonessential network traffic disabled (telemetry + auto-update, release notes, model-capability fetches, feature flags). Automatically applied when an OpenAI-compatible provider is active, so Rayu makes no calls to Anthropic when you're using NVIDIA/DeepSeek/etc.
VariableEffect
RAYU_TELEMETRY=1Opt back in to default telemetry behavior
DISABLE_TELEMETRYForce no-telemetry

The only outbound calls during normal use go to the provider endpoint you configured (and any MCP servers you add). Project code/secrets are not sent anywhere else.

Next: Troubleshooting →