Run a structured health check of the Hermes installation and archive the findings to the wiki.
/opt/data/wiki/produce/hermes/hermes-audit/YYYY-MM-DD.md
Create the directory if it doesn't exist. Use today's date in ISO format.
Use this as the default audit prompt unless Joseph provides a custom one. Quote it in the Original Prompt section of the report.
Audit my Hermes setup for anything that is missing, misconfigured, or unnecessarily limiting the quality and reliability of your work.
Compare against the previous audit in wiki/produce/hermes/hermes-audit/ and highlight:
- New issues since last week
- Issues resolved since last week
- Issues persisting week-over-week
Inspect the current configuration, enabled tools, credentials, integrations, environment variables, scheduled tasks, and recent logs or recurring errors.
Look especially for:
- Important capabilities that are unavailable or silently falling back because they are not configured
- Tools that technically work but are using a weaker default when a better option is available
- Missing API keys, dependencies, permissions, browser settings, or search/extraction providers
- Repeated errors, failed tool calls, timeouts, or unnecessary friction in recent runs
- Basic configuration changes that would materially improve research, browser use, coding, file handling, memory, or automation
- Silent quality degradations: fallback models in use, cache hit rates dropping, compression triggering early, token costs trending up
- Tools that are configured but unused in the past 7 days — flag unused spend or missed capability
- Patterns in your own recent sessions: repeated tool failures, approval loops, clarification requests, multi-retry tasks
Give me a prioritized list divided into:
1. Fix now — meaningful impact or broken capability
2. Worth improving — likely to produce better results
3. Optional — useful, but probably not worth the complexity yet
4. Recently fixed or confirmed healthy — previously problematic items now verified working
For every recommendation, explain the practical benefit, show the evidence that led you to it, and give me the exact steps or commands needed to fix it.
Do not change anything automatically. Audit first and let me review the recommendations.
Run these in order. Batch independent calls.
ls -t /opt/data/wiki/produce/hermes/hermes-audit/*.md | head -2
Read the most recent prior audit. Extract:
/opt/hermes/.venv/bin/hermes --version
/opt/hermes/.venv/bin/hermes doctor
Read /opt/data/config.yaml — look for:
default model validity (check against recent agent.log for actual model used)fallback_providers chain — any models that 403/401?web.backend / search_backend / extract_backend — empty means web tools disabledagent.reasoning_effort, verify_on_stop, compression settingsauxiliary.* models — any paid OpenRouter models in fallback lane?# Key names only — never print values
grep -oE '^[A-Z_]+=' /opt/data/.env | sort
env | grep -iE 'API_KEY|TOKEN|SECRET' | sed 's/=./=**/' | sort
# Error patterns and counts
grep -oE 'ERROR [a-z_.]+' /opt/data/logs/errors.log | sort | uniq -c | sort -rn | head -15
Last 24h summarized
grep "ERROR" /opt/data/logs/errors.log | tail -50 | grep -oE '(summary=[^,]+|Error code: [0-9]+ - .{0,80})' | sort | uniq -c | sort -rn | head -20
grep "check_fn.*returned False" /opt/data/logs/agent.log | tail -30 | sort -u
Key gates to check:
check_web_api_key — web_search / web_extract_browser_cdp_check — browser CDP toolscheck_bfl_requirements — Flux image gencheck_computer_use_requirements — desktop automationcat /opt/data/cron/jobs.json
ls /opt/data/cron/output/
python3 -c "
import sqlite3
conn = sqlite3.connect('/opt/data/state.db')
rows = conn.execute('SELECT model, COUNT(*) as calls, SUM(total_tokens) FROM session_model_usage GROUP BY model ORDER BY calls DESC LIMIT 10').fetchall()
for r in rows: print(r)
"
Check for:
defaultcache=NNN/NNN (NN%) in agent.log)session_model_usage totals)Audit BOTH memory stores for health, staleness, bloat, and duplicates.
File memory (legacy memory tool):
ls -la /opt/data/memories/MEMORY.md /opt/data/memories/USER.md
wc -c /opt/data/memories/MEMORY.md /opt/data/memories/USER.md
Compare MEMORY.md char count against memory.memory_char_limit in config.yaml (currently 2200). Flag entries near/over capacity (>90%). Read the file and flag: duplicate entries, stale facts (superseded decisions, outdated numbers), and verbose prose that could be compacted or moved to wiki/skills.
Sqlite memory (Mnemosyne primary + session store):
ls -la /opt/data/mnemosyne/data/mnemosyne.db /opt/data/state.db
python3 -c "import sqlite3; c=sqlite3.connect('/opt/data/mnemosyne/data/mnemosyne.db'); print(c.execute('PRAGMA integrity_check').fetchall()); print(c.execute('SELECT COUNT(*) FROM memory_working_memory').fetchone())" 2>/dev/null
Check: DB file sizes growing out of control, PRAGMA integrity_check failures, orphaned/invalid rows, and recall health (run mnemosyne_recall_diagnostics / mnemosyne_stats if available). Flag oversized DBs, integrity failures, or if Mnemosyne and file memory have diverged on the same facts.
Flag cross-store inconsistencies in the report and recommend consolidation (e.g. mnemosyne_sleep, or folding file-memory entries into Mnemosyne and freeing MEMORY.md).
Identify configured-but-unused tools:
Reflect on recent sessions:
grep -iE "channel_not_found|SlackApiError|Send error" /opt/data/logs/errors.log | tail -10
Start with an Original Prompt section quoting the exact request that triggered the audit. This preserves context for future reference.
Then add a Delta Summary section:
Then use the 4-bucket structure:
1. Fix Now — broken capability, meaningful impact
2. Worth Improving — better results, low effort
3. Optional — useful but not urgent
4. Recently Fixed or Confirmed Healthy — previously problematic items now verified working (do NOT list stable configs that haven't changed)
For each finding:
End with a Priority Order list.
sed 's/=./=**/'hermes doctor --fix without explicit approval — audit only, no changesagent.log for actual model used — config default may be silently falling backcheck_web_api_key false means web tools are gone — even if plugins register, the gate requires a backend config or legacy keyPresent the report to Joseph. Do NOT execute fixes without explicit go-ahead. If he approves, apply fixes one at a time and verify each.
Write (or overwrite) /opt/data/wiki/produce/hermes/hermes-audit/README.md with the current audit system documentation. This keeps the folder self-describing — anyone opening it sees what the audit covers, when it runs, and how to read the reports. Regenerate from the skill contents each time so it stays current if the skill changes. Include: schedule, delivery, output format, checklist sections (including 7b memory audit), conventions (no auto-fixes, no API key values), and the memory audit specifics (file + sqlite paths).