> ## Documentation Index
> Fetch the complete documentation index at: https://agno-v2-service-account.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Agent With Persistent Memory

> Use persistent memory with an Agent.

Use persistent memory with an Agent. After each run, user memories are created or updated.

```python agent_with_memory.py theme={null}
"""
Agent With Persistent Memory
============================

This example shows how to use persistent memory with an Agent.
After each run, user memories are created or updated.
"""

import asyncio
from uuid import uuid4

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-4o-mini"),
    db=db,
    update_memory_on_run=True,
)

# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
    db.clear_memories()

    session_id = str(uuid4())
    john_doe_id = "john_doe@example.com"

    asyncio.run(
        agent.aprint_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(
        "Ok i dont 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)
```

## Run the Example

<Steps>
  <Snippet file="create-venv-step.mdx" />

  <Step title="Install dependencies">
    ```bash theme={null}
    uv pip install -U agno openai psycopg-binary sqlalchemy
    ```
  </Step>

  <Step title="Export your OpenAI API key">
    <CodeGroup>
      ```bash Mac/Linux theme={null}
      export OPENAI_API_KEY="your_openai_api_key_here"
      ```

      ```bash Windows theme={null}
      $Env:OPENAI_API_KEY="your_openai_api_key_here"
      ```
    </CodeGroup>
  </Step>

  <Snippet file="run-pgvector-step.mdx" />

  <Step title="Run the example">
    Save the code above as `agent_with_memory.py`, then run:

    ```bash theme={null}
    python agent_with_memory.py
    ```
  </Step>
</Steps>

Full source: [cookbook/11\_memory/01\_agent\_with\_memory.py](https://github.com/agno-agi/agno/blob/main/cookbook/11_memory/01_agent_with_memory.py)
