Save Agent to Database

Persist an agent to PostgresDb with agent.save(), which returns a new version number on each save.

Demonstrates creating an agent and saving it to the database.

save_agent.py
"""
Save Agent to Database
======================

Demonstrates creating an agent and saving it to the database.
"""

from agno.agent.agent import Agent
from agno.db.postgres import PostgresDb
from agno.models.openai import OpenAIChat

# ---------------------------------------------------------------------------
# Setup
# ---------------------------------------------------------------------------
db = PostgresDb(db_url="postgresql+psycopg://ai:ai@localhost:5532/ai")

# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
agent = Agent(
    id="agno-agent",
    model=OpenAIChat(id="gpt-5-mini"),
    name="Agno Agent",
    db=db,
)

# ---------------------------------------------------------------------------
# Run Agent Save Example
# ---------------------------------------------------------------------------
if __name__ == "__main__":
    # agent.print_response("How many people live in Canada?")

    # Save the agent to the database
    version = agent.save()
    print(f"Saved agent as version {version}")

    # By default, saving a agent will create a new version of the agent

    # Delete the agent from the database (soft delete by default)
    # agent.delete()

    # Hard delete (permanently removes from database)
    # agent.delete(hard_delete=True)

Run the Example

Set up your virtual environment

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

Install dependencies

uv pip install -U agno "psycopg[binary]" openai sqlalchemy

Export 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:18

Run the example

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

python save_agent.py

Full source: cookbook/93_components/save_agent.py