Neon

Use Neon serverless PostgreSQL for agent session storage.

Agno supports using Neon with the PostgresDb class.

You can get started with Neon following their Get Started guide.

You can also read more about the PostgresDb class in its section.

Usage

Start in a virtual environment.

Install Agno, SQLAlchemy, the binary Psycopg driver, and the OpenAI client:

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

Copy the connection string from your Neon Console. Keep its encoded credentials and query options, including sslmode=require. Set it in the same shell used to run Python:

export NEON_DB_URL="postgresql://USER:ENCODED_PASSWORD@HOST/DATABASE?sslmode=require"
neon_for_agent.py
from agno.agent import Agent
from agno.db.postgres import PostgresDb
from os import environ
from sqlalchemy.engine import make_url

# Select Psycopg 3 while preserving the Console URL credentials and options.
NEON_DB_URL = make_url(environ["NEON_DB_URL"]).set(
    drivername="postgresql+psycopg"
).render_as_string(hide_password=False)

# Setup the Neon database
db = PostgresDb(db_url=NEON_DB_URL)

# Setup your Agent with the Database
agent = Agent(db=db)

Params

ParameterTypeDefaultDescription
idOptional[str]-The ID of the database instance. UUID by default.
db_urlOptional[str]-The database URL to connect to.
db_engineOptional[Engine]-The SQLAlchemy 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.
component_configs_tableOptional[str]-Name of the table to store component configurations.
component_links_tableOptional[str]-Name of the table to store links between 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.
mcp_oauth_clients_tableOptional[str]-Name of the table to store MCP OAuth client registrations.
mcp_oauth_transactions_tableOptional[str]-Name of the table to store MCP OAuth transactions.
mcp_oauth_codes_tableOptional[str]-Name of the table to store MCP OAuth authorization codes.
mcp_oauth_refresh_tokens_tableOptional[str]-Name of the table to store MCP OAuth refresh tokens.
mcp_oauth_keys_tableOptional[str]-Name of the table to store MCP OAuth signing keys.
create_schemaboolTrueWhether to create the database schema if it doesn't exist. Set to False when the schema is managed externally.