Introduction
"More than memory — it's foresight."
This is Part 36 of the "Open Source Project of the Day" series. Today we explore EverMemOS (GitHub).
Conversational Agents with only "current turn" context forget everything between sessions and can't share state across platforms — making true long-term companionship and personalization difficult. EverMemOS is EverMind-AI's open-source long-term memory operating system: structurally extracting memories from conversations (Encoding), organizing and consolidating them by episodes and profiles (Consolidation), and intelligently retrieving them for context injection when needed (Retrieval) — supporting memory types including episodic memory, facts, preferences, and relationships. It achieves 93% reasoning accuracy on the LoCoMo long-context memory benchmark, uses production-grade components like Milvus, Elasticsearch, MongoDB, and Redis, integrates with any LLM via a REST API, and is designed as a cross-LLM, cross-platform Agent memory foundation.
Why it's worth checking out:
- 🎯 93% LoCoMo accuracy: Leading performance on the long-context memory and reasoning benchmark
- 🏗️ Production-grade stack: Milvus vector store, Elasticsearch, MongoDB, Redis — enterprise-ready
- 🔌 Easy integration: REST API, model-agnostic, works with any LLM
- 📊 Multi-modal memory: Episodes, Facts, Preferences, Relations
- 🔍 Multiple retrieval methods: BM25, vector, hybrid, Agentic retrieval — configurable
- 📄 Paper and documentation: Architecture overview, API docs, Demo, evaluation guide
What You'll Learn
- EverMemOS's positioning and three-stage pipeline (Encoding → Consolidation → Retrieval)
- Multi-modal memory types and retrieval strategies (lightweight vs. Agentic)
- Quick start: Docker + uv, environment variables, starting the service and health checks
- Basic API usage: writing memories, retrieving by query
- Demo and evaluation: simple_demo, extract_memory, chat_with_memory; LoCoMo/LongMemEval/PersonaMem
- Project structure, key configuration, and extension directions (Memory Genesis Competition 2026)
Prerequisites
- Basic understanding of LLMs, Agents, and RAG
- Familiarity with vector retrieval and BM25 is helpful
- Local requirements: Python 3.10+, Docker 20.10+, uv, ~4GB RAM
Project Background
Project Introduction
EverMemOS's slogan is "Long-term memory OS for your agents across LLMs and platforms". It addresses the problem of Agents lacking cross-session, cross-platform, reasoning-capable long-term memory.
Through three pipelines:
- Encoding: Extracts structured memories (events, facts, preferences, relationships, etc.) from conversations
- Consolidation: Organizes memories into Episodes and Profiles for long-term maintenance and updates
- Retrieval: Intelligently retrieves relevant memories by query and injects into context when needed, supporting BM25, vector, hybrid, and Agentic strategies
This realizes "not just remembering what happened, but understanding the meaning of memories and using them to guide decisions." Achieves 93% reasoning accuracy on the LoCoMo (Long-Context Memory) benchmark, outperforming similar memory systems.
Target users:
- Developers who need to add long-term memory to conversational Agents
- Architects who want memory decoupled from LLMs and platforms for reusability
- Products and researchers needing multi-modal memory (episodes, facts, preferences, relationships) and multiple retrieval methods
- Teams pursuing production-grade deployment (vector stores, search engines, persistence)
Author/Team Introduction
- Team: EverMind-AI (evermind.ai)
- Repository: EverMind-AI/EverMemOS
- Community: Discord, WeChat, X, LinkedIn, Hugging Face, Reddit (see README)
- Recent: Hosting Memory Genesis Competition 2026 (tracks: Agent+Memory, Platform Plugins, OS Infrastructure, etc.)
Project Stats
- ⭐ GitHub Stars: ~2.3k
- 🍴 Forks: ~246
- 📦 Version: v1.2.0 (API enhancements and DB efficiency improvements, see Changelog)
- 📄 License: Apache-2.0
- 🌐 Website: evermind.ai
- 📚 Documentation: Quick Start, Configuration, API Usage, Development, Memory API, Demo, Evaluation
Tech stack: Python (~99.9%), Docker, FastAPI, MongoDB, Elasticsearch, Milvus, Redis.
Main Features
Core Purpose
EverMemOS's core purpose is to provide Agents with cross-LLM, cross-platform long-term memory capabilities, including:
- Memory writing: Write individual or batched conversations/messages into the system, triggering extraction and storage
- Structured extraction: Use LLMs to extract Episodes, Facts, Preferences, Relations, etc. from natural language
- Organization and consolidation: Organize memories by episodes and user/entity profiles, supporting incremental updates
- Intelligent retrieval: Retrieve relevant memories by natural language query, supporting BM25, vector, hybrid, Agentic
- REST API: Standard HTTP interface for connecting with frontends, any LLM, or platforms
This enables Agents to maintain "memorable, retrievable, usable" memory across multi-turn, multi-session, multi-device scenarios.
Use Cases
-
Conversational assistants
- User preferences, historical topics, and important facts preserved across sessions — responses become more consistent and personalized
-
Customer service and support
- Record user issues, resolutions, device/account information — automatically bring relevant memories on next contact
-
Personal/team knowledge Agents
- Distill documents, meetings, and conversations into episodes and facts — retrieve and augment generation on demand
-
Multi-Agent collaboration
- Shared or role-isolated memory layer — different Agents reuse the same memory OS
-
Research and evaluation
- Reproduce and compare memory/reasoning performance on LoCoMo, LongMemEval, PersonaMem, and other benchmarks
Quick Start
Requirements: Python 3.10+, Docker 20.10+, uv, 4GB RAM.
# 1. Clone and enter directory
git clone https://github.com/EverMind-AI/EverMemOS.git
cd EverMemOS
# 2. Start Docker dependencies (MongoDB, Elasticsearch, Milvus, Redis, etc.)
docker compose up -d
# 3. Install uv and project dependencies
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
# 4. Configure API keys
cp env.template .env
# Edit .env: LLM_API_KEY (for memory extraction), VECTORIZE_API_KEY (for vectorization/reranking), etc.
# 5. Start service
uv run python src/run.py
# 6. Health check
curl http://localhost:1995/health
# Expected: {"status": "healthy", ...}Service runs at http://localhost:1995 by default. See Getting Started for complete steps.
Basic API Usage
Write a conversation memory:
import requests
API_BASE = "http://localhost:1995/api/v1"
# Write a single message (system extracts and stores)
requests.post(f"{API_BASE}/memories", json={
"message_id": "msg_001",
"create_time": "2025-02-01T10:00:00+00:00",
"sender": "user_001",
"content": "I love playing soccer on weekends"
})Retrieve memories by query:
# Retrieve memories related to "what sports the user likes"
response = requests.get(f"{API_BASE}/memories/search", json={
"query": "What sports does the user like?",
"user_id": "user_001",
"memory_types": ["episodic_memory"],
"retrieve_method": "hybrid" # Options: bm25, embedding, hybrid, agentic, etc.
})
result = response.json().get("result", {})
for memory_group in result.get("memories", []):
print(memory_group)For more examples and complete API, see the API Usage Guide and Memory API.
Core Features
-
93% LoCoMo accuracy
- Outperforms existing memory systems on long-context memory and single-hop/multi-hop reasoning benchmarks
-
Production-grade infrastructure
- Milvus: Vector storage and retrieval
- Elasticsearch: Full-text/keyword retrieval (e.g., BM25)
- MongoDB: Structured memory and metadata
- Redis: Caching and sessions
-
LLM-agnostic
- Integrates via REST API — any LLM or platform can act as the "frontend," with the memory layer uniformly provided by EverMemOS
-
Multi-modal memory
- Episodes: Episodic memory (what happened, when, where)
- Facts: Factual memory
- Preferences: User preferences
- Relations: Relationships between entities
-
Multiple retrieval strategies
- BM25, vector retrieval, hybrid, Agentic (Agent decides retrieval and reranking) — choose lightweight or strong reasoning per scenario
-
Group chat and metadata
- Supports multi-speaker conversations and session metadata control for group, channel, and thread scenarios
-
Batch processing and evaluation
- Batch write and evaluation scripts supporting LoCoMo, LongMemEval, PersonaMem, and other benchmarks
-
Docker + uv
- One-click startup of dependency services, Python environment managed by uv for easy local and CI reproduction
Project Advantages
| Comparison | EverMemOS | Conversation history / simple KV | Custom vector + RAG |
|---|---|---|---|
| Memory structure | Multi-modal (episodes/facts/preferences/relations) | Mostly raw text | Implementation-dependent |
| Reasoning capability | LoCoMo 93%, specifically optimized for memory reasoning | No benchmark | Self-testing required |
| Retrieval methods | BM25 + vector + hybrid + Agentic | Mostly keyword or simple vector | Self-developed |
| Production components | Milvus + ES + MongoDB + Redis | Often single-machine/single-DB | Self-selected |
| Integration method | REST API, LLM-agnostic | Often tied to a specific LLM | Architecture-dependent |
| Documentation and evaluation | Full documentation + multi-benchmark reproduction | Minimal | Project-dependent |
Why choose EverMemOS?
- Focused on "long-term memory OS" — closes the loop from extraction, organization to retrieval, backed by papers and benchmarks
- Production-grade components and API design, suitable as a direct product memory layer or for secondary development
- Cross-LLM, cross-platform — build once, use across multiple endpoints
- Active open-source community with competitions and multilingual community (Discord, WeChat, etc.)
Detailed Project Analysis
Architecture Overview (Three Stages)
The core pipeline from README and documentation:
-
Encoding
- Input: Conversation messages (individual or batch)
- Process: Calls LLM for structured extraction, yielding Episodes, Facts, Preferences, Relations, etc.
- Output: Structured memories written to storage (MongoDB, etc.), vectors written to Milvus, full text to Elasticsearch (configurable)
-
Consolidation
- Organizes memories by episodes and profiles (Profiles)
- Supports incremental updates, deduplication, and merging to form a long-term usable memory graph
-
Retrieval
- Input: Natural language query, user_id, memory types, retrieval method, etc.
- Process: BM25 (ES) + vector (Milvus) + optional reranking and Agentic decision
- Output: List of relevant memories for the caller to inject into LLM context
Overall, EverMemOS acts as a "memory middleware layer" between the conversation/frontend and LLM: the frontend or Agent writes messages into EverMemOS, retrieves from EverMemOS when needed, and injects the results into the prompt before calling the LLM.
Project Structure (Overview)
src/: Core service entry (e.g.,run.py), API, encoding/consolidation/retrieval logicdata/,data_format/: Sample data and data format documentationdemo/: simple_demo, extract_memory, chat_with_memory and other scriptsdocs/: Development documentation, configuration, API, architecture overviewevaluation/: LoCoMo, LongMemEval, PersonaMem evaluation scripts and documentationconfig.json,env.template: Service and dependency configurationdocker-compose.yaml: MongoDB, Elasticsearch, Milvus, Redis, etc.
Retrieval Strategies Overview
- BM25: Elasticsearch-based keyword/full-text retrieval — good for exact terms and proper nouns
- Embedding: Vector retrieval — good for semantic similarity and paraphrases
- Hybrid: Combines BM25 and vector — commonly used as a default balanced solution
- Agentic: LLM/Agent participates in retrieval or reranking — good for complex queries and multi-step reasoning, at higher cost
Selected via retrieve_method and other API parameters. See the API documentation for details.
Demo and Evaluation
Running the simple Demo:
# Terminal 1: Start API
uv run python src/run.py
# Terminal 2: Run simple demo
uv run python src/bootstrap.py demo/simple_demo.pyFull experience: First run extract_memory.py to extract memories from sample data, then chat_with_memory.py for interactive conversation with memory. See the Demo Guide for details.
Evaluation (LoCoMo example):
uv sync --group evaluation
uv run python -m evaluation.cli --dataset locomo --system evermemos --smoke # Quick smoke test
uv run python -m evaluation.cli --dataset locomo --system evermemos # Full evaluation
cat evaluation/results/locomo-evermemos/report.txtSee the Evaluation Guide for details.
Key Configuration Notes
.env: Copied fromenv.template, requires LLM_API_KEY (for extraction) and VECTORIZE_API_KEY (for vectorization/reranking); other service addresses use Docker Compose defaults.config.json: Service port, storage connections, default retrieval parameters, etc. See the Configuration Guide.
Memory Genesis Competition 2026
An open-source competition hosted by EverMind-AI, with tracks including: Agent + Memory (agents with long-term memory), Platform Plugins (VSCode, Chrome, Slack, Notion, LangChain integrations, etc.), OS Infrastructure (core features and performance optimization). Form teams and get a Starter Kit via Discord. See README for details.
Project Resources
Official Resources
- 🌟 GitHub: https://github.com/EverMind-AI/EverMemOS
- 🌐 Website: evermind.ai
- 📚 Documentation: Quick Start, Configuration, API Usage, Memory API, Demo, Evaluation
- 💬 Community: Discord, WeChat, X, LinkedIn, Hugging Face, Reddit
- 🐛 Issues: GitHub Issues
Related Resources
- Paper and vision: Paper, Vision & Overview, Architecture linked in README
- DeepWiki: Ask DeepWiki for AI Q&A about the repository
- GitHub Codespaces: Supported on 4-core+ machines for immediate use — see README
Who Should Use This
- Agent and conversational system developers: Need long-term memory, multi-modal memory, and reproducible benchmarks
- Architects: Designing a unified memory layer for multiple LLMs and platforms
- Researchers: Conducting experiments and comparisons on memory, reasoning, and RAG
- Competition and plugin developers: Participating in Memory Genesis 2026 or building VSCode/Chrome/LangChain integrations
Welcome to visit my personal homepage for more useful knowledge and interesting products