Async PostgreSQL

Persist Agno sessions and other data asynchronously in PostgreSQL.

AsyncPostgresDb stores Agent, Team, and Workflow sessions, memories, knowledge, evaluations, and traces asynchronously in PostgreSQL.

Usage

Start in a virtual environment and set the model key before running the example.

Set OpenAI Key

Set your OPENAI_API_KEY as an environment variable. You can get one from OpenAI.

export OPENAI_API_KEY=sk-***

Install the sqlalchemy, psycopg, and openai packages:

uv pip install agno "sqlalchemy[asyncio]" "psycopg[binary]" openai
async_postgres_for_agent.py
from agno.agent import Agent
from agno.db.postgres import AsyncPostgresDb

db_url = "postgresql+psycopg_async://ai:ai@localhost:5532/ai"

db = AsyncPostgresDb(db_url=db_url)
agent = Agent(db=db)

Use async methods such as Agent.arun() and Agent.aprint_response() with this database.

Run PostgreSQL

Install Docker Desktop, then start PostgreSQL with pgvector on port 5532:

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

Parameters

ParameterTypeDefaultDescription
idOptional[str]-The ID of the database instance. UUID by default.
db_urlOptional[str]-The database URL to connect to.
db_engineOptional[AsyncEngine]-The SQLAlchemy async database engine to use.
db_schemaOptional[str]-The database schema to use.
session_tableOptional[str]-Name of the table to store Agent, Team and Workflow sessions.
runs_tableOptional[str]-Name of the table to store the runs of each session.
memory_tableOptional[str]-Name of the table to store memories.
metrics_tableOptional[str]-Name of the table to store metrics.
eval_tableOptional[str]-Name of the table to store evaluation runs data.
knowledge_tableOptional[str]-Name of the table to store knowledge content.
traces_tableOptional[str]-Name of the table to store traces.
spans_tableOptional[str]-Name of the table to store spans.
versions_tableOptional[str]-Name of the table to store schema versions.
components_tableOptional[str]-Name of the table to store components.
learnings_tableOptional[str]-Name of the table to store learnings.
schedules_tableOptional[str]-Name of the table to store cron schedules.
schedule_runs_tableOptional[str]-Name of the table to store schedule run history.
job_tableOptional[str]-Name of the table to store durable background run jobs.
approvals_tableOptional[str]-Name of the table to store human approval requests.
auth_tokens_tableOptional[str]-Name of the table to store OAuth tokens for external services.
service_accounts_tableOptional[str]-Name of the table to store service accounts.
create_schemaboolTrueWhether to create the database schema if it doesn't exist. Set to False when the schema is managed externally.