Troubleshooting
Fixes for failed self-tests, missing sessions, empty review queues, and installer checks.
Start with the built-in checks. They tell you which area to look at.
# Linux / macOS
./_System/Scripts/Installers/verify_install.sh
python3 _System/Scripts/hermes_brain_mcp.py --test
# Windows PowerShell
.\_System\Scripts\Installers\verify_install.ps1
python _System\Scripts\hermes_brain_mcp.py --test
Installer verification checks
verify_install runs six checks. Here is what each one means and how to fix it.
| Check | If it fails |
|---|---|
Vault structure (01-Projects, 02-Areas, 03-Resources, 04-Archives, _System) | You are probably not in the vault root, or the install was interrupted. cd into the vault folder and re-run the installer. |
Obsidian plugins (dataview, smart-connections, kanban in .obsidian/plugins/) | Re-run the installer fully. Then open the vault in Obsidian and enable the community plugins when prompted. |
MCP server status (hermes-agent mcp-server status should say active) | Start it with hermes-agent mcp-server start. This check needs the Hermes CLI in your PATH. Without Hermes it will fail, which is expected. |
Memory promotion script (promote_memory.py --list) | Run it by hand and read the error. Usually Python is missing, or you are in the wrong folder. |
User-Profile.md has content (02-Areas/User-Profile.md, over 50 bytes) | Edit the file and add your details. The installers never overwrite it once it has content. |
.gitignore ignores Daily/ | Add a Daily/ line to .gitignore so personal session data is not committed. |
The MCP server cannot find my vault
The server looks for the vault in this order:
- The
--vault <path>argument. - The
HERMES_VAULT_PATHenvironment variable. - A search upward from the script’s own location.
Fix it by passing the path explicitly, or set the variable once:
export HERMES_VAULT_PATH="$HOME/Hermes Brain" # Linux / macOS
setx HERMES_VAULT_PATH "C:\Users\you\Hermes Brain" # Windows
python _System/Scripts/hermes_brain_mcp.py --test --vault "/path/to/vault"
No sessions are being archived
- Check how archiving is wired. You need one of: real-time hooks in
~/.hermes/config.yaml(on_session_start,post_llm_call,on_session_end), or an hourly cron job (0 * * * *) runninghourly_archive.py. See Install Prompts. - Trigger an export by hand to separate a wiring problem from a script problem:
python3 _System/Scripts/archive_now.py python3 _System/Scripts/hourly_archive.py --since 2h - Look in the right folder. Sessions go to
04-Archives/Daily/YYYY/MM/DD/. Cron-run notes are kept separately in04-Archives/Cron/soDaily/only holds real chats.
Duplicate or garbled archive entries
Run only one session-archiving job per vault. Two concurrent writers to 04-Archives/Daily/manifest.jsonl race and can corrupt the index. Remove the extra cron job or hook, then run vault_audit.py to check the vault:
python3 _System/Scripts/vault_audit.py
The review queue is empty
- Candidates only appear after staging. Run
python3 _System/Scripts/consolidate_memory.py, thenpython _System/Scripts/promote_memory.py --list. - A fresh vault correctly prints
[]. - If your agent stages facts through MCP, check that its client is pointed at the right vault (see above).
A promoted fact is not showing up in Hermes
Promoting writes to the vault side. Copy it to Hermes’s own memory with the sync script, and preview first:
python _System/Scripts/sync_to_hermes.py --dry-run
python _System/Scripts/sync_to_hermes.py
Then start a new chat. Memory is injected at the start of a turn, so an already-open conversation may not see it.
The Obsidian Local REST API key
The plugin generates its own key the first time you enable it. The template ships without one. Store it in Hermes’s protected environment, never as a note in the vault:
hermes config set env.OBSIDIAN_REST_API_KEY "<your-key>"
Updating without losing my notes
Run the update script from inside your vault. It refreshes scripts, templates, and configs, and leaves Daily/, Memory-Review/ and your profile alone:
./_System/Scripts/Installers/update.sh # Linux / macOS
.\_System\Scripts\Installers\update.ps1 # Windows
To see what an update would touch before running it, use the drift checker, which sorts each file into safe, customised, outdated, or missing:
python3 _System/Scripts/template_drift.py
This documentation site
Problems with the docs site itself, such as a 502 error or a page that will not update, are covered on the Deployment page.
Still stuck?
Open a Discussion to ask a question, or file an issue for a bug. Include the output of verify_install and the --test run.