Skip to main content

.agents / memory

Version 1.1.0 MCP Python 3.10+ PyPI License

Local markdown memory & cross-agent context engine for clankers.
One persistent identity, shared across all your agents.

Quickstart

pip install agents-memory && agents-memory sync --init

Scaffolds ~/.agents/memory/, autowires MCP into installed IDEs, and registers assistant skills.

Source checkouts can also be installed and managed with vand.


What it does

Vendors keep chat in product graves (Cursor jsonl, Claude sessions, Antigravity brains, Open AI exports). agents-memory is the portable layer on top: identity, project map, typed facts. Markdown on disk is the source of truth. MCP is a clerk, not a second store. The search index is disposable FTS5 — delete it, rebuild, same results.

Layer Where What lives there
Global ~/.agents/memory/ USER.md, PROJECTS.md, concepts, decisions, staging
Per repo <repo>/.agents/memory/ facts, ADRs, in-progress work (gitignored)
Always-on host AGENTS.md / rules short inject; agents search_memory for the rest

Search. search_memory tries exact substring first, then FTS5 fill. get_related follows explicit frontmatter relations (refs, supersedes, same_as), not cosine similarity. Known project slug → get_project_memories.

Ingest → staging → distill. Catalog writes titles and paths to chats-index.md. Extract filters user lines into staging/ (PII, how-tos, dumps dropped). You (or distill_batch / memory-distill) promote durable facts into typed files. Chat bodies never become memory. Conversation logs belong to agents-traces.

IDE injection. One sync splices always-on context into hosts it knows (AGENTS.md / rules) and merges MCP where a config file already lives. Text outside <!-- agents-memory-sync --> stays. Details: Where it runs.

Cloud sync (new in 1.1.0). Several machines, one vault — see below.


Where it runs

Floor: anywhere with a terminal or an MCP client. Markdown vault + python -m agents_memory mcp is enough. No IDE lock-in.

Deeper support is layered — sync --init autowires what it finds on disk; ingest only covers graves we actually parse.

Layer What you get Who
Vault + MCP/CLI Full tools (search_memory, add_memory, …) or CLI mirrors Any MCP host / any shell
Autowire on sync Merge agents-memory into host MCP config; splice always-on AGENTS.md; install skills where the host has a slot Cursor, Claude Code, Claude Desktop, Zed (context_servers), Antigravity / Gemini, Windsurf, Codex MCP paths, Roo, Cline
Always-on / rules Marked inject block + bound rules ~/.agents/AGENTS.md (canonical); also Gemini, Zed, Claude home; rules → Cursor / Gemini / Windsurf
Chat ingest ingest catalog + extract → chats-index.md + staging (bodies stay in product folders) Cursor, Claude Code, Antigravity, VS Code Copilot, Windsurf, Roo, Cline, Pi, Open AI GDPR export

Ingest ≠ “supports the product.” Titles/paths + filtered user bullets only — same contract for every source (abi/INGEST.md). Distill is still agent/human judgment.

MCP without autowire: Aider, Continue, Goose, stock Copilot Chat, … — point the host at our stdio server yourself. Vault works; we just do not invent their config path.

Not ingested yet: live Codex rollouts, ChatGPT desktop LevelDB, vendor /memory clouds. Add a source when a parser exists — do not wholesale-import foreign memory.


Cloud sync

Mirror the personal store across laptops, a VPS, and other workstations. Each device keeps local files as the working copy. The server holds a merged bundle. MCP tools still run locally; push/pull keeps devices aligned.

1. Host (VPS / always-on box):

agents-memory remote serve --port 8443 --token <YOUR_SECRET_TOKEN>

2. Clients (laptops / workstations):

agents-memory connect https://memory.your-domain.com --token <YOUR_SECRET_TOKEN>
  • New slugs append. Same-slug edits: incoming wins. Conflicts land in staging/sync-conflicts.md.
  • Project trees sync as mirror/projects/<slug>/ in the bundle, then merge back into registered clones.
  • Ingest still reads local chat folders, then pushes the distilled markdown.
  • agents-memory disconnect pulls a last snapshot and restores stdio MCP.

Layout and merge rules: abi/REMOTE.md.


MCP tools

Primary surface. Agents talk to the vault here — not via scraping CLI help.

Tool What it does
search_memory Exact substring, then FTS5 fill. Not chat graves. Known slug → get_project_memories.
get_related Follow frontmatter refs / supersedes / same_as from a hit id
add_memory File a typed fact; auto-syncs inject
read_memory_file / write_memory_file Raw file by id (user/USER.md, project/<slug>/…)
get_project_memories One slug’s in-tree memory (call when opening a repo)
list_projects / inventory_projects / register_project / ignore_project Project map
get_staging_inbox / distill_batch / auto_distill Staging → typed memory
delete_memory Drop a search hit by id
sync_local_agents_md Rewrite always-on inject

Fifteen tools. Full contract: abi/MCP.md. Session snap/grep/tail live on agents-traces.


CLI

Ops / install / batch. Humans and agents rarely need the vault CRUD verbs — those mirror MCP for scripts. Machine-readable catalog: python -m agents_memory --help-json (do not scrape --help).

Command Purpose
agents-memory sync [--init] [--push] Always-on inject, first-run scaffold, optional mirror push
agents-memory inventory [--register …] [--repair-moved] Disk vs PROJECTS.md; register or fix moved clones
agents-memory search / add / read / write / delete / related MCP vault mirrors (scripts / no-MCP hosts)
agents-memory ingest catalog|extract|status Chat catalog and staging extract
agents-memory distill [--auto] Staging inbox / noise pass
agents-memory check Mechanical store health (no LLM)
agents-memory rebuild-index Rebuild disposable FTS5 cache (MCP start already rebuilds)
agents-memory remote … / connect / disconnect Cloud mirror (connect/disconnect = aliases)
agents-memory serve / web Local viewer / static HTML export
agents-memory reset --yes Clear local caches / temp state
agents-memory mcp stdio MCP clerk

extract-openai is deprecated → ingest extract (openai-export source).


ABI

Implementation-agnostic layout in abi/:


Tests

python tests/run_all_tests.py

License

MIT. See LICENSE.

Metadata

Release files for agents-memory 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agents-memory 1.1.1
File Size Uploaded
agents_memory-1.1.1.tar.gz 165.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agents-memory 1.1.1
File Interpreter ABI Platform
agents_memory-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 321.5 kB

Release files / agents_memory-1.1.1.tar.gz

Download URL agents_memory-1.1.1.tar.gz
Size 165.4 kB
Tags Source
SHA-256 checksum
How to use checksums
172f6222a033968301b1c38c64e8c04eb8da9c0168afd74a2934377f108b5ff7
BLAKE2b-256 checksum
How to use checksums
3c52158867d08723a1ad584256fe56b7e769e8e00aed973d17f4603ce64ba251
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.6

Release files / agents_memory-1.1.1-py3-none-any.whl

Download URL agents_memory-1.1.1-py3-none-any.whl
Size 156.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cf8bee4d6f5bd1f9dbc1c22deb697a384644c8c2fbc091c1dc7b187063d67ff2
BLAKE2b-256 checksum
How to use checksums
25ab91a21c51cd82fb292fe8aeff4e8785f5ab527b7fd1d31fb3b5774ea3093b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.6

Release history Release notifications | RSS feed

1.2.0

2 release files

This release

1.1.1 This release

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page