The MemoryManager class enables agents to create, update, and recall long-term memories about users across sessions.
Constructor
from agno.memory import MemoryManager
from agno.db.sqlite import SQLiteDb
db = SQLiteDb( db_file = "agent.db" )
memory_manager = MemoryManager(
model = "gpt-4o" ,
db = db
)
Parameters
model
Model | str
default: "None"
Model used for memory extraction and management. Defaults to gpt-4o if not provided.
db
BaseDb | AsyncBaseDb
required
Database to store memories.
Custom system message for the memory manager.
memory_capture_instructions
Custom instructions for capturing memories.
Additional instructions appended to the system message.
Whether to allow adding new memories.
Whether to allow updating existing memories.
Whether to allow deleting memories.
Whether to allow clearing all memories.
Methods
get_user_memories()
Get all memories for a user.
memories = memory_manager.get_user_memories( user_id = "user_1" )
for memory in memories:
print ( f " { memory.topic } : { memory.content } " )
aget_user_memories()
Async version of get_user_memories().
memories = await memory_manager.aget_user_memories( user_id = "user_1" )
add_user_memory()
Add a new memory.
from agno.db.schemas import UserMemory
memory = UserMemory(
content = "User prefers dark mode" ,
topic = "preferences"
)
memory_id = memory_manager.add_user_memory(
memory = memory,
user_id = "user_1"
)
delete_user_memory()
Delete a specific memory.
memory_manager.delete_user_memory(
memory_id = "mem_123" ,
user_id = "user_1"
)
clear_user_memories()
Clear all memories for a user.
memory_manager.clear_user_memories( user_id = "user_1" )
clear()
Clear all memories from the database.
Agent Integration
from agno import Agent
from agno.memory import MemoryManager
from agno.db.sqlite import SQLiteDb
db = SQLiteDb( db_file = "agent.db" )
agent = Agent(
model = "gpt-4o" ,
db = db,
memory_manager = MemoryManager( db = db),
update_memory_on_run = True ,
add_memories_to_context = True
)
# Agent automatically creates and recalls memories
response = agent.run( "My favorite color is blue" , user_id = "user_1" )
response = agent.run( "What's my favorite color?" , user_id = "user_1" )
Example Usage
Basic Usage
Custom Instructions
Manual Memory Management
Multi-user
from agno import Agent
from agno.memory import MemoryManager
from agno.db.sqlite import SQLiteDb
db = SQLiteDb( db_file = "memories.db" )
agent = Agent(
model = "gpt-4o" ,
db = db,
memory_manager = MemoryManager( db = db),
update_memory_on_run = True ,
add_memories_to_context = True
)
# Conversation 1
response = agent.run( "I love pizza" , user_id = "alice" )
# Conversation 2 (different session, same user)
response = agent.run(
"What should I have for dinner?" ,
user_id = "alice" ,
session_id = "session_2"
)
# Agent recalls: "I remember you love pizza!"
UserMemory Schema
Memories are stored as UserMemory objects:
memory_id: Unique identifier
user_id: User the memory belongs to
content: The memory content
topic: Optional topic/category
metadata: Additional metadata
updated_at: Last update timestamp
Best Practices
Enable memory : Set update_memory_on_run=True for automatic memory creation
Add to context : Set add_memories_to_context=True for memory recall
User IDs : Always provide user_id for multi-user applications
Privacy : Implement proper access controls for user memories
Cleanup : Provide users a way to view and delete their memories
Topics : Use topics to organize different types of memories