- Python 3.11+
- SQLite with FTS5
pdftotextfor PDFspandocrecommended for heterogeneous formats
git clone <repo-url>
cd hermes-memory-kit
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txtpython3 scripts/bootstrap_workspace.py --workspace /path/to/workspace --with-wiki-templatesThe workspace gets its own .env. Copy the example and edit:
cd /path/to/workspace
cp .env.example .env
$EDITOR .envThe default .env.example uses paths relative to the workspace root (e.g. HMK_BASE_DIR=./agent-memory). That works out of the box — you only need to edit if you want to point any path elsewhere.
Paths you can set:
HMK_BASE_DIR— where memory state / DB live (default:./agent-memory)HMK_DB_PATH— the SQLite library (default:./agent-memory/library.db)HMK_VAULT_DIR— Obsidian-style wiki projection target (default:./wiki)HMK_WORKSPACE_ROOT— resolved automatically by the wrapper; override if you need toHMK_HERMES_HOME— your Hermes Agent home (only relevant if you use the optional plugin)HMK_AGENT_MEMORY_BASE— alias forHMK_BASE_DIR, used by the pluginHMK_SESSIONS_DIR— overrides$HMK_HERMES_HOME/sessionsHMK_DIALOGUE_HANDOFF_PATH— direct path to the handoff file (rarely needed)
Always use the wrapper:
./scripts/hmk memoryctl.py init
./scripts/hmk memoryctl.py add-text --shelf library --title foo --raw "content" --tags t1
./scripts/hmk memoryctl.py hybrid-pack --query "something" --budget 1800
./scripts/hmk continuityctl.py rehydrate
./scripts/hmk export_obsidian.py --ids 1 2 3The wrapper loads .env, absolutizes any relative HMK_* paths against the workspace root, and cds to the workspace before executing the target Python script. That makes invocation from any cwd predictable.
Install once from the repo:
cd /path/to/hermes-memory-kit
pip install -r requirements.txt
# for local embeddings (optional):
pip install -r requirements-local-embeddings.txtIf you also run Hermes Agent, the plugin auto-injects conversational continuity on new sessions. Full instructions in dialogue-handoff.md. Short version:
cp -r /path/to/workspace/plugins/dialogue-handoff "$HERMES_HOME/plugins/"
# then add plugins.enabled: [dialogue-handoff] to $HERMES_HOME/config.yaml
# and set HMK_AGENT_MEMORY_BASE + HMK_HERMES_HOME in the Hermes systemd unit
systemctl --user daemon-reload && systemctl --user restart hermes-gateway
hermes plugins list | grep dialogue-handoff # verify: enabled 2.0.0The plugin is pinned against Hermes Agent v0.10.0 (upstream commit e710bb1f). See the plugin doc for details.
Before relying on a fresh install, run the smoke test once from the repo:
./scripts/smoke-test.shIt exercises bootstrap → init → add-text → search → pack → export → upgrade, in a throwaway temp workspace.
From the workspace, or after exporting the required variables:
python3 scripts/memoryctl.py init
python3 scripts/memoryctl.py stats
python3 scripts/memoryctl.py embed-configpip install -r requirements-local-embeddings.txtDo not assume CPU compatibility without testing it.