Repository navigation
Troubleshooting
ric-massey edited this page Jul 8, 2026
·
1 revision
Symptom → likely cause → fix, for the problems people actually hit. For memory-specific issues see Debugging Memory Issues; for signal pathologies see Control Signals: Deep Dive.
| Symptom | Likely cause | Fix |
|---|---|---|
| UI window doesn't open | pywebview unavailable | Orrin falls back to a browser tab and prints the URL; or use ORRIN_UI_DEV=1, or ORRIN_UI=0 for headless |
| Heavy/slow first launch | Embedding + NLP deps (PyTorch/spaCy) loading | Expected once; steady-state is light. Consider Docker |
| Restart wedges / won't come back | The Vite frontend process group holds a pipe | Kill the Vite process group as well as the loop when restarting the dev path |
Import error mentioning paths before conftest |
A module imported brain.paths before env overrides were set |
Only relevant in tests — resolve state via brain/paths.py, never __file__-relative |
| Symptom | Likely cause | Fix |
|---|---|---|
| LLM calls do nothing | No provider key, or caller not allow-listed | Expected in symbolic-only mode. Set a key in Settings; only allow-listed callers may use the LLM (ORRIN_LLM_TOOL_ONLY) |
| LLM "stops working" mid-run | Circuit breaker opened after repeated errors | Check llm_failure_counts.json; fix the provider/key — it degrades to symbolic-only by design |
| Web search errors | No SERPER_API_KEY
|
Expected — "looking outward" falls back to local file search |
| Fabricated-looking output on error | — | Shouldn't happen: the gate fails closed. File a bug with the trace |
| Symptom | Likely cause | Fix |
|---|---|---|
| Same function picked over and over | A rut / reward collapse | The rut-breaker and Reward Auditor peer should intervene; check the Cognition room's per-function EMAs |
| "Makes nothing" for a long time | Reward was churning on intake | Grounded by the effect ledger; confirm artifacts are being recorded under brain/data/effect_artifacts/
|
| Thought stream flickers randomly | Hysteresis/binding not engaging | Check ORRIN_IGNITION_GATE/ORRIN_WORKSPACE_PRIOR aren't disabled |
| Control signals thrash | Velocity budget too loose, or two writers | See Tuning Control Signals; ensure writes go through the arbiter |
| Symptom | Likely cause | Fix |
|---|---|---|
| Data files growing unbounded | — | Shouldn't happen: logs are capped, history windowed, memory decays. If not, check docs/CONFIGURATION.md "How state stays bounded" |
| Want a clean slate | — |
python reset_orrin.py (snapshots first; --dry-run to preview). See Existence and Lifecycle
|
| Corrupted / weird state after a crash | Interrupted write | Daemons recover from WAL + snapshot; a reset restores from the pre-reset snapshot |
| Symptom | Likely cause | Fix |
|---|---|---|
| Can't reach UI from another device | Backend bound to loopback | Set ORRIN_BACKEND_HOST=0.0.0.0, pin the port, or use expose_orrin.command. See Remote Access & Tunneling
|
| Anyone with the URL can control it | No control token set | Set ORRIN_CONTROL_TOKEN before exposing. See Security Model
|
Grab evidence — relevant lines from brain/logs/, a run report, or a life capsule — and open an
issue (no secrets/tokens, please). See Contributing.
- Cognitive Loop
- Workspace & Ignition
- Binding & Writeback
- Thinking & Action Selection
- Learning & Adaptation
- Effect Ledger
- Quality Standard
- Expression Membrane
- Self-Code
- Native Language Model
- Existence & Lifecycle