-
Notifications
You must be signed in to change notification settings - Fork 1
troubleshooting
Common problems, in roughly the order new users hit them.
If eVi behaves oddly and you suspect a project EVI.md, skill, plugin, hook,
MCP server, memory, guardrail, or custom command, run with --safe-mode (or
EVI_SAFE_MODE=1) to load none of them:
evi --safe-mode chat # clean baseline — no customizations loaded
evi --safe-mode web # same clean boot for the web / desktop UIThe REPL header shows SAFE MODE (customizations off). If the problem disappears
in safe mode, re-enable customizations one at a time to find the culprit.
Safe mode is carried in the environment (EVI_SAFE_MODE=1), so it applies to the
whole process tree — including the desktop app's sidecar and any subagents — and
is never written to your config. It switches off:
| Project context |
EVI.md / AGENTS.md — including on a later /cd
|
| Config overlays | your profile and a repo's .evi.toml — safe mode is stock config
|
| Memory | the prompt-side index and the remember/recall tools |
| Skills | the catalog and invoke_skill / list_skills
|
| Hooks |
~/.evi/hooks.toml + every plugin's hooks |
| Guardrails | ~/.evi/guardrails.toml |
| Commands | user + plugin slash commands (and their tab-completion) |
| Plugins |
bin/ PATH wiring |
| MCP | external servers are never spawned |
| Output style | a user ~/.evi/styles/<name>.md can override a builtin — skipped |
| Keybindings |
~/.evi/keybindings.toml — stock keys |
| Transcripts | not written |
Inspection commands still work normally, so you can find and fix the culprit —
evi plugin list, evi skill list and evi config show are unaffected.
The venv isn't on PATH. Either activate it
(.venv\Scripts\Activate.ps1 on Windows,
source .venv/bin/activate on Linux/macOS) or invoke directly:
.venv\Scripts\evi.exe --helpeVi can't reach the backend. Check, in order:
- Is the backend actually running?
- LM Studio: open the app, Developer tab, Start Server.
- Ollama:
ollama serveor checksudo systemctl status ollama. - llama.cpp:
llama-server -m <path>must be running.
- Is
[llm] base_urlcorrect? Check withevi config show. - Can you hit it manually?
curl http://localhost:1234/v1/modelsfor LM Studio,curl http://localhost:11434/api/tagsfor Ollama. - Are you behind a proxy / VPN that's blocking localhost? Check
HTTP_PROXY,HTTPS_PROXY,NO_PROXY.
The model isn't tool-capable, or the temperature is too high.
- Use a tool-tuned model: Qwen2.5 series (especially 14B+), Hermes-3 on Llama 3.1, Command-R. See [docs/models.md] in the README quick reference.
- Avoid Gemma 2/3 and Phi-4 — their tool calling is hit-or-miss.
- Lower
[llm] temperatureto 0.3–0.4. The default 0.7 makes tool-call JSON noisy. - Watch the model's chat template: some GGUF builds have the tool prompt baked wrong. Try a different build from a known-good repacker (bartowski / unsloth on HF).
Auto-approval might be off and you're sitting at a (approve y/n/a)
prompt that hasn't been answered. Type a to allow everything for the
session, then revisit auto.auto_approve in config.toml for a
persistent fix.
The default 5-minute poll ceiling is generous, but a stuck workflow won't get unstuck. Check:
- ComfyUI itself is responsive:
curl http://localhost:8188/system_stats. - The checkpoint named in
[comfy] default_checkpointexists in ComfyUI's models directory. If not, the workflow fails immediately — tail ComfyUI's terminal for the actual error. - The sampler/scheduler combo is valid (
euler+normalis safe).
The server probably failed to start. Tail eVi's stderr or check
~/.evi/logs/:
-
npxis missing → install Node.js. - The MCP server package isn't installable → try
npx -y <package>manually to see the error. - Server start needs a long handshake → bump
MCPBridge.run(timeout=…)if you're hacking on the code.
Confirm what did register: evi mcp list-tools.
The bundled Python server didn't come up in 20 seconds. Common reasons:
-
py -3.13not on PATH. Override withEVI_PYTHON=python3.13. -
EVI_REPO_ROOTcouldn't be detected (binary not next to the repo). Set it explicitly. - The web extras aren't installed:
pip install -e '.[web]'. - For thin-client mode, set
EVI_REMOTE_URL=http://server:8000to skip the spawn entirely.
Tail the Tauri stderr to see what py -3.13 -m uvicorn … actually did.
-
apschedulernot installed:pip install 'evi-assistant[scheduler]'. - The scheduler isn't running anywhere. Pick one:
- foreground daemon:
evi scheduler - alongside web:
evi web(lifespan starts the scheduler)
- foreground daemon:
- The cron expression is invalid: check
~/.evi/logs/— failed jobs get logged with the parse error. - The task is disabled:
evi schedule listshows status; flip withevi schedule enable <id>.
You ran chat sessions before tools.transcripts was on, or the day-dir
under ~/.evi/transcripts/ doesn't exist yet. Confirm:
evi config show | grep transcripts
ls ~/.evi/transcripts/Run a quick evi chat, exit, then ls ~/.evi/transcripts/<today>/.
sounddevice couldn't open the default mic.
- Linux: install PortAudio (
sudo apt install libportaudio2). - Windows: confirm the mic isn't disabled in System → Sound. Privacy settings → Microphone → "Allow desktop apps" on.
- macOS: grant terminal Microphone permission in System Settings → Privacy.
Multi-monitor or HiDPI scaling. Get a known-good baseline:
# In eVi chat:
> take a screenshot and read the file path back to me
> use screen_size to tell me the resolutionCoordinates are pixels on the primary display. For non-primary monitors or fractional scaling, you may need to compute offsets manually.
Your git is <2.28. Upgrade:
winget install --id Git.Git -eThe worktree tests use git -c init.defaultBranch=main init as a
broader-compat fallback, so they should pass on git ≥2.5.
You're running the editable install but Python is caching old bytecode.
Either delete __pycache__ dirs:
find . -name __pycache__ -exec rm -rf {} +…or just pip install -e . again to refresh metadata.
- The session transcripts:
~/.evi/transcripts/<today>/<session>.jsonl - Tool/hook stdout via
~/.evi/logs/ - Dream audit logs:
~/.evi/logs/dreams/ - Scheduled task logs:
~/.evi/logs/scheduled/ - LM Studio / Ollama have their own terminal output — keep them visible during dev.
Generated from docs/troubleshooting.md — edit there, not here.
Start here
Guides
- Architecture
- [[Agent SDK (
evi.sdk)|sdk]] - SDK coverage + borrowable features
- Multi-machine setup
- Self-update design (Phase 29 proposal)
- [[Self-build — developing and building eVi with eVi|self-build]]
- Development notes
- Releasing
- Desktop bundling
- Code signing policy
- Surface parity — CLI ↔ Web ↔ Desktop
- eVi vs Claude Code — feature comparison
- Future integrations — backlog
- Roadmap
Feature deep-dives
- eVi feature guides
- Agents & Orchestration
- Recipes, Routines, Scheduled tasks, Channels
- Evals & LLM-as-judge
- Content Guardrails
- Hooks (tool + lifecycle, command/url)
- MCP (client + serve)
- Memory & Context management
- Observability (OpenTelemetry, stats, crash reports)
- Permissions & Sandbox
- Plugins & Marketplace
- Sessions, Resume, Handoff, Checkpoints
- Skills
- Slash commands
- Structured Outputs & Batch
- Ultracode
- Voice (TTS engines, STT, AutoSpeaker)
- Web & Desktop (settings, multi-user, deep links, updater)