21 KiB
21 KiB
Wiki Log
Chronological record of wiki actions. Append-only.
[2026-07-22] init | Fresh Hermes Systems Wiki
- Created technical wiki at
/home/hermes/wiki - Structure: systems/, infrastructure/, concepts/, decisions/, comparisons/, runbooks/, experiments/, queries/, raw/, _archive/
- Wrote SCHEMA.md with 11 operating rules
- Wrote index.md as curated Start here dashboard
- Reseeded system/infrastructure/runbook stubs for existing homelab
- Git initialized, local-only
- No secrets, passwords, tokens, or private keys written to vault
[2026-07-22] audit | External audit pass (Claude, at Anthony's request)
- Merged duplicate pages:
systems/omniRoute.md(empty stub) -> keptsystems/omniroute.md(populated); repointed 5 links - Merged duplicate pages:
runbooks/safely-update-hermes.md-> kept asrunbooks/update-hermes-safely.md(fuller content); repointed 2 links - Added missing YAML frontmatter to 19 pages that lacked it (SCHEMA rule violation)
- Flagged 17 skeleton/placeholder pages explicitly as stubs (status: unresolved, confidence: low) instead of leaving them silently thin
- Linked 5 previously-orphaned pages (network-map, domains-and-tunnels, backups, cloudflare-tunnel, home-assistant) into index.md so they're reachable from Start Here
- Verified: no secrets/keys/passwords found in any wiki page (rule 1 compliance holds)
- Did not fabricate comparison/concept content — left for Hermes/Anthony to fill with verified facts
[2026-07-22] populate | Fill stub pages with verified system facts (Claude, at Anthony's request)
- Populated with real, verified data (not fabricated): infrastructure/network-map, infrastructure/domains-and-tunnels, infrastructure/backups, systems/cloudflare-tunnel, systems/home-assistant, systems/headless-server, systems/hindsight, comparisons/camoufox-vs-chrome, comparisons/model-routers, comparisons/hermes-vs-nanobot, comparisons/memory-backends, concepts/persistent-shells, concepts/tool-calling, concepts/browser-automation, concepts/agent-memory
- Corrected systems/nanobot.md: Nanobot is actually running, on LXC 333 ("clawtest"), not this host — earlier "not running" claim was true only for ct460 and got conflated with pve's own IP
- Found and flagged a real inconsistency: decisions/use-hindsight-for-memory.md still names Hindsight as primary backend while current-state.md/systems/memory-backend.md say Mnemosyne — marked unresolved rather than silently overwritten
- Fixed a broken
review_after: 0001-01-01in decisions/keep-openrouter-as-fallback.md - New security-relevant findings recorded in-place: x11vnc on this host has no password and binds to all interfaces (systems/headless-server.md)
- queries/retained-research-answers.md intentionally left as a stub — it's a running research log to be filled by Hermes over time, not something system inspection can populate
[2026-07-22] correction | Purge Hindsight (per Anthony, direct correction)
- Anthony confirmed Hindsight has nothing to do with this Hermes box (ct460) — it was confused with a different Hermes instance during earlier wiki authoring
- Deleted: systems/hindsight.md, decisions/use-hindsight-for-memory.md, runbooks/check-hindsight.md
- Rewrote comparisons/memory-backends.md and concepts/agent-memory.md to drop Hindsight as this box's predecessor backend
- Removed Hindsight references from: systems/memory-backend.md, systems/hermes-agent.md, systems/mnemosyne.md, current-state.md, decisions/index.md, index.md
- Left in place (not deleted, just flagged): archived hindsight-*.py scripts under ~/.hermes/scripts/ on this host — their presence is noted in comparisons/memory-backends.md as unexplained, possibly generic install-template leftovers, not evidence of local use
- Confirmed: Mnemosyne is, and has only ever been, this box's memory backend
[2026-07-22] cleanup | Remove leftover Hindsight scripts (per Anthony)
- Deleted /home/hermes/.hermes/scripts/hindsight-watchdog.py.archived, hindsight_migration_watchdog.py.archived, honcho_to_hindsight_import.py.archived
- These were the last physical trace of the earlier Hindsight/another-Hermes mix-up (see prior wiki + decisions correction); nothing Hindsight-related remains on this host or in this wiki
[2026-07-25] operations | Tool Search and gateway resilience
- Documented always-on native Hermes Tool Search, its verified context reduction, new-tool behavior, and rollback backup
- Documented how new skill categories are derived from the first folder below
~/.hermes/skills/ - Documented CT460 gateway reclaim/CPU protection and the memory containment applied to Camofox and Hermes Web UI
- Recorded the I/O-controller delegation limitation so an ineffective
IOWeightis not mistaken for active protection - Added health checks, exact effective settings, backup location, and rollback procedure
- No secrets, tokens, or private credentials were written to the wiki
[2026-07-28] dashboard | Jobs Dashboard feature additions
- Fixed bulk status update (payload shape mismatch:
{ids, status}→{ids, updates: {status}}) - Fixed column header sorting (sort key suffix mismatch, added all 8 column sort handlers)
- Added Phone Screen as a dedicated KPI filter card (separated from Interviews)
- Added Market Intel section at top of page (lazy-loaded on expand, refreshes on Refresh)
- Added rich text notes editor (Write/Preview with markdown: bold, italic, links, bullets) syncing to Notion
Notes / JD Summary - Added document attachment system (bookmark blocks on Notion page body, lazy-loaded, add/delete via API)
- Added 2 strong-match roles manually: Steel Blue Marketing Manager – APAC, Revo Fitness Campaign Manager
- Updated Synergy and Dept of Communities to Phone Screen status
- Updated wiki runbook with full dashboard feature documentation and API endpoint table
[2026-07-27] incident | Job Radar search and dashboard recovery
- Documented the contaminated morning radar run, 16-record cleanup, deterministic seven-day freshness/direct-advert rules, Pacific Energy exclusion, full Notion pagination and strong-match cover-letter workflow
- Added the non-negotiable same-day cover-letter self-healing audit: retry once, verify all five artifacts, require canonical HTML/HTTP 200, and require
MISSING_COVER_LETTER_COUNT=0 - Recorded the production cron model (
gpt-5.6-terra) and verified first inherited fallback (opencode-go/mimo-v2.5) - Documented dashboard direct-advert links, one-click KPI/stat/funnel filters, and retained Notion-backed status editing
- Recorded the CT460 Tailscale route-table loss and corrected atomic restoration of both
:443Serve and:8443/webhookFunnel - Added runbooks/job-radar and updated scheduled-task, Tailscale and index references
- Verified no secrets, API keys or private credentials were written to the wiki
[2026-07-29] update | Steel Browser deployment — browser backend switch
- New page:
systems/browser-backend.md— rewritten to reflect Steel Browser as primary, Camoufox as fallback - New page:
comparisons/steel-vs-camoufox.md— comparison of the two backends - Updated:
infrastructure/hosts.md— added CT201 and CT460 to verified hosts table - Updated:
infrastructure/docker-services.md— added Steel Browser compose file - Updated:
infrastructure/tailscale.md— added CT201 Steel serve routes - Updated:
index.md— browser-backend link description - Updated:
current-state.md— added 2026-07-29 changes section - Config change:
browser.cdp_urlset tohttp://100.96.244.39:9223in ops profile
[2026-07-30] update | Open WebUI updated on CT245
- Updated image to
ghcr.io/open-webui/open-webui:main(new digest e97bf9531916, Jul 27) - Bumped CT245 memory from 2592→4096 MB, swap 1600→2048 MB to prevent OOM on latest image
- Restarted container after OOM hang
- Updated
infrastructure/proxmox.md
[2026-08-02] incident | Mnemosyne embedding coverage gap discovered and fixed
- Health monitor was reporting vector index counts but not actual embedding coverage, hiding a critical gap
- Working memory embeddings were at 12.4% (186/1,504) — early memories from July 17-26 were never embedded
- Ran
mnemosyne reindex --yesto rebuild all embeddings — working memory now at 100% - Updated health check script (
mnemosyne-health-check.sh) to report actual embedding coverage via new helper script (check_embedding_coverage.py) - Created embedding coverage monitoring cron job (b63ed5817212) — runs every 6 hours, alerts if working memory coverage drops below 95%
- Added auto-reindex rule to MEMORY.md — will run reindex automatically if coverage drops, no user prompt needed
- DB grew from 8.7M to 21M with the new embeddings
[2026-08-01] incident | Mnemosyne capture pipeline repaired
- Confirmed automatic conversation capture failure with a pre-fix unique-marker E2E test: Hermes completed the turn but no
working_memoryrow existed. - Corrected stringified structured YAML (
sync_roles,skip_contexts,reflect,sleep_threshold,ignore_patterns) and enabled profile isolation;hermes config checkpassed. - Verified the repair with a second CLI marker that persisted as an exact normalized
[USER]database row. - Corrected stale canonical model facts for light-only design, numbered Obsidian structure, and CT460 root route
:9119; added authoritative identity/preference/workflow slots. - Reduced legacy always-injected memory files from 8,013 bytes to 1,080 bytes, with timestamped backups retained.
- Added incidents/2026-08-01-mnemosyne-capture-failure and refreshed systems/mnemosyne plus systems/memory-backend.
[2026-08-02] update | Wiki audit and Steel→Camoufox rollback documentation
- Rewrote comparisons/steel-vs-camoufox — full Steel experiment story, timeline, lessons learned
- Rewrote systems/browser-backend — Camoufox primary, Steel disabled
- Updated current-state — browser revert, Mnemosyne vector gap, DeepSeek 0731, Uber Eats upgrade, GH Trending removal, Tembo→Tusk rename
- Updated concepts/browser-automation — added Steel experiment lesson
- Created decisions/rollback-steel-to-camofox — formal decision record
- Updated systems/scheduled-tasks — job count 25, Uber Eats upgrade, GH Trending Daily removed
- Updated systems/mnemosyne — vector embedding coverage gap documented
- Updated systems/model-providers — DeepSeek V4 Flash 0731 details
- Created reports/uber-eats/index — landing page for monthly spend reports
- Updated decisions/index — linked new decision page
- Updated index.md — browser description, reports section, last-updated date
- Created nightly wiki audit cron job (23:59 AWST)
[2026-08-02] update | Ops profile Mnemosyne enabled and wiki sync
- Ops profile (
~/.hermes/profiles/ops/config.yaml): enabledmnemosyneplugin withprofile_isolation: true,allow_tool_override: false,shared_surface_read: false - Tusk (ops) and Rhino (default) now have independent memory banks — zero cross-contamination
- Verified end-to-end: memory writes land correctly in both profiles independently
- Updated systems/mnemosyne — profile isolation section now documents ops config
- Updated current-state — added ops profile Mnemosyne entry
- Updated runbooks/multiplexer-setup — fixed "Elephant ops" → "Tusk ops" in architecture diagram
- Fixed systems/memory-backend — "Shared surface empty" section renamed to reflect intentional isolation decision
[2026-08-04] update | OmniRoute free-DeepSeek silent-stop mitigation
- Incident: free-DeepSeek upstreams returning empty-after-tool responses since Aug 1 → silent turn stops on
deepseek-flash-freeandsmart-route/good-freeacross both instances - Reworked
deepseek-flash-freeandgood-freeon CT600: strategypriority→fill-first, dropped proven culprits (238d5978/deepseek-v4-flash+-0731,nvidiadeepseek), healthy free models promoted, deepseek demoted to last resort - Created incidents/2026-08-04-omniroute-free-deepseek-silent-stops
- Updated current-state — added OmniRoute free-DeepSeek mitigation to Recent Changes
- Updated systems/omniroute — added Recent Changes (2026-08-04) section
- Updated systems/model-providers — added mitigation entry under Notable Model Updates, updated
updateddate
[2026-08-07] update | Nightly wiki audit — OmniRoute fix, Nanobot degraded, scheduled tasks rewrite
- OmniRoute three-layer fix documented: npm package .env override (ENABLE_SOCKS5_PROXY=true re-installed by npm update), dead nanobot provider connection (CT333 DOWN), PVE host load leaking into CT600 via nesting=1. First-request-after-cache-expiry stall pattern.
is_active=0does NOT stop CredentialHealth probes. All lessons banked in omniroute-ops skill. - Updated systems/omniroute — added Recent Changes (2026-08-07) section with full root cause analysis
- Updated systems/nanobot — status changed from "active" to "degraded" (DOWN, connection refused on 8900). Updated confidence, sources, verified_on.
- Updated current-state — added 2026-08-07 changes: OmniRoute fix, Nanobot degraded, CT460 memory bump
- Rewrote systems/scheduled-tasks — fixed duplicate entries (5 duplicates removed), added 8 missing jobs (Important-mail monitor, CT221 Miner Watchdog, Job Tracker Dashboard Refresh, Evening Stand-Down Briefing, Daily Birthday Checker, Mnemosyne Embedding Coverage Monitor, Hermes Config Backup, Review Agent Estate). Count corrected: 25 → 28.
- Wiki audit cron error noted: model drift (smart-route → deepseek-paid-smart) causing RuntimeError on Wiki Audit job
- Updated index.md — last-updated date 2026-08-04 → 2026-08-07
[2026-08-09] update | Nightly wiki audit — Portainer reset, SFTPGo review
- Portainer password reset documented: CT245 admin user confirmed as
anthony(notadmin). Password reset via helper container, verified with auth API. Recovery procedure recorded. Added to current-state. - SFTPGo security review documented: CT299 findings — root access, unpinned fingerprint,
//root path, F1 quota mystery. Added to current-state and infrastructure/proxmox.
[2026-08-08] update | Cron model repinning, hermes-ui revert, Phase One review
- Cron job model repinning: 13 jobs repinned from dead/stale provider combos. 3 from
freeapi/minimax-m2.7→smart-route(IDs:c8d52904e1d6,1b23c042e17d,d40085da631c). Mosquito Tracker fromfreeapi/auto→smart-route(ID:1b31187397a5). 9 stale-named jobs (e.g.vertex/gemini-2.5-flash,deepseek-v4-flash-free) →smart-route. Daily Marketing Job Radar →gpt-5.6-terra. - Hermes UI vite config revert: Vite config was changed to HTTPS with self-signed certs (~16:00), breaking iPad access. Reverted to pre-HTTPS config, restarted
hermes-ui.service. Production build serves/ui/path correctly with relative asset paths.hermes-desktop.martinwa.orgidentified as separate Cloudflare infrastructure (likely CT450), not fixable from CT460. - Phase One estate review completed: Manual cron run (ID
a9359b7db27b) verified CT450's 11 duplicate publishing jobs remain paused (zero executions since Aug 1), CT460's 11 production jobs remain enabled withlast_status=ok, CT333 Nanobot has livejobs.jsonwith 9 jobs. Cron review report contained two inaccuracies (wrong date, false claim about CT333) — verified via live system probes. - Updated current-state — added 2026-08-08 changes section
- Updated systems/scheduled-tasks — Phase One review marked completed, model repinning noted in Known Issues
[2026-08-10] audit | Nightly wiki audit — cron failures, session storage issue
- Cron job failures documented: Four jobs failed on 2026-08-10 with two error patterns:
- TimeoutError (idle 601–602s): Daily Marketing Job Radar, Political News Digest
- RuntimeError (session storage write failure): Tech & AI Newsletter Digest, GitHub Trending Radar — Weekly Roundup
- Root cause identified: Disk at 83% (11GB free on 65GB),
state.dbat 593MB. Session storage likely experiencing WAL checkpoint or disk pressure issues. - Updated current-state — added 2026-08-10 changes section with cron failures and OpenCode WebSocket errors
- Updated systems/scheduled-tasks — added session storage failures to Known Issues, updated verified_on to 2026-08-10
- OpenCode WebSocket proxy errors noted: Repeated "OpenCode service unavailable" in hermes node journal (Aug 11 00:08). Process running, likely transient.
- No new pages created — all changes applied to existing pages
[2026-08-12] update | Nightly wiki audit — OmniRoute AutoRoutes, OpenViking evaluation, FreeLLMAPI internals
- OmniRoute AutoRoute variants documented:
auto/best-free(Auto Cheap) andauto/coding-freeare virtual variants — not among the 54 persisted combos. LKGP engine resolves them dynamically by scoring live connected accounts (antigravity, opencode-zen, nvidia, openrouter) on health/quota/latency/errors/cost-inverse, with instant failover. Example observed:auto/best-freerouted to Antigravity. Updated systems/omniroute. - OpenViking memory provider evaluated, NOT adopted: single-slot config would fully replace Mnemosyne (no parallel mode); risk assessment flagged schema/embedding/scope/provenance loss and no rollback. Config remains
memory.provider: mnemosyne. Added to comparisons/memory-backends. - FreeLLMAPI router internals documented: 3-axis weighted scoring (Reliability/Speed/Intelligence) + guardrail multiplier + Penalty Inspector + vision/tool capability matching. Router behind Hermes's default
freellmapi-auto. Added to comparisons/model-routers. - No new pages created — all changes applied to existing pages. Routine cron (Mnemosyne health, embedding coverage, CT221 miner watchdog, important-mail monitor) passed clean; no incidents.
[2026-08-13] update | Nightly wiki audit — OmniRoute CT600→CT601 migration
- OmniRoute migrated from CT600 to CT601: Provider renamed
custom:omniroute→custom:omni; base URLhttp://omniroute:20128/v1→http://omni:20128/v1. Hostomni.kangaroo-eel.ts.net(100.93.204.4, active) replacesomniroute.kangaroo-eel.ts.net(100.88.81.19, offline). CT600 stopped, CT601 running. DB path/var/lib/omniroute/storage.sqlite→/opt/omniroute/storage.sqlite; API key unchanged. All config (14) + cron-job (22)custom:omnirouterefs repointed tocustom:omni. Pre-migration backup at~/.hermes/config.yaml.bak.omniroute-removal. All facts verified live (pct list,grep, Tailscale DNS). - Updated systems/omniroute — Current Configuration rewritten for
omni/CT601, added Recent Changes (2026-08-13), bumpedupdated/verified_onto 2026-08-13. - Updated infrastructure/proxmox — CT600 marked stopped/retired, CT601 added running; bumped
updated. - Updated current-state — attested provider/host facts updated, added Recent Changes (2026-08-13) including evening stand-down weather bugfix.
- Updated infrastructure/hosts — OmniRoute proxy entry →
omni; CT600 reference marked verified/retired. - Updated index — last-updated date 2026-08-10 → 2026-08-13.
- No new pages created; all changes applied to existing pages. No secrets written.
[2026-08-14] update | Nightly wiki audit — OmniRoute factory reset, Guanaco update, GPT Luna research
- OmniRoute factory reset documented: CT601 database wiped clean (0 combos, 0 providers, 0 API keys, 115 built-in auto entries). Backup at
/opt/omniroute/factory-reset-backup-20260814-225524. Providers re-added from Notion vault: Anthropic, Google Gemini, Groq, Mistral, OpenRouter (all passed live tests). OpenAI keys invalid — removed. Multiple free combos broken by upstream model ID changes (OpenRouter Poolside dash→dot, Groq llama-4-scout retired). Default model changed fromauto/best-freetoresilient-free. Working free combos:free-lkgp,mega-free,smart-route. See systems/omniroute. - Guanaco router documented: CT205
ollamacontainer — Guanaco v0.8.11 → v0.8.14. DSML tag leakage fixes (tool-call formatting no longer leaks raw syntax), dashboard performance fix. Created systems/guanaco. - GPT-5.6 Luna research documented: Community consensus — Luna cleaner/polished; DeepSeek V4 Flash more persistent/cheaper. Provider route matters more than model name. Luna for planning/review, DeepSeek for execution. Updated systems/model-providers.
- Updated systems/omniroute — added Recent Changes (2026-08-14), bumped
updated/verified_on - Updated systems/model-providers — provider table (
omniroute→omni), Guanaco entry, GPT-5.6 Luna entry, default model changed toresilient-free, bumped dates - Created systems/guanaco — new page for Guanaco LLM proxy on CT205
- Updated current-state — added Recent Changes (2026-08-14) with all seven items, bumped
updated - Updated infrastructure/proxmox — CT205 description updated with Guanaco proxy
- Updated infrastructure/hosts — bumped
updateddate - Updated index — last-updated date → 2026-08-14, added Guanaco link to Core systems
- No secrets written.