Agent with Memory
Give agents persistent memory across sessions.
The local database setup below requires Docker. Use a disposable database: this example calls db.clear_memories(), which clears the entire memory table, including other users' records.
Set update_memory_on_run=True to run MemoryManager on every agent run. The manager can create, update, or delete user memories based on the latest input.
Code
from uuid import uuid4
from agno.agent import Agent
from agno.db.postgres import PostgresDb
from agno.models.openai import OpenAIResponses
from rich.pretty import pprint
db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
db = PostgresDb(db_url=db_url)
db.clear_memories()
session_id = str(uuid4())
john_doe_id = "john_doe@example.com"
agent = Agent(
model=OpenAIResponses(id="gpt-5.2"),
db=db,
update_memory_on_run=True,
)
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,
session_id=session_id,
)
agent.print_response(
"What are my hobbies?", stream=True, user_id=john_doe_id, session_id=session_id
)
memories = agent.get_user_memories(user_id=john_doe_id)
print("John Doe's memories:")
pprint(memories)
agent.print_response(
"I don't like hiking anymore. I like to play soccer instead.",
stream=True,
user_id=john_doe_id,
session_id=session_id,
)
memories = agent.get_user_memories(user_id=john_doe_id)
print("John Doe's memories:")
pprint(memories)Usage
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateSet your API key
export OPENAI_API_KEY=xxxInstall dependencies
uv pip install -U agno openai sqlalchemy 'psycopg[binary]'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 example
python agent_with_memory.py