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
agent_with_memory.py
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
1
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activate
uv venv --python 3.12
.venv\Scripts\activate
2
Set your API key
export OPENAI_API_KEY=xxx
3
Install dependencies
uv pip install -U agno openai sqlalchemy 'psycopg[binary]'
4
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:18
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:18
5
Run example
python agent_with_memory.py