Agentic Memory Management
Enable enable_agentic_memory so the agent itself creates, updates, and deletes user memories during a run.
Agentic memory lets the agent request memory updates through a tool. The default manager permits adding and updating memories; enable deletion explicitly to run the removal request in this example.
"""
Agentic Memory Management
=========================
This example shows how to use agentic memory with an Agent.
During each run, the Agent can create, update, and delete user memories.
"""
from agno.agent.agent import Agent
from agno.db.postgres import PostgresDb
from agno.models.openai import OpenAIChat
from rich.pretty import pprint
# ---------------------------------------------------------------------------
# Setup
# ---------------------------------------------------------------------------
db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
db = PostgresDb(db_url=db_url)
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
agent = Agent(
model=OpenAIChat(id="gpt-5.6-luna"),
db=db,
enable_agentic_memory=True,
)
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
john_doe_id = "john_doe@example.com"
agent.print_response(
"My name is John Doe and I like to hike in the mountains on weekends.",
stream=True,
user_id=john_doe_id,
)
agent.print_response("What are my hobbies?", stream=True, user_id=john_doe_id)
memories = agent.get_user_memories(user_id=john_doe_id)
print("Memories about John Doe:")
pprint(memories)
agent.print_response(
"Remove all existing memories of me.",
stream=True,
user_id=john_doe_id,
)
memories = agent.get_user_memories(user_id=john_doe_id)
print("Memories about John Doe:")
pprint(memories)
agent.print_response(
"My name is John Doe and I like to paint.", stream=True, user_id=john_doe_id
)
memories = agent.get_user_memories(user_id=john_doe_id)
print("Memories about John Doe:")
pprint(memories)
agent.print_response(
"I don't paint anymore, i draw instead.", stream=True, user_id=john_doe_id
)
memories = agent.get_user_memories(user_id=john_doe_id)
print("Memories about John Doe:")
pprint(memories)Enable the deletion demonstrated below
Before running the saved script, add this import and replace its agent = Agent(...) definition with:
from agno.memory import MemoryManager
agent = Agent(
model=OpenAIChat(id="gpt-5.6-luna"),
db=db,
memory_manager=MemoryManager(db=db, delete_memories=True, clear_memories=True),
enable_agentic_memory=True,
)The manager can now delete individual memories or clear memories for the current user_id. The model still chooses whether to call these tools; inspect get_user_memories() to verify the requested change.
Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno "psycopg[binary]" openai sqlalchemyExport your OpenAI API key
export OPENAI_API_KEY="your_openai_api_key_here"Run PgVector
docker run -d \
-e POSTGRES_DB=ai \
-e POSTGRES_USER=ai \
-e POSTGRES_PASSWORD=ai \
-e PGDATA=/var/lib/postgresql \
-v pgvolume:/var/lib/postgresql \
-p 5532:5432 \
--name pgvector \
agnohq/pgvector:18Run the example
Save the code above as agentic_memory.py, then run:
python agentic_memory.pyFull source: cookbook/11_memory/02_agentic_memory.py