automem is a free, open source databases project written in Python and released under MIT. It has 826 GitHub stars, 111 forks and 11 open issues, and was last pushed 17 hours ago. On this registry it ranks #200 of 206 tracked projects in Databases, with 5 head-to-head comparisons available. It gained 5 stars over the last 30 tracked days.

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

→ 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=auto re-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 Entity nodes (IDENTITY_SYNTHESIS_ENABLED) are gated off while people-entity word-pair noise is addressed (#181).

Docs, community, and license

Setup

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

Operations

Community

Sibling repos

MIT licensed. Deploy anywhere. No vendor lock-in.

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 826 GitHub stars.