automem is a free, open source databases project written in Python and released under MIT. It has 813 GitHub stars, 105 forks and 11 open issues, and was last pushed 7 days ago. On this registry it ranks #79 of 81 tracked projects in Databases, with 5 head-to-head comparisons available.

What is automem?

AutoMem is an open-source, MIT-licensed long-term memory service for AI assistants that stores decisions, preferences, notes, and context in a graph plus vector database so connected tools such as Claude, Cursor, Codex, and ChatGPT can recall them across sessions.

What it is

AutoMem is a Python service that sits in the Infrastructure & Operations / Databases category and unifies two storage layers behind a single API. FalkorDB holds memories as nodes connected by 11 typed relationships, and the graph is the canonical record. Qdrant holds a 1024-dimensional embedding for every memory. The service itself is a Flask application exposing a REST API for the full memory lifecycle, alongside a background enrichment pipeline, a consolidation engine, and optional automated backups. Both MCP and REST interfaces are exposed, so the same memory store can serve local desktop assistants and remote cloud agents.

The concrete problem it solves is that assistants forget. Rather than making a user restate context in every new chat, AutoMem persists the decisions and reasoning behind work and returns them on demand, so a question like "why did we choose PostgreSQL?" yields the decision, the alternatives considered, the underlying principle, and the work that followed. It replaces plain vector-only retrieval, where a similarity match returns a pile of similarly worded snippets rather than the rationale. Recall is a hybrid query combining semantic similarity, graph traversal, temporal alignment, tag overlap, and importance, ranked by a 9-component score. No generative LLM call sits in the middle of recall, which keeps normal retrieval fast and avoids an extra model charge each time an assistant needs context, though embeddings from Voyage, OpenAI, or a local provider are still used.

Key capabilities

  • Hybrid recall across FalkorDB and Qdrant, ranking results by a 9-component score that combines semantic similarity, graph traversal, temporal alignment, tag overlap, and importance.
  • 11 typed relationships between memory nodes, enabling multi-hop bridge discovery; in the README example, two seed memories each carry an EXEMPLIFIES edge to a shared bridge memory that is ranked above the seeds.
  • Recall path with no generative LLM call, using pre-computed embeddings from Voyage, OpenAI, or a local provider instead.
  • Local MCP bridge for Claude Desktop, Cursor, Claude Code, Codex, and Copilot, plus Remote MCP over HTTPS for ChatGPT Developer Mode, Claude.ai, and ElevenLabs.
  • REST API covering the memory lifecycle, with a background enrichment pipeline and a consolidation engine that write pattern nodes and semantic structure back into both stores.
  • Degraded operation when Qdrant is unavailable, since the graph continues to serve recall; when FalkorDB is down the API returns 503 because the graph is the source of truth.
  • Optional automated backups for both FalkorDB and Qdrant.

Who uses it and how

  • Individual developers running Claude Desktop, Cursor, or Claude Code locally who want one memory shared across those tools instead of separate per-app histories.
  • Teams self-hosting on their own infrastructure so that memory is not locked to a single chat application, with both MCP and REST available to existing workflows.
  • Cloud agent deployments that connect through Remote MCP over HTTPS to ChatGPT Developer Mode, Claude.ai, or ElevenLabs.
  • Small deployments run as a Railway service group, which the README names as an alternative to local Docker and full self-hosting.
  • Agents with very long histories: on the independent Agent Memory Benchmark's BEAM long-context tests, AutoMem scored 57.4% at 10 million source tokens while the answerer received an average of roughly 2.6–4.8k retrieved tokens.

Getting started

Run AutoMem locally with Docker, on your own infrastructure, or as a small Railway service group. Both MCP and a REST API are exposed once the service is up.

How it compares

No list of paid products this project replaces is provided, and the facts name no similar tool. AutoMem therefore stands alone in this registry.

When to use it — and when not to

A self-hoster must operate FalkorDB and Qdrant alongside the Flask service, plus choose and pay for an embedding provider such as Voyage or OpenAI if a local one is not used; optional automated backups add another moving part. Because the graph is the source of truth, FalkorDB downtime means the API returns 503 rather than degrading gracefully. Anyone wanting a managed single-tenant service with no database operations, or a store that works without an embedding provider, should look elsewhere.

project readme (upstream, from github) — read inline

AutoMem

npm version License Discord X LoCoMo on the neutral Agent Memory Benchmark LongMemEval full on AutoMem's internal harness: 87.0% BEAM 10M on the neutral Agent Memory Benchmark Deploy on Railway

Long-term memory for AI assistants — fast, private, and yours.

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)

Deploy on Railway

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-aut

readme truncated — read the full docs on github

Frequently asked questions

Is automem free to use?

automem is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does automem do?

Long-term memory for AI assistants. Graph + vector store that recalls decisions, relationships, and context across sessions.

What is automem written in?

automem is primarily written in Python. Its source is publicly available at https://github.com/verygoodplugins/automem, and it has 813 GitHub stars.