Skip to content

verygoodplugins/automem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

344 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoMem

npm version License Discord X LoCoMo benchmark Deploy on Railway

Long-term memory for AI assistants. Graph + vector. Runs on your hardware.

AutoMem

Your AI forgets between sessions. RAG dumps documents that look similar. Vector databases match keywords but miss meaning. None of them learn.

AutoMem stores typed relationships and embeddings. When you ask "why did we choose PostgreSQL?", recall returns not just the matching memory — but the alternatives you considered, the principle behind the choice, and the related decisions that came after.

It scores 89.27% on the LoCoMo long-term memory benchmark (ACL 2024) judge-off, and 87.56% judge-on. See benchmarks/EXPERIMENT_LOG.md for methodology and history.

Additional LongMemEval and BEAM validation is tracked in benchmarks/EXPERIMENT_LOG.md; BEAM is currently reported as exploratory because published comparisons are not yet apples-to-apples.

Should you use AutoMem?

Use AutoMem if... Look elsewhere if...
You want one memory across Claude / Cursor / ChatGPT / Codex You need SOC2 / HIPAA audit logs and row-level ACLs
You're comfortable self-hosting (Docker or Railway) You want a managed SaaS with a polished dashboard
You're a solo dev, prosumer, or small team You're running a multi-agent swarm needing per-agent memory isolation
You want to own your memory data You need an enterprise SLA and dedicated support

If your row is on the right, AutoMem isn't it — yet. Try Mem0, Letta, or Zep instead.

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
Loading

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

Deploys four services from pre-built Docker images: automem (the API), falkordb (graph), qdrant (vectors), and mcp-automem (the MCP bridge for ChatGPT, Claude.ai, and ElevenLabs). Auto-redeploys nightly on :stable. Roughly $0.50/month after the $5 free trial.

→ 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

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.

Docs, community, and license

Setup

API and integration

Research and comparison

Operations

Community

Sibling repos

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

About

AutoMem is a graph-vector memory service that gives AI assistants durable, relational memory:

Topics

Resources

License

Stars

Watchers

Forks

Contributors