MemoryOS is designed to provide a memory operating system for personalized AI agents, enabling more coherent, personalized, and context-aware interactions. Drawing inspiration from memory management principles in operating systems, it adopts a hierarchical storage architecture with four core modules: Storage, Updating, Retrieval, and Generation, to achieve comprehensive and efficient memory management. On the LoCoMo benchmark, the model achieved average improvements of 49.11% and 46.18% in F1 and BLEU-1 scores.
- [new] 🔥 [2025-06-15]:🛠️ Open-sourced MemoryOS-MCP released! Now configurable on agent clients for seamless integration and customization. 👉 MemoryOS-MCP
- [2025-05-30]: 📄 Paper-Memory OS of AI Agent is available on arXiv: https://arxiv.org/abs/2506.06326.
- [2025-05-30]: Initial version of MemoryOS launched! Featuring short-term, mid-term, and long-term persona Memory with automated user profile and knowledge updating.
Type | Name | Open Source | Support | Configuration | Description |
---|---|---|---|---|---|
Agent Client | Claude Desktop | ❌ | ✅ | claude_desktop_config.json | Anthropic official client |
Cline | ✅ | ✅ | VS Code settings | VS Code extension | |
Cursor | ❌ | ✅ | Settings panel | AI code editor | |
Model Provider | OpenAI | ❌ | ✅ | OPENAI_API_KEY | GPT-4, GPT-3.5, etc. |
Anthropic | ❌ | ✅ | ANTHROPIC_API_KEY | Claude series | |
Deepseek | ✅ | ✅ | DEEPSEEK_API_KEY | Chinese large model | |
Qwen | ✅ | ✅ | QWEN_API_KEY | Alibaba Qwen | |
vLLM | ✅ | ✅ | Local deployment | Local model inference | |
Llama_factory | ✅ | ✅ | Local deployment | Local fine-tuning deployment |
All model calls use the OpenAI API interface; you need to supply the API key and base URL.
memoryos/
├── __init__.py # Initializes the MemoryOS package
├── __pycache__/ # Python cache directory (auto-generated)
├── long_term.py # Manages long-term persona memory (user profile, knowledge)
├── memoryos.py # Main class for MemoryOS, orchestrating all components
├── mid_term.py # Manages mid-term memory, consolidating short-term interactions
├── prompts.py # Contains prompts used for LLM interactions (e.g., summarization, analysis)
├── retriever.py # Retrieves relevant information from all memory layers
├── short_term.py # Manages short-term memory for recent interactions
├── updater.py # Processes memory updates, including promoting information between layers
└── utils.py # Utility functions used across the library
- Initialization:
Memoryos
is initialized with user and assistant IDs, API keys, data storage paths, and various capacity/threshold settings. It sets up dedicated storage for each user and assistant. - Adding Memories: User inputs and agent responses are added as QA pairs. These are initially stored in short-term memory.
- Short-Term to Mid-Term Processing: When short-term memory is full, the
Updater
module processes these interactions, consolidating them into meaningful segments and storing them in mid-term memory. - Mid-Term Analysis & LPM Updates: Mid-term memory segments accumulate "heat" based on factors like visit frequency and interaction length. When a segment's heat exceeds a threshold, its content is analyzed:
- User profile insights are extracted and used to update the long-term user profile.
- Specific user facts are added to the user's long-term knowledge.
- Relevant information for the assistant is added to the assistant's long-term knowledge base.
- Response Generation: When a user query is received:
- The
Retriever
module fetches relevant context from short-term history, mid-term memory segments, the user's profile & knowledge, and the assistant's knowledge base. - This comprehensive context is then used, along with the user's query, to generate a coherent and informed response via an LLM.
- The
- Python >= 3.10
- pip install -i https://pypi.org/simple/ MemoryOS-BaiJia
conda create -n MemoryOS python=3.10
conda activate MemoryOS
pip install -i https://pypi.org/simple/ MemoryOS-BaiJia
import os
from memoryos import Memoryos
# --- Basic Configuration ---
USER_ID = "demo_user"
ASSISTANT_ID = "demo_assistant"
API_KEY = "YOUR_OPENAI_API_KEY" # Replace with your key
BASE_URL = "" # Optional: if using a custom OpenAI endpoint
DATA_STORAGE_PATH = "./simple_demo_data"
LLM_MODEL = "gpt-4o-mini"
def simple_demo():
print("MemoryOS Simple Demo")
# 1. Initialize MemoryOS
print("Initializing MemoryOS...")
try:
memo = Memoryos(
user_id=USER_ID,
openai_api_key=API_KEY,
openai_base_url=BASE_URL,
data_storage_path=DATA_STORAGE_PATH,
llm_model=LLM_MODEL,
assistant_id=ASSISTANT_ID,
short_term_capacity=7,
mid_term_heat_threshold=5,
retrieval_queue_capacity=7,
long_term_knowledge_capacity=100
)
print("MemoryOS initialized successfully!\n")
except Exception as e:
print(f"Error: {e}")
return
# 2. Add some basic memories
print("Adding some memories...")
memo.add_memory(
user_input="Hi! I'm Tom, I work as a data scientist in San Francisco.",
agent_response="Hello Tom! Nice to meet you. Data science is such an exciting field. What kind of data do you work with?"
)
test_query = "What do you remember about my job?"
print(f"User: {test_query}")
response = memo.get_response(
query=test_query,
)
print(f"Assistant: {response}")
if __name__ == "__main__":
simple_demo()
Saves the content of the conversation between the user and the AI assistant into the memory system, for the purpose of building a persistent dialogue history and contextual record.
Retrieves related historical dialogues, user preferences, and knowledge information from the memory system based on a query, helping the AI assistant understand the user’s needs and background.
Obtains a user profile generated from the analysis of historical dialogues, including the user’s personality traits, interest preferences, and relevant knowledge background.
cd memoryos-mcp
pip install -r requirements.txt
Edit config.json
:
{
"user_id": "user ID",
"openai_api_key": "OpenAI API key",
"openai_base_url": "https://api.openai.com/v1",
"data_storage_path": "./memoryos_data",
"assistant_id": "assistant_id",
"llm_model": "gpt-4o-mini"
}
python server_new.py --config config.json
python test_comprehensive.py
Copy the mcp.json file over, and make sure the file path is correct.
command": "/root/miniconda3/envs/memos/bin/python"
#This should be changed to the Python interpreter of your virtual environment
Contributions are welcome! Please feel free to submit issues or pull requests.
📣 If you find this project useful, please consider citing our paper:
@misc{kang2025memoryosaiagent,
title={Memory OS of AI Agent},
author={Jiazheng Kang and Mingming Ji and Zhe Zhao and Ting Bai},
year={2025},
eprint={2506.06326},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2506.06326},
}
BaiJia AI is a research team guided by Associate Professor Bai Ting from Beijing University of Posts and Telecommunications, dedicated to creating emotionally rich and super-memory brains for AI agents. Cooperation and Suggestions: [email protected]
百家AI是北京邮电大学白婷副教授指导的研究小组, 致力于为硅基人类打造情感饱满、记忆超凡的大脑。
合作与建议:[email protected]
欢迎关注百家Agent公众号和微信群,共同交流!