Purpose: this file is the handoff map for a fresh Hermes/Emil session that opens this repository independently. Read this before editing the project.
yelixir-dev/hermes-memory-stack is a one-command, choice-driven bootstrap pack for Hermes Agent. It installs and configures an optional layered memory / knowledge / execution-pattern environment for a fresh or existing Hermes setup.
The repository is not a dump of Yorha's private Hermes state. It is an integration/distribution layer that helps a user enable selected components safely:
- Hermes skills for memory-stack operating policy.
- Axiom Perception MCP for empirical UI/procedural execution-pattern caching.
- Hindsight as the personal durable memory backend.
- llmwiki as a markdown/wiki-style shared knowledge map.
- NotebookLM CLI as an optional source-grounded external workspace.
- NotebookLM → llmwiki inventory sync as an optional routing map.
- semble_rs as an optional codebase/log exploration helper.
- Auxiliary model routing templates for Hermes helper tasks.
The pack is designed around choice-first installation:
- No forced external API.
- API-free modes exist.
- NotebookLM and Google login are optional.
- Secrets stay local.
~/.hermes/config.yamlis backed up before patching.- Uninstall/restore helpers remove only stack-owned files.
- Public GitHub repo:
yelixir-dev/hermes-memory-stack - Current local path on Yorha's machine:
/Users/yorha/dev/hermes-memory-stack - Remote used locally:
git@github.com-hermes:yelixir-dev/hermes-memory-stack.git - Main branch:
main - Preferred commit identity: yElixir / yelixir-dev, email
yelixir.dev@gmail.com
The project has three main surfaces:
-
Installer / uninstaller
install.shuninstall.sh- helper scripts under
scripts/
-
Distributed skills
skills/hermes-memory-stack/skills/axiom-perception/skills/llm-wiki/skills/notebooklm/skills/semble-rs/
-
Public documentation and shareable visual assets
README.mdACKNOWLEDGEMENTS.mdSECURITY.mdEVOLUTION.mddocs/*.png
The repo intentionally keeps public generated visual output PNG-only and places infographic PNGs directly under docs/. Temporary HTML used for rendering belongs under .tmp/ and must be deleted after render. Source images and cardnews images are internal-only and live under .internal/; do not commit them.
Main installer. It is intended to work both in clone/review mode and in one-command mode:
git clone https://github.com/yelixir-dev/hermes-memory-stack
cd hermes-memory-stack
./install.shor:
curl -fsSL https://raw.githubusercontent.com/yelixir-dev/hermes-memory-stack/main/install.sh | bashImportant behaviors:
- Keeps output plain ASCII so minimal terminals do not render ANSI escape codes literally.
- Reads prompts from
/dev/ttywhen invoked viacurl | bash. - Fetches the full repo tarball in one-command mode so bundled skills/scripts are available.
- Backs up
~/.hermes/config.yamlbefore patching. - Installs bundled skills into
~/.hermes/skills/. - Configures Hindsight / memory routing.
- Optionally installs/configures llmwiki.
- Optionally registers Axiom Perception MCP with split command/args form:
hermes mcp add perception --command uvx --args axiom-perception-mcp - Optionally installs
semble_rsvia cargo. - Optionally installs NotebookLM CLI via
uv tool install 'notebooklm-py[cookies,browser]'. - Optionally installs NotebookLM inventory sync helper.
- Planned: optionally installs NotebookLM source-pack automation only after the user separately opts in; the builder is installed/updated from GitHub (
yelixir-dev/notebooklm-source-pack-builder) rather than Yorha's internal working tree; seeNOTEBOOKLM_SOURCE_PACKS.md. - Optionally patches Hermes auxiliary routing.
- Runs smoke tests at the end.
Recent feature: if the default Hermes provider is GPT OAuth (openai-codex) and an OpenAI Codex OAuth token exists in ~/.hermes/auth.json, configure_hindsight() asks whether to connect Hindsight local-embedded LLM calls to that current GPT OAuth token. If accepted, it calls:
python3 scripts/patch-config.py \
--hindsight-mode gpt-oauth-reuse \
--hindsight-auth-json "$HERMES_HOME/auth.json"This is opt-in and local-only. Tokens are not committed or bundled.
Choice-driven uninstall / restore helper. It can remove stack-owned files and optionally restore the latest Hermes config backup. It must not remove Hermes itself, sessions, auth files, personal memory, Google cookies, or unrelated user config.
Public bilingual documentation. Keep it user-facing and practical:
- Quick install
- What the pack can install
- Design principles
- Install profiles
- NotebookLM behavior
- NotebookLM source-pack automation plan
- Hindsight / memory routing
- llmwiki modes
- Uninstall / restore
- Troubleshooting
- Acknowledgements
Do not fill it with maintainer-only internal notes. Put workspace/development notes in this file instead.
Upstream projects and authorship/license references. Update it when adding or removing upstream integrations.
Security policy and secret-handling expectations. Update this if installer behavior changes how tokens or credentials are handled.
Project-evolution notes. Use sparingly; detailed operational handoff should go in WORKSPACE.md.
Snapshot of Yorha's current Hermes cron jobs relevant to this project/workspace. When a user asks about cron jobs or scheduled updates, read this file first, then run hermes cron list or the cronjob tool to refresh live state.
Planning boundary for integrating NotebookLM Source Pack Builder into Memory Stack. It defines the opt-in installer path, cron/update strategy, safety boundaries for cookies/auth, and llmwiki inventory update rules. This is a plan document; the source-pack builder remains an independent project until its CLI contract is stable.
Best-effort Hermes config patcher. It keeps secrets out of committed files and writes only to the user's local Hermes home at install time.
Key modes:
-
--hindsight-mode oauth-reuse- Records provider/OAuth reuse intent in config.
-
--hindsight-mode openai-compatible- Patches Hindsight-related config for an OpenAI-compatible endpoint via env-var reference.
-
--hindsight-mode gpt-oauth-reuse- Reads the local Hermes auth file.
- Finds an OpenAI Codex / GPT OAuth access token.
- Sets Hermes memory provider to Hindsight.
- Writes
$HERMES_HOME/hindsight/config.jsonfor Hindsightlocal_embeddedmode. - Writes local env values to
$HERMES_HOME/.env. - Writes the embedded-daemon env file under
~/.hindsight/profiles/hermes.env. - Does not store the token in the repo.
-
--detect-gpt-oauth- Exits 0 when the default Hermes provider is GPT OAuth and a usable token exists.
- Used by
install.shto decide whether to show the GPT OAuth reuse prompt.
-
--aux-provider/--aux-model- Patches Hermes auxiliary helper tasks to a named provider/model.
Writes a helper env shim for llmwiki extraction/embedding configuration.
Collects NotebookLM notebook/source inventory into a compact routing map. It does not copy full source bodies or auth state.
Installs the NotebookLM inventory sync as a Hermes cron job after NotebookLM authentication is active.
Deterministically generates temporary HTML for documentation infographics.
Important project rules:
- Public output names use
언어_페이지순서_페이지제목, e.g.eng_01_overall.pngandkor_05_references.png. - Public infographic PNGs are placed directly under
docs/; do not usedocs/infographics/ordocs/assets/for the GitHub-facing layout. - The NieR:Automata HELP theme is the preferred visual tone: warm beige grid, muted gray-brown panels, thin technical linework, dusty low-chroma accents, quiet manual/help UI mood, compact source/profile block.
- Optional local reference images live under
.internal/assets/or another directory supplied throughHERMES_MEMORY_STACK_ASSET_DIR; these assets are not committed.
Uses Playwright/Chromium to render generated HTML into PNGs and create a contact sheet. HTML render sources are temporary.
Example env names only. Never commit real secrets. Includes placeholder names such as:
HINDSIGHT_LLM_API_KEYLLMWIKI_API_KEYLLMWIKI_EMBEDDINGS_API_KEYPOD_00_LITELLM_KEYCOMMANDCODE_BRIDGE_API_KEY
Minimal profile: lightweight start, typically skills + Axiom, no forced external API.
API-free profile: local/wiki-oriented operation without mandatory external LLM APIs.
Full/selectable profile: enables the broadest set of optional configuration paths.
Bundled skills copied into ~/.hermes/skills/ by the installer.
Operating policy for the overall stack.
Axiom Perception MCP usage: procedural execution-pattern cache, not long-term factual memory.
llmwiki usage: markdown/shared knowledge map.
NotebookLM usage: optional source-grounded external research workspace.
semble_rs usage: codebase/log exploration helper.
Public shareable overview images live directly here. Current naming convention:
eng_01_overall.png
eng_02_minimal.png
eng_03_normal.png
eng_04_advanced.png
eng_05_references.png
kor_01_overall.png
kor_02_minimal.png
kor_03_normal.png
kor_04_advanced.png
kor_05_references.png
Rules:
- PNG-only infographic files in public docs.
- No HTML left here.
- Do not keep separate
docs/infographics/ordocs/assets/folders unless Yorha changes the publishing rule. - The renderer writes the QA contact sheet to
.internal/contact-sheet.png; do not commit it. - Regenerate with:
python3 scripts/generate-infographics.py
node scripts/render-infographics.jsLocal-only working areas on Yorha's machine. .internal/ is ignored and must not be committed.
.internal/assets/: optional source images for local infographic rendering, such asyelixir-profile.pngandyelixir-pod-friend.png..internal/cardnews/: Korean internal cardnews PNGs and renderer..internal/cardnews_eng/: English internal cardnews PNGs and renderer..tmp/: temporary render HTML or scratch files.
These are excluded locally and should not be committed unless Yorha explicitly changes the rule.
- Never commit API keys, OAuth tokens, cookies,
storage_state.json, personal memory, or private Hermes config. install.shmay read local auth/config files only at install time and only to configure the user's local machine.- GPT OAuth reuse for Hindsight is opt-in. It copies a local access token into local env files so Hindsight can use the same GPT endpoint.
- If GPT OAuth expires, the user should re-authenticate Hermes and rerun the installer/config step.
- NotebookLM is optional and requires manual browser login. The pack does not bundle Google credentials.
- NotebookLM source-pack automation must remain a second-level opt-in path and must not upload private/local corpora unless the user explicitly asks.
- Axiom Perception is treated as a procedural pattern cache, not as factual memory.
- Hindsight durable memory should contain stable user/environment facts, not temporary task progress.
Run these before committing installer/config changes:
bash -n install.sh
bash -n uninstall.sh
python3 -m py_compile scripts/*.pyFor a safe config-patcher smoke test, use a temporary HERMES_HOME:
tmp_home="$(mktemp -d)"
mkdir -p "$tmp_home"
cat > "$tmp_home/config.yaml" <<'YAML'
model:
default: gpt-5.5
provider: openai-codex
base_url: https://chatgpt.com/backend-api/codex
memory: {}
YAML
cat > "$tmp_home/auth.json" <<'JSON'
{
"active_provider": "openai-codex",
"credential_pool": {
"openai-codex": [
{"access_token": "test-token", "base_url": "https://chatgpt.com/backend-api/codex"}
]
}
}
JSON
hindsight_home="$(mktemp -d)"
HERMES_HOME="$tmp_home" HINDSIGHT_HOME="$hindsight_home" python3 scripts/patch-config.py --detect-gpt-oauth
HERMES_HOME="$tmp_home" HINDSIGHT_HOME="$hindsight_home" python3 scripts/patch-config.py \
--hindsight-mode gpt-oauth-reuse \
--hindsight-auth-json "$tmp_home/auth.json"For visual artifacts:
python3 scripts/generate-infographics.py
node scripts/render-infographics.js
test ! -d docs/assets
test ! -d docs/infographics
test ! -e docs/contact-sheet.png
test -e .internal/contact-sheet.png
find docs -name '*.html' -print # must print nothingInspect .internal/contact-sheet.png with vision or manually before reporting success; do not commit the contact sheet.
- Add a bundled skill under
skills/<integration>/SKILL.md. - Add installer option in
install.sh. - Add helper scripts under
scripts/if needed. - Update
README.mdin both English and Korean sections. - Update
ACKNOWLEDGEMENTS.mdif an upstream project is referenced. - Update
SECURITY.mdif credentials/auth/cookies are involved. - Run syntax checks and any relevant smoke tests.
- Commit and push only intentional files.
- Keep NotebookLM CLI support and source-pack automation as separate prompts.
- Install/update the Source Pack Builder from its GitHub repo (
https://github.com/yelixir-dev/notebooklm-source-pack-builder.git) and do not depend on Yorha's internal working tree. - Require manual
notebooklm loginandnotebooklm auth check --test --jsonbefore upload or cron activation. - Store only secret-free source-pack manifests: URL, title, hash, source ID, timestamps, and status.
- Install refresh as a Hermes script-only cron so unchanged refreshes produce no output.
- Run the NotebookLM inventory sync after successful deploy/refresh so llmwiki receives a compact routing map.
- Update
uninstall.shto remove only stack-owned scripts/cron registrations, not user notebooks, cookies, browser profiles, or source-pack data unless explicitly requested.
- Read
CRONJOBS.mdfirst. - Run
hermes cron listor use thecronjobtool for live state. - Update
CRONJOBS.mdif jobs are created, removed, paused, or materially changed. - Do not create recursive cron jobs.
- Keep Stage 1 internal-stack updates and Stage 2 project updates separate.
- Use deterministic HTML/CSS → PNG rendering.
- Follow language-first filenames:
eng_01_title.png,kor_01_title.png. - Keep public docs PNG-only.
- Use the NieR:Automata HELP theme.
- Render a contact sheet.
- Inspect for clipping, overlap, tofu boxes, missing images, and theme drift.
- Add a more robust token-refresh story for GPT OAuth → Hindsight reuse. Current behavior copies the current access token; if the OAuth token expires, rerun the installer after Hermes re-authentication.
- Consider adding an explicit non-interactive installer flag for GPT OAuth reuse once the behavior has been battle-tested.
- Expand automated tests around
scripts/patch-config.pyif the repo grows a formal test suite. - Keep
CRONJOBS.mdsynchronized with live Hermes cron state whenever scheduled jobs are changed. - Continue refining public infographics and internal cardnews as Yorha requests.
For a new independent thread/session, start with:
Load the `yorha-hermes-memory-stack` skill. Then read /Users/yorha/dev/hermes-memory-stack/WORKSPACE.md and CRONJOBS.md first. Inspect git status before editing. This repo is the Hermes Memory Stack one-command install pack; use the SSH remote git@github.com-hermes:yelixir-dev/hermes-memory-stack.git; do not commit secrets, source assets, contact sheets, or internal cardnews folders.