需同时跑 FalkorDB 和 Qdrant 两个数据库,FalkorDB 挂掉时 API 直接返回 503;嵌入需 Voyage、OpenAI 或本地 provider,要自行准备;客户端接入需另装 MCP 桥 npx @verygoodplugins/mcp-automem setup。

automem
verygoodpluginsMIT活跃维护给 AI 助手做长期记忆的存储层,用图数据库加向量库记住跨会话的决策、关系和上下文,解决多轮对话后遗忘的问题。
Long-term memory for AI assistants. Graph + vector store that recalls decisions, relationships, and context across sessions.
git clone https://github.com/verygoodplugins/automem.git
cd automem
make devREADME 未说明显存或 GPU 要求;本地用 Docker Compose 起 API、FalkorDB、Qdrant 与图浏览界面,Python 方式需 3.10+(推荐 3.12)。
给 AI 助手加跨会话长期记忆,用图加向量混合检索找回决策与上下文
给 AI 助手做长期记忆的存储层,用图数据库加向量库记住跨会话的决策、关系和上下文,解决多轮对话后遗忘的问题。
核心能力
- 用 FalkorDB 图存记忆节点与 11 种类型化关系
- 用 Qdrant 存每条记忆的向量做语义召回
- 混合打分融合语义、图遍历、时间、标签与重要性
- 多跳桥接发现,从种子记忆追到共同原则
- 仿生记忆巩固:每日衰减、每周创意、每月聚类
容易踩的坑
- v0.16.3最新正式版2026-11-08 · 2026-11-08 00:49 UTC
- v0.16.22026-08-28 · 2026-08-28 18:01 UTC
查看更新说明
0.16.2 (2026-08-28)
Bug Fixes
- backup: page FalkorDB export by node id instead of deep SKIP (#221) (009d58e)
- config: preserve Ollama defaults and migration checks (0bc0096)
- docs: complete embedding migration runbooks (3468443)
- docs: correct re-embedding migration setup (a8be394)
- enrichment: circuit-break exhausted quota calls (ea148e5)
- enrichment: circuit-break exhausted quota calls (#229) (ad3ed27)
- enrichment: preserve quota circuit during in-flight calls (29f359d)
- mcp-sse: emit the stored date in compact recall output (#224) (42ba8b6)
- mcp: align the parity harness with its own allowlist (9ac5b4e)
- mcp: close false-failure and coverage gaps in the parity harness (4cf9ef1)
- mcp: close partial connections when parity setup fails (89346e9)
- mcp: isolate parity fixtures per scenario and drop the false alarm (fa458b0)
- qdrant: index the
typepayload field so recall filters stop 400ing (c131f02) - qdrant: index the
typepayload field so recall filters stop 400ing (#223) (10bcac7) - recovery: honor configured graph and cloud migrations (4dd1325)
- stream: emit live memory operations on GET /stream (#227) (7a92ebd)
Performance Improvements
- qdrant: store collection data on disk (#231) (07d8704)
- qdrant: store new collection data on disk (c97b5b1)
- qdrant: support disk-backed HNSW restores (b04b9e1)
Documentation
- v0.16.12026-07-07 · 2026-07-07 22:49 UTC
查看更新说明
0.16.1 (2026-07-07)
Bug Fixes
- api: reject admin placeholder fallback (69d8205)
- api: reject placeholder provider repairs (d2ce087)
- api: use provider embeddings for admin repair (b636b50)
- api: use provider embeddings for admin repair (#211) (3ae04bf), closes #208
- memory: require confirmed graph writes (878e638)
- memory: require confirmed graph writes (#216) (57264a9)
- recall: address Codex artifact review feedback (860e0e7)
- recall: address Codex overfetch follow-ups (d18d5d7)
- recall: over-fetch vector candidates and exclude artifact types (ddc9ecc)
- recall: over-fetch vector candidates and exclude artifact types (#205) (0720da2)
- recall: preserve metadata sidecar budget (b9d89c2)
- recall: preserve metadata sidecar upgrades (ed3c188)
- recall: preserve vector fetch limit floor (833cbbb)
- recall: widen context tag candidate fetch (a29e9fb)
- recall: widen context tag candidate fetch (#215) (01e1082)
- sync: ignore metapattern artifacts in drift checks (cd6f07d)
- sync: ignore metapattern artifacts in drift checks (#214) (7636021), closes #209
Documentation
- v0.16.02026-06-26 · 2026-06-26 15:46 UTC
查看更新说明
0.16.0 (2026-06-26)
Features
- api: add admin backup endpoint (#162) (8b1f264)
- api: support bulk memory associations (1221e36)
- api: support bulk memory associations (#198) (28eb916)
- benchmarks: LongMemEval failure-mode diagnosis harness + judge quota preflight (#183) (f99bece)
- consolidation: expose cluster threshold and min size as env vars (#163) (7e731f3)
- enrichment: expose classification fallback-rate metrics in /enrichment/status (#188) (0b522a9)
- entity: harden identity cleanup and repair tooling (#176) (827dfbc)
- eval: recall-quality optimization harness — lab foundation + design (#197) (431433e)
- graph: support unbounded visualizer snapshots (#141) (c730128)
- lab: add aged labelled distractor injection (cc5d546)
- lab: add config_complexity simplicity metric (dfb10d9)
- lab: add distractor_rate_at_k precision guardrail metric (872eab2)
- lab: add lab_corpus with parameterized recall (5e1e071)
- lab: add pick_winner scorecard decision rule (3187eac)
- lab: add real consolidation pass helper (48a7d4a)
- lab: isolate production clone restores (#171) (aef90c0)
- lab: wire scorecard, distractors, recall params, consolidation into runner (589ec30)
- recall: add metadata sidecar search (#177) (4e7956e)
- recall: add state_mode=current|history recall alias (#173) (b1df86c)
- recall: cap tag-score denominator to fix query-length bias ([#193](https://github.com/verygoodplugins/automem/issues
- v0.15.22026-04-23 · 2026-04-23 22:19 UTC
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
AutoMem
AutoMem gives your AI a memory that survives the chat.
Save the decisions, preferences, notes, and context that matter. The next time you open Claude, Cursor, Codex, ChatGPT, or another connected assistant, it can bring back the right details instead of making you repeat yourself.
Ask, “Why did we choose PostgreSQL?” and AutoMem can return the decision, the alternatives you considered, the principle behind it, and the work that followed — not just a pile of similarly worded snippets.
Why AutoMem feels different
No LLM call in the middle of recall. AutoMem looks up memories directly through its graph and vector index. That keeps normal retrieval fast and avoids an extra generative-LLM charge every time your assistant needs context. It still uses embeddings — from Voyage, OpenAI, or a local provider — and optional enrichment can add more structure over time.
More than vector search. A vector match finds something similar; AutoMem also records typed relationships between memories. It can follow the connections between a decision, its rationale, and its consequences, so your assistant has a better chance of returning the why, not only the words it recognizes.
One memory across your tools. Use the local MCP bridge with Claude Desktop, Cursor, Claude Code, Codex, Copilot, and more. For cloud agents, Remote MCP connects the same service to ChatGPT Developer Mode, Claude.ai, and ElevenLabs over HTTPS. Your memory is not locked to one chat app.
Own the data and the setup. Run AutoMem locally with Docker, on your own infrastructure, or as a small Railway service group. It exposes both MCP and a REST API, so it fits into the tools and workflows you already use.
Proven where long context gets hard
On the independent Agent Memory Benchmark's BEAM long-context tests, AutoMem scored 57.4% at 10 million source tokens while giving the answerer an average of only ~2.6–4.8k retrieved tokens. That is the kind of efficiency that lets memory stay useful as an agent's history grows.
The full picture — test setup, raw outputs, methodology, historical runs, and reproduction commands — is in automem.ai/benchmarks and benchmarks/EXPERIMENT_LOG.md.
How it works
AutoMem combines two storage layers behind a single API:
- FalkorDB stores memories as nodes with 11 typed relationships between them. The graph is the canonical record.
- Qdrant stores an embedding for every memory. Recall is a hybrid query — semantic similarity, graph traversal, temporal alignment, tag overlap, and importance — ranked by a 9-component score.
flowchart TB
subgraph service [AutoMem Service Flask]
API[REST API<br/>Memory Lifecycle]
Enrichment[Background Enrichment<br/>Pipeline]
Consolidation[Consolidation<br/>Engine]
Backups[Automated Backups<br/>Optional]
end
subgraph storage [Dual Storage Layer]
FalkorDB[(FalkorDB<br/>Graph Database)]
Qdrant[(Qdrant<br/>Vector Database)]
end
Client[AI Client] -->|Store/Recall/Associate| API
API --> FalkorDB
API --> Qdrant
Enrichment -->|11 edge types<br/>Pattern nodes| FalkorDB
Enrichment -->|Semantic search<br/>1024-d vectors| Qdrant
Consolidation --> FalkorDB
Consolidation --> Qdrant
Backups -.->|Optional| FalkorDB
Backups -.->|Optional| Qdrant
If Qdrant is unavailable, the graph still serves recall in a degraded mode. If FalkorDB is down, the API returns 503 — the graph is the source of truth.
Multi-hop bridge discovery
Ask "why boring tech for Kafka?" and AutoMem doesn't just match the word "Kafka". It traverses the graph from the seed memories to find the bridge that connects them:
- Seed 1: "Migrated to PostgreSQL for operational simplicity"
- Seed 2: "Evaluating Kafka vs RabbitMQ for message queue"
- Bridge: "Team prefers boring technology — proven, debuggable systems"
Both seeds carry an EXEMPLIFIES edge to the bridge memory. AutoMem ranks the bridge above the seeds and surfaces it in the recall response, so the assistant answers with your reasoning, not isolated facts. Tune via expand_relations, relation_limit, and expansion_limit on GET /recall.
11 authorable relationship types
| Type | Use case | Example |
|---|---|---|
RELATES_TO | General connection | Bug report → Related issue |
LEADS_TO | Causal relationship | Problem → Solution |
OCCURRED_BEFORE | Temporal sequence | Planning → Execution |
PREFERS_OVER | User preferences | PostgreSQL → MongoDB |
EXEMPLIFIES | Pattern examples | Code review → Best practice |
CONTRADICTS | Conflicting info | Old approach → New approach |
REINFORCES | Supporting evidence | Decision → Validation |
INVALIDATED_BY | Outdated info | Legacy docs → Current docs |
EVOLVED_INTO | Knowledge evolution | Initial design → Final design |
DERIVED_FROM | Source tracking | Implementation → Spec |
PART_OF | Hierarchical structure | Feature → Epic |
Three more edge types are added automatically by the enrichment pipeline and consolidation engine: SIMILAR_TO, PRECEDED_BY, and DISCOVERED.
Memory consolidation, neuroscience-inspired
AutoMem implements biological memory consolidation cycles. Wrong rabbit holes fade naturally. Important memories with strong connections strengthen over time.
| Cycle | Frequency | Purpose |
|---|---|---|
| Decay | Daily | Exponential relevance scoring (age, access, connections, importance) |
| Creative | Weekly | REM-like processing that discovers non-obvious connections |
| Cluster | Monthly | Groups similar memories, generates meta-patterns |
| Forget | Off by default | Archives low-relevance memories (<0.2), deletes very old (<0.05) |
Tune intervals via CONSOLIDATION_*_INTERVAL_SECONDS. See docs/ENVIRONMENT_VARIABLES.md.
For more on the recall scoring formula, enrichment internals, and how AutoMem differs from RAG and pure vector databases, see docs/COMPARISON.md.
Research foundation
AutoMem implements techniques from peer-reviewed memory research:
- HippoRAG 2 (Ohio State, 2025) — graph + vector hybrid for associative memory
- A-MEM (2025) — Zettelkasten-inspired dynamic memory organization
- MELODI (DeepMind, 2024) — gist-based memory compression
- ReadAgent (DeepMind, 2024) — episodic memory for context extension
Full writeups, findings, and how AutoMem implements each → docs/RESEARCH.md.
Run it
Railway (60 seconds)
Recommended Railway projects run AutoMem as a small service group: automem (the API), automem-graph-viewer (the standalone UI), falkordb (graph), qdrant (vectors), and mcp-automem (the MCP bridge for ChatGPT, Claude.ai, and ElevenLabs). Services use pre-built Docker images and auto-redeploy on :stable, so Railway does not spend compute rebuilding source.
→ Full setup: INSTALLATION.md
Docker Compose (local)
git clone https://github.com/verygoodplugins/automem.git
cd automem
make dev
| Service | URL | Purpose |
|---|---|---|
| AutoMem API | http://localhost:8001 | Memory REST API |
| FalkorDB | localhost:6379 | Graph database |
| Qdrant | localhost:6333 | Vector database |
| FalkorDB Browser | http://localhost:3000 | Local graph inspection UI |
Database and browser ports bind to localhost by default; the API binding is unchanged.
→ Full setup: INSTALLATION.md
Python (development)
make install
source .venv/bin/activate
PORT=8001 python app.py
Requires Python 3.10+ (3.12 recommended). → INSTALLATION.md
Contributing: feature PRs target the develop branch. main only moves via validated release merges, so users deploying from main (e.g. Railway auto-deploys) see one deploy per release instead of one per PR.
Connect your AI
| Client | Mode | Setup |
|---|---|---|
| Claude Desktop, Cursor, Claude Code, Codex, Copilot, Antigravity | Local MCP bridge | npx @verygoodplugins/mcp-automem setup |
| ChatGPT (developer mode), Claude.ai web/mobile, ElevenLabs Agents | Remote MCP (HTTPS) | docs/MCP_SSE.md |
| Anything else | Direct REST API | docs/API.md |
The MCP bridge is published as @verygoodplugins/mcp-automem. It handles client-specific config (rules files, hooks, templates) and proxies to your AutoMem service — local or Railway.
Direct API call:
import requests
token = "your-automem-api-token"
requests.post(
"https://your-automem.railway.app/memory",
headers={"Authorization": f"Bearer {token}"},
json={
"content": "Chose PostgreSQL over MongoDB for ACID compliance",
"type": "Decision",
"tags": ["database", "architecture"],
"importance": 0.9,
},
)
Screenshots
Screenshots will be added once the referenced in-repo image assets are available.
Known limitations
AutoMem is pre-1.0 and honest about its rough edges. The active ones for recall quality:
- Tags are a hard gate, not a soft boost. Tags filter before scoring, so a memory missing the queried tag won't surface even on a perfect semantic match. Within a tag scope, high-importance off-topic memories can still over-rank — mitigated by the opt-in
RECALL_RELEVANCE_GATE, not yet on by default (#130). - Temporal and preference updates. Recall doesn't yet reliably prefer the newest version of a conflicting fact, or fully resolve multi-session preference updates. The
RECALL_RECENCY_BIAS=autore-rank helps temporal-intent queries but stays opt-in pending broader validation (#158, #159). - The MCP SSE bridge doesn't forward
state_mode. The HTTP recall API supports it; the SSE proxy doesn't pass it through yet (#172). - Entity-node synthesis is experimental and off by default. First-class
Entitynodes (IDENTITY_SYNTHESIS_ENABLED) are gated off while people-entity word-pair noise is addressed (#181).
Docs, community, and license
Setup
- Installation guide — Railway, Docker, development
- Qdrant setup — vector database configuration
- Environment variables — full reference
API and integration
- API reference — endpoints, scoring, enrichment
- Remote MCP — ChatGPT, Claude.ai, ElevenLabs
- Migrations — embedding dimensions, 0.16.0 data migrations, MCP SQLite import
Research and comparison
- Research foundation — papers and how AutoMem implements them
- Comparison — vs. RAG, vector DBs, building your own
- Benchmark history — internal LoCoMo / LongMemEval harness runs + the neutral AMB (BEAM + Core-3) summary
- AMB head-to-head + reproducibility — neutral Agent Memory Benchmark results and the
AUTOMEM_REPRODUCE.md"run it yourself" recipe
Operations
- Scripts — maintenance, migration, recovery, and eval tooling, by lifecycle
- Health monitoring & backups
- Testing guide — unit, integration, benchmarks
Community
- automem.ai — official site
- Discord — community chat
- X / @automem_ai — updates
- YouTube / @AutoJackBot — tutorials
- GitHub issues — bugs and feature requests
Sibling repos
mcp-automem— universal MCP bridge / install funnelautomem-evals— exploratory recall-quality labautomem-graph-viewer— standalone graph visualization
MIT licensed. Deploy anywhere. No vendor lock-in.