Hermes Memory Stack is not only an installer. It is meant to become a small, self-improving operating layer around Hermes Agent.
Each component keeps doing what it is best at, but the stack maintains compact routing metadata so Hermes can choose the right tool more aggressively:
- Hermes memory / Hindsight — durable personal facts and environment facts.
- Skills — reusable procedures and policies.
- Axiom Perception MCP — empirical UI/browser/native execution patterns.
- llmwiki — shared markdown/semantic knowledge base and routing indexes.
- NotebookLM — optional source-grounded external reference workspaces.
- semble_rs — optional codebase/search/log signal extraction.
- Hermes cron — lightweight scheduled maintenance.
The important pattern is: do not dump everything into memory. Store only compact maps, indexes, and summaries in the layer that helps routing.
When NotebookLM is installed and authenticated, the pack can install a periodic metadata sync:
NotebookLM notebooks/sources
→ compact inventory script
→ ~/wiki/_meta/notebooklm-inventory.md
→ Hermes can read the map before deciding whether to ask NotebookLM
The sync stores only:
- notebook title
- notebook ID
- source titles
- source URLs
- source status/type
- short NotebookLM-generated summary
- keyword hints
It never stores:
- Google cookies
storage_state.json- OAuth tokens
- API keys
- full source bodies
- personal browser profile data
The installer only activates this flow when NotebookLM CLI exists and notebooklm auth check --test --json succeeds. If NotebookLM is installed but not logged in, the installer copies the helper script and prints the post-login activation command.
Periodically write compact inventories into ~/wiki/_meta/:
_meta/notebooklm-inventory.md_meta/mcp-inventory.md— MCP servers and tool names_meta/skills-inventory.md— installed stack skills and when to load them_meta/providers-inventory.md— named providers and safe routing notes, with env var names only
These files are not secrets. They are routing maps.
When a task succeeds after non-trivial debugging:
- Capture the final working procedure as a skill or patch an existing skill.
- Add pitfalls that caused the debugging loop.
- Add verification commands.
- Keep one-session artifacts out of memory.
Hermes already has a curator concept for skill lifecycle maintenance. This pack should cooperate with that instead of inventing a second skill manager.
For UI/browser workflows:
- Try to recall an Axiom Perception pattern before manual exploration.
- Execute and verify.
- Record success/failure outcome.
- Save improved patterns only when the workflow is stable and reusable.
For external manuals, PDFs, websites, and research packs:
- Keep the large/full source corpus in NotebookLM or another source-grounded workspace.
- Keep only notebook/source maps in llmwiki.
- Ask NotebookLM only when the routing map says it is relevant.
- File durable synthesis back into llmwiki only when it is broadly useful.
A future source-pack helper can turn a documentation root URL into a maintained NotebookLM notebook:
- Accept a root URL plus scope rules, for example same domain and path prefix.
- Discover child pages from sitemap,
llms.txt/llms-full.txtwhen available, and bounded same-site links. - Extract clean Markdown with an LLM-friendly crawler/extractor such as
crawl4aiortrafilatura. - Store only a local manifest of URL, title, content hash, source ID, and last sync time; never store cookies or NotebookLM auth state in the repo.
- Create or select the target notebook through
notebooklm-py/notebooklmCLI and add URL or bundled Markdown sources. - Respect NotebookLM source limits by bundling small pages into grouped Markdown sources and splitting large docs across notebooks when needed.
- On a scheduled run, compare hashes and use a versioned-preservation refresh: keep existing sources, write a dated snapshot/history entry, and add only changed bundles as new dated sources. Do not delete/re-add old sources by default, because that can destroy NotebookLM source context.
- Sync the resulting notebook/source inventory back to llmwiki so Hermes can route future questions to the right notebook.
This should remain opt-in because NotebookLM is Google-hosted and the consumer automation path uses unofficial APIs. Enterprise users can use the official NotebookLM Enterprise API path instead when available.
A future hermes-memory-stack doctor helper can check:
- NotebookLM auth and inventory freshness
- Axiom MCP registration
- llmwiki CLI availability
- Hindsight backend health
- installed stack skills
- stale or duplicate routing maps
- accidental secrets in stack-managed files
- Activation manifest —
~/.hermes/memory-stack/manifest.jsonlisting enabled components, health checks, and routing files. - Meta inventory scripts — scheduled sync scripts for MCP, skills, providers, and cron jobs.
- NotebookLM source-pack helper — URL-root-to-notebook automation for public docs, with bounded crawling, manifest-based change detection, and scheduled refresh.
- Stack doctor — single command to check all enabled components.
- Stack upgrade command — pull new pack version, refresh scripts/skills, preserve local secrets.
- Skill patch suggestions — cron job that reviews recent successful workflows and suggests skill updates, but does not auto-edit without user approval.
- Disposable profile smoke tests — installer test harness using a temporary
HERMES_HOME.
The stack should prefer compact, non-secret metadata over raw exports. If a data item would be sensitive when posted to a public GitHub issue, it should not go into stack-managed shared maps by default.