Local-first memory for AI agents.
agent-memory gives Hermes, Codex-style CLIs, Claude-style CLIs, and custom agent harnesses a shared SQLite memory runtime with curation, provenance, retrieval, prompt rendering, and regression evaluation.
It is intentionally small and local-first: your memory database lives on your machine unless you choose to sync or copy it elsewhere.
Most agent memory systems end up as raw logs, ad-hoc notes, or one-shot RAG. agent-memory separates durable knowledge into semantic facts, procedures, episodes, source records, scopes, and lifecycle states so an agent can remember useful context without blindly stuffing every transcript into future prompts.
Use it when you want:
- one user-level memory store shared across multiple agent harnesses
- local SQLite storage instead of a hosted memory service
- approved-only prompt context by default
- candidate/disputed/deprecated memory review flows
- source/provenance metadata for every curated memory
- bounded prompt rendering for Hermes/Codex/Claude wrappers
- retrieval regression fixtures with lexical/source baselines and failure triage
Recommended path for CLI agent users:
npm install -g @cafitac/agent-memory
agent-memory bootstrap
agent-memory doctorWhat this does:
- installs the
agent-memorycommand - initializes
~/.agent-memory/memory.dbwhen missing - creates or merges the Hermes hook config at
~/.hermes/config.yaml - preserves existing Hermes hooks and appends the agent-memory pre-LLM hook
- lets you verify setup with
agent-memory doctor
Python-first alternatives:
pipx install cafitac-agent-memory
agent-memory bootstrap
agent-memory doctoruv tool install cafitac-agent-memory
agent-memory bootstrap
agent-memory doctorDB=~/.agent-memory/memory.db
agent-memory init "$DB"
agent-memory create-fact "$DB" "agent-memory" "primary-install-path" "npm install -g @cafitac/agent-memory" "user:default"
agent-memory approve-fact "$DB" 1
agent-memory retrieve "$DB" "How should I install agent-memory?" --preferred-scope user:defaultNormal retrieval is approved-only by default. Candidate, disputed, and deprecated memories stay out of prompt context unless you intentionally ask for a forensic view:
agent-memory retrieve "$DB" "What obsolete install notes exist?" --status allFor most Hermes users:
npm install -g @cafitac/agent-memory
agent-memory bootstrap
agent-memory doctor
hermes hooks doctorOn first real Hermes use, Hermes may ask you to approve the shell hook or require --accept-hooks depending on your local Hermes policy.
The installed hook calls:
agent-memory hermes-pre-llm-hook ~/.agent-memory/memory.db --top-k 3 --max-prompt-lines 8 --max-prompt-chars 1200 --max-prompt-tokens 300 --max-alternatives 2The hook receives the Hermes event JSON on stdin, retrieves relevant approved memories, and returns bounded ephemeral context for the current prompt. It does not write back to Hermes session storage.
If you only want to inspect the YAML snippet and not modify config:
agent-memory hermes-hook-config-snippet ~/.agent-memory/memory.dbIf you want explicit paths and budgets:
agent-memory hermes-install-hook ~/.agent-memory/memory.db --config-path ~/.hermes/config.yaml --top-k 3 --max-prompt-lines 8 --max-prompt-chars 1200 --max-prompt-tokens 300 --max-alternatives 2 --timeout 12For harnesses that want a plain prompt prefix rather than a Hermes hook response:
agent-memory codex-prompt ~/.agent-memory/memory.db "What should I remember about this project?" --preferred-scope user:default
agent-memory claude-prompt ~/.agent-memory/memory.db "What should I remember about this project?" --preferred-scope user:defaultThe command prints prompt text only, so wrappers can prepend it to the live user request before invoking Codex, Claude Code, or another CLI.
This repository also includes source-checkout helper scripts for maintainers:
python scripts/run_codex_with_memory.py ~/.agent-memory/memory.db "What should I do next?" --dry-run
python scripts/run_claude_with_memory.py ~/.agent-memory/memory.db "What should I do next?" --dry-runEnd users should prefer the installed agent-memory command unless they are developing this repository.
- Default database:
~/.agent-memory/memory.db - Default Hermes config path:
~/.hermes/config.yaml - Storage: local SQLite
- Network behavior: the core CLI does not upload your memory database to an agent-memory cloud service
- Prompt policy: approved memories are retrieved by default; candidate/disputed/deprecated memories are excluded unless requested
- Scope policy:
user:defaultis the recommended durable cross-project scope; Hermes can also derive privacy-preservingcwd:<hash>scopes without exposing raw local paths in prompt context
See PRIVACY.md and SECURITY.md for the external-user trust model, sensitive-data guidance, and vulnerability reporting instructions.
Uninstall the CLI:
npm uninstall -g @cafitac/agent-memory
# or
pipx uninstall cafitac-agent-memory
# or
uv tool uninstall cafitac-agent-memoryRemove the Hermes hook by editing ~/.hermes/config.yaml and deleting the agent-memory hermes-pre-llm-hook ... command from hooks.pre_llm_call.
Keep or remove local data explicitly:
# inspect first
ls -lh ~/.agent-memory/memory.db
# destructive: removes the local memory database
rm ~/.agent-memory/memory.dbagent-memory bootstrap backs up changed Hermes config files to *.agent-memory.bak when it modifies an existing config.
agent-memory includes a fixture-based retrieval evaluator so retrieval behavior can be tested like application code:
agent-memory eval retrieval ~/.agent-memory/memory.db tests/fixtures/retrieval_eval
agent-memory eval retrieval ~/.agent-memory/memory.db tests/fixtures/retrieval_eval --baseline-mode lexical
agent-memory eval retrieval ~/.agent-memory/memory.db tests/fixtures/retrieval_eval --baseline-mode lexical --format text
agent-memory eval retrieval ~/.agent-memory/memory.db tests/fixtures/retrieval_eval --fail-on-regressionSupported baseline modes include:
lexical: preferred-scope lexical comparatorlexical-global: lexical comparator that ignores preferred scopesource-lexical: lexical comparator over linked source content within preferred scopesource-global: source-linked comparator that ignores preferred scope
Reports include per-task retrieved IDs, expected hits, missing IDs, avoid hits, pass/fail state, aggregate summaries, advisories, and failure triage details such as snippets, lifecycle status, scopes, and policy signals. Text reports are meant for maintainers reviewing failed retrieval tasks in a terminal; JSON is the stable machine-readable surface.
agent-memory is alpha software, but the public install path is validated.
What is ready:
- npm and PyPI releases from the same versioned source
- GitHub Release artifacts
- CI and release metadata checks
- published-install smoke checks
- local SQLite storage
- Hermes bootstrap/doctor flow
- Codex/Claude prompt rendering commands
- approved-only retrieval policy by default
- retrieval regression fixtures and diagnostic reports
Known limitations:
- no hosted sync service
- no built-in encryption-at-rest wrapper around the SQLite file
- no automatic secret detection/redaction before users create memories
- no stable 1.0 API guarantee yet
- advanced graph/semantic retrieval behavior is still evolving
- multi-machine sharing is currently a user-managed file/sync concern
git clone https://github.com/cafitac/agent-memory.git
cd agent-memory
uv run pytest tests/ -q
uv run python scripts/check_release_metadata.py
uv run python scripts/smoke_release_readiness.py
uv run pytest tests/test_published_install_smoke.py -q
npm pack --dry-runAfter a release publishes, the published-install-smoke workflow verifies the exact npm/PyPI version through npm registry lookup, npx, npm exec, uvx, and pipx. Maintainers can also run it manually with gh workflow run published-install-smoke.yml -f version=<version>.
Useful source-checkout commands:
uv run python -m agent_memory.api.cli --help
uv run python -m agent_memory.api.cli hermes-bootstrap /tmp/agent-memory.db --config-path /tmp/hermes-config.yaml
uv run python -m agent_memory.api.cli hermes-doctor /tmp/agent-memory.db --config-path /tmp/hermes-config.yamldocs/install-smoke.md: published install smoke recipesSECURITY.md: vulnerability reporting and local security modelPRIVACY.md: local data, prompt, and hook privacy modelCONTRIBUTING.md: contribution workflow.dev/: AI-authored drafts, design spikes, research notes, and unapproved plansdocs/: human-reviewed promoted documentation
MIT. See LICENSE.