🌐 English · 한국어
One-command, choice-driven memory and knowledge bootstrap for Hermes Agent.
Hermes Memory Stack installs an optional layered memory and knowledge environment for fresh Hermes Agent setups. It can add skills, Axiom Perception MCP, llmwiki modes, Hindsight routing helpers, optional NotebookLM integration, optional source-pack automation, and optional code/log helpers without bundling user secrets.
Important
This repository does not bundle API keys, OAuth tokens, Google cookies, personal memory, or private config. The installer asks what to enable and keeps user-controlled secrets in ~/.hermes/.env.
| Layer | What it adds |
|---|---|
| Skills | Reusable operating procedures for Hermes memory-stack workflows |
| Axiom Perception MCP | Procedural execution-pattern cache for repeated UI/workflow tasks |
| llmwiki | API-free, extraction, local/OAuth bridge, or hybrid knowledge modes |
| Hindsight routing | Optional durable-memory provider routing helpers |
| NotebookLM | Optional external source-grounded workspace and inventory sync |
| Source packs | Optional public-docs bundling workflow for NotebookLM refreshes |
| semble_rs | Optional codebase exploration and log digest helper |
Review-first mode:
git clone https://github.com/yelixir-dev/hermes-memory-stack
cd hermes-memory-stack
./install.shOne-command mode:
curl -fsSL https://raw.githubusercontent.com/yelixir-dev/hermes-memory-stack/main/install.sh | bash30-second proof after install:
hermes skills list | grep -E 'yorha-hermes-memory-stack|notebooklm|native-mcp'
test -f ~/.hermes/config.yaml && echo "Hermes config present"Expected result: at least one installed memory-stack skill or integration route is listed, and Hermes still has a config file after the backed-up patch step.
- Hermes skills for memory-stack operating policy
- Axiom Perception MCP as a procedural execution-pattern cache
- llmwiki in API-free, extraction-only, local/OAuth bridge, or hybrid embedding mode
- Hindsight/Hermes memory routing helpers
- optional
semble_rsfor codebase exploration and log digest - optional NotebookLM CLI for source-grounded external research
- optional NotebookLM → llmwiki inventory sync after NotebookLM is authenticated
- optional NotebookLM source-pack helper for public docs roots, gated behind
nlm-packand manual NotebookLM auth - optional Hermes auxiliary model routing template
- Choice-first — no forced external APIs.
- API-free mode exists — useful for private/local users.
- NotebookLM is optional — Google login and external service usage are never required.
- Secrets stay local — use
.env, never commit real keys. - Config is backed up —
~/.hermes/config.yamlis copied before patching. - Layer separation:
- Hermes memory / Hindsight: personal durable facts
- session_search: past conversation recall
- skills: reusable procedures
- Axiom: empirical execution patterns
- llmwiki: shared agent knowledge
- NotebookLM: optional external source workspace
- semble_rs: optional code/log helper
- skills
- Axiom Perception MCP
- no external API
- no NotebookLM
- skills
- Axiom Perception MCP
- llmwiki markdown/wiki mode
- optional semble_rs
- no external API required
- Hindsight routing wizard
- llmwiki mode wizard
- Axiom
- optional semble_rs
- optional NotebookLM
- optional auxiliary routing
NotebookLM support is optional and off by default.
If enabled, the installer installs the CLI and browser dependencies, then prints manual login instructions:
notebooklm login
notebooklm auth check --test --json
notebooklm list --jsonAfter NotebookLM is authenticated, the optional inventory sync can write a compact routing map to:
~/wiki/_meta/notebooklm-inventory.md
This sync stores notebook names, IDs, source titles/URLs/statuses, and very short summaries only. It does not copy source bodies or any auth state. If selected, it installs:
~/.hermes/scripts/sync_notebooklm_inventory.py
~/.hermes/scripts/install_notebooklm_inventory_sync.sh
and creates a silent Hermes cron job when authentication is already active.
No Google cookie, storage_state.json, or account credential is bundled or copied.
NotebookLM source-pack automation is a second-level opt-in path, not a default install step. The workflow is: install NotebookLM support, authenticate manually, then optionally enable a source-pack helper that turns a public documentation root into bundled Markdown NotebookLM sources with manifest-based refresh.
Memory Stack does not implement the crawler/bundler itself. It installs and refreshes the independent Source Pack Builder from GitHub by default:
uv tool install "git+https://github.com/yelixir-dev/notebooklm-source-pack-builder.git@main" --forceThe safe CLI contract used after the GitHub install/update is:
nlm-pack sync <pack-name> --config <config.yaml> --no-upload --json
nlm-pack refresh <pack-name> --config <config.yaml> --versioned --upload --jsonPackaged files:
config/notebooklm-source-pack.example.yaml
scripts/install-notebooklm-source-pack-sync.sh
If selected during NotebookLM setup, the installer copies these to:
~/.hermes/notebooklm-source-packs/examples/notebooklm-source-pack.example.yaml
~/.hermes/scripts/install_notebooklm_source_pack_sync.sh
Cron/upload activation requires all of the following first: the GitHub-based builder install/update step succeeds, a user-edited config has an explicit notebooklm.notebook_id, and a manual auth check passes:
notebooklm login
notebooklm auth check --test --jsonThe integration plan and boundaries are tracked in NOTEBOOKLM_SOURCE_PACKS.md:
- public docs/source roots only by default;
- no Google cookies,
storage_state.json, OAuth tokens, private browser profiles, or source bodies in this repo; - script-only Hermes cron that stays silent on no-op refreshes;
- compact NotebookLM inventory sync back to llmwiki after deploy/refresh;
- NotebookLM Automation / Source Pack Builder remains an independent project with its own implementation and tests.
The installer can:
- keep existing memory settings
- if the default Hermes provider is GPT OAuth (
openai-codex), ask whether Hindsight should reuse the current local GPT OAuth bearer token for local-embedded LLM calls - record intent to reuse existing Hermes OAuth/provider/bridge where possible
- configure an OpenAI-compatible endpoint via env-var reference
- skip memory changes
GPT OAuth reuse is opt-in and local-only. The installer copies the current OAuth access token from ~/.hermes/auth.json into local Hindsight/Hermes env files so Hindsight's embedded daemon can call the same GPT endpoint; no token is bundled or committed. If the OAuth token expires or Hermes is re-authenticated, rerun the installer or refresh the Hindsight env. Other provider/OAuth reuse remains provider-specific; when direct token reuse is not possible, use an OpenAI-compatible bridge or LiteLLM proxy.
- skip
- API-free markdown/wiki mode
- external OpenAI-compatible extraction
- local/OAuth bridge extraction
- hybrid extraction + embedding endpoint
Embedding is optional. Users can choose no embeddings, external embeddings, or a local embedding endpoint.
NOTEBOOKLM_SOURCE_PACKS.md
install.sh
uninstall.sh
scripts/
patch-config.py
write-llmwiki-env-shim.py
sync-notebooklm-inventory.py
install-notebooklm-inventory-sync.sh
install-notebooklm-source-pack-sync.sh
config/
env.template
notebooklm-source-pack.example.yaml
profiles/
skills/
hermes-memory-stack/
llm-wiki/
axiom-perception/
semble-rs/
notebooklm/
If you want to remove a one-command install or roll back the config, run the uninstall helper.
One-command uninstall/restore:
curl -fsSL https://raw.githubusercontent.com/yelixir-dev/hermes-memory-stack/main/uninstall.sh | bashReview-first mode:
git clone https://github.com/yelixir-dev/hermes-memory-stack
cd hermes-memory-stack
./uninstall.shThe uninstaller is also choice-driven. It can:
- remove stack skills copied into
~/.hermes/skills - remove helper scripts under
~/.hermes/scripts - remove stack-owned NotebookLM inventory/source-pack cron jobs
- optionally remove
~/wiki/_meta/notebooklm-inventory.md - remove the
perceptionMCP registration - optionally restore the latest
~/.hermes/config.yaml.bak.* - optionally uninstall
notebooklm-py,semble_rs, andllm-wiki-compiler
It does not remove Hermes Agent itself, personal memory, sessions, auth files, Google cookies, or unrelated user config.
This should not happen in a normal terminal. The installer reads wizard input from /dev/tty when the script itself is piped through stdin:
curl -fsSL https://raw.githubusercontent.com/yelixir-dev/hermes-memory-stack/main/install.sh | bashIf there is no interactive TTY at all, the installer falls back to safe defaults and prints a warning. For fully interactive setup on unusual terminals, use clone mode:
git clone https://github.com/yelixir-dev/hermes-memory-stack
cd hermes-memory-stack
./install.shUse split command/args form, not a single quoted shell string:
hermes mcp add perception --command uvx --args axiom-perception-mcpThe installer uses this split form. If uvx itself is missing, install uv first and rerun the MCP add command.
This repository intentionally avoids bundling secrets, OAuth tokens, browser storage, personal memory, or private Hermes config. See SECURITY.md for the reporting policy and security boundaries. For private security reports, use the GitHub Security Advisory form at https://github.com/yelixir-dev/hermes-memory-stack/security/advisories/new or email yelixir.dev@gmail.com.
Issues and pull requests are welcome. Please keep contributions aligned with the stack boundaries: no committed credentials, no private source bodies, no Google cookies/browser state, and no forced external API dependency.
This integration pack references and optionally installs upstream projects including:
- Hermes Agent — https://github.com/NousResearch/hermes-agent
- Axiom Perception MCP — https://github.com/vdalhambra/axiom-perception-mcp
- llm-wiki-compiler — https://github.com/atomicmemory/llm-wiki-compiler
- semble_rs — https://github.com/johunsang/semble_rs
- notebooklm-py — https://github.com/teng-lin/notebooklm-py
See ACKNOWLEDGEMENTS.md for details. This repo is an integration/bootstrap layer; upstream projects retain their own licenses and authorship.
