Collecting Diagnostics
When the diagnostic matrix does not resolve it, collect a bundle before you escalate. A bundle turns a multi-day back-and-forth into a single exchange.
Generate a bundle
Section titled “Generate a bundle”oculis support bundle --output oculis-bundle-$(date +%Y%m%d-%H%M).tar.gzCollecting diagnostics… ✓ agent version and build metadata ✓ resolved configuration (secrets redacted) ✓ upstream health and circuit breaker state ✓ queue depth and KV cache utilization ✓ last 10,000 log lines (redacted) ✓ metrics snapshot ✓ GPU inventory and Xid history ✓ 20 slowest and 20 most recent failed traces ✗ vector store stats (skipped: --include-vector not set)
Wrote oculis-bundle-20260807-0921.tar.gz (4.2 MB)Redacted 14 secrets, 3 API keys, 1,204 prompt bodies.Scope it to a specific incident when you can:
oculis support bundle \ --since 2h \ --request-id req_01HQ8Z3K4M5N6P7Q8R9S \ --include-vector \ --include-gpu-dump \ --output incident-4471.tar.gzWhat is in it
Section titled “What is in it”Directoryoculis-bundle-20260807-0921/
- manifest.json bundle version, redaction summary, collection time
Directoryagent/
- version.txt
- config-resolved.yaml secrets redacted
- config-generation-history.json
Directoryruntime/
- upstream-health.json
- breaker-state.json
- queue-depth.json
- kv-cache.json
Directorygpu/
- nvidia-smi.txt
- xid-history.txt
- topology.txt
Directorylogs/
- agent.log last 10,000 lines, redacted
Directorymetrics/
- snapshot.prom
Directorytraces/
- slowest-20.json
- failed-20.json
What is redacted
Section titled “What is redacted”Redaction is on by default and cannot be silently disabled.
| Redacted | Retained |
|---|---|
| API keys, tokens, passwords | Key IDs and tenant names |
Authorization headers |
Request IDs and trace IDs |
| Prompt and completion bodies | Token counts, model names, timings |
| Retrieved document content | Chunk IDs, scores, collection names |
| Connection strings and DSNs | Hostnames and ports |
| Detected PII matches | Detector name and offset |
Verify before sending:
oculis support verify --file oculis-bundle-20260807-0921.tar.gz bundle version 1 redaction ENABLED secrets found 0 prompt bodies 0 high-entropy strings 0[PASS] Bundle is safe to share.Gather the context the bundle cannot
Section titled “Gather the context the bundle cannot”The bundle captures machine state. These four questions capture what a human knows, and they are what actually speeds up diagnosis:
-
What changed? A deploy, a config change, a traffic shift, a provider incident, a driver update. “Nothing changed” is almost never true — check the config generation history in the bundle.
Terminal window oculis config history --limit 10 -
When did it start, precisely? A timestamp lets everyone align logs, metrics, and traces. “Since yesterday” does not.
-
What is the blast radius? One tenant, one route, one replica, one GPU node — or everything? Narrow scope points directly at the cause.
Terminal window oculis status --by-replica -
One failing request ID. A single concrete example beats any aggregate description.
Terminal window oculis trace get req_01HQ8Z3K4M5N6P7Q8R9S --format tree
Live diagnostics
Section titled “Live diagnostics”For a problem happening right now, these are safe to run against production:
# Watch queue depth and breaker state, refreshed every secondoculis status --watch --interval 1s
# Tail logs for one route only, without raising the global log leveloculis logs tail --route default --level debug
# Sample in-flight requestsoculis requests list --state in_flight --limit 20Scope a debug log level to one route rather than globally, and remove it afterwards:
oculis config set observability.log_overrides.route:default=debug --reload# …reproduce…oculis config unset observability.log_overrides.route:default --reloadVerification
Confirms the bundle was produced, contains the expected sections, and passes redaction verification before it leaves your environment.
oculis support verify --file oculis-bundle-20260807-0921.tar.gz --list-sections agent/ 4 files runtime/ 4 files gpu/ 3 files logs/ 1 file (10,000 lines) metrics/ 1 file traces/ 2 files (40 traces)
redaction ENABLED secrets found 0[PASS] Bundle complete and safe to share.If secrets found is non-zero, do not send the bundle. Re-run generation and open an issue —
that is a redaction bug and we want to know about it.
Where to send it
Section titled “Where to send it”Send the bundle to your SelaWare support contact, along with the four answers above and one failing request ID. That is enough to start.