Mem0 Integration

Seed a Mem0 cloud memory client with user facts and inject the retrieved memories into an Agno agent's context via dependencies.

Demonstrates using Mem0 as an external memory service for an Agno agent.

mem0_integration.py
"""
Mem0 Integration
================

Demonstrates using Mem0 as an external memory service for an Agno agent.
"""

from agno.agent import Agent, RunOutput
from agno.models.openai import OpenAIChat
from agno.utils.pprint import pprint_run_response

try:
    from mem0 import MemoryClient
except ImportError:
    raise ImportError(
        "mem0 is not installed. Please install it using `uv pip install mem0ai`."
    )


# ---------------------------------------------------------------------------
# Setup
# ---------------------------------------------------------------------------
client = MemoryClient()

user_id = "agno"
messages = [
    {"role": "user", "content": "My name is John Billings."},
    {"role": "user", "content": "I live in NYC."},
    {"role": "user", "content": "I'm going to a concert tomorrow."},
]

# Comment out the following line after running the script once
client.add(messages, user_id=user_id)


# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
agent = Agent(
    model=OpenAIChat(),
    dependencies={"memory": client.get_all(user_id=user_id)},
    add_dependencies_to_context=True,
)


# ---------------------------------------------------------------------------
# Run Example
# ---------------------------------------------------------------------------
if __name__ == "__main__":
    run: RunOutput = agent.run("What do you know about me?")
    pprint_run_response(run)

    input = [{"role": i.role, "content": str(i.content)} for i in (run.messages or [])]
    client.add(messages, user_id=user_id)

Current Mem0 API

Before running the copied recipe, replace its dependency lookup with the current filtered, paginated API:

agent = Agent(
    model=OpenAIChat(),
    dependencies={
        "memory": client.get_all(filters={"user_id": user_id}, page=1, page_size=50)["results"]
    },
    add_dependencies_to_context=True,
)

This loads one page of memories when the agent is constructed. Fetch subsequent pages if needed; refresh the dependency on later runs if the stored memories change. Mem0 processes writes asynchronously: wait for the seed write's event to finish before fetching its results. See the Mem0 migration guide for the event-status endpoint and pagination contract.

The final client.add(messages, ...) in the source repeats the seed data. To save this run's conversation instead, replace that final call with:

conversation = [
    {"role": message.role, "content": str(message.content)}
    for message in (run.messages or [])
    if message.role in {"user", "assistant"} and message.content
]
client.add(conversation, user_id=user_id)

Use a separate user ID for each user whose memories you store.

Run the Example

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Install dependencies

uv pip install -U agno mem0ai openai

Export your API keys

export MEM0_API_KEY="your_mem0_api_key_here"
export OPENAI_API_KEY="your_openai_api_key_here"

Run the example

Save the code above as mem0_integration.py, then run:

python mem0_integration.py

Full source: cookbook/11_memory/integrations/mem0_integration.py