# Neon (/database/providers/neon/overview)



Agno supports using [Neon](https://neon.com/) with the `PostgresDb` class.

You can get started with Neon following their [Get Started guide](https://neon.com/docs/get-started/signing-up).

You can also read more about the [`PostgresDb` class](/database/providers/postgres/overview) in its section.

## Usage [#usage]

Start in a [virtual environment](/sdk/setup).

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

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

Copy the connection string from your [Neon Console](https://neon.com/docs/connect/connect-from-any-app). Keep its encoded credentials and query options, including `sslmode=require`. Set it in the same shell used to run Python:

<CodeBlockTabs defaultValue="macOS / Linux">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="macOS / Linux">
      macOS / Linux
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="Windows">
      Windows
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="macOS / Linux">
    ```bash
    export NEON_DB_URL="postgresql://USER:ENCODED_PASSWORD@HOST/DATABASE?sslmode=require"
    ```
  </CodeBlockTab>

  <CodeBlockTab value="Windows">
    ```powershell
    $Env:NEON_DB_URL="postgresql://USER:ENCODED_PASSWORD@HOST/DATABASE?sslmode=require"
    ```
  </CodeBlockTab>
</CodeBlockTabs>

```python title="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 [#params]

| Parameter                        | Type               | Default | Description                                                                                                      |
| -------------------------------- | ------------------ | ------- | ---------------------------------------------------------------------------------------------------------------- |
| `id`                             | `Optional[str]`    | -       | The ID of the database instance. UUID by default.                                                                |
| `db_url`                         | `Optional[str]`    | -       | The database URL to connect to.                                                                                  |
| `db_engine`                      | `Optional[Engine]` | -       | The SQLAlchemy database engine to use.                                                                           |
| `db_schema`                      | `Optional[str]`    | -       | The database schema to use.                                                                                      |
| `session_table`                  | `Optional[str]`    | -       | Name of the table to store Agent, Team and Workflow sessions.                                                    |
| `runs_table`                     | `Optional[str]`    | -       | Name of the table to store the runs of each session.                                                             |
| `memory_table`                   | `Optional[str]`    | -       | Name of the table to store memories.                                                                             |
| `metrics_table`                  | `Optional[str]`    | -       | Name of the table to store metrics.                                                                              |
| `eval_table`                     | `Optional[str]`    | -       | Name of the table to store evaluation runs data.                                                                 |
| `knowledge_table`                | `Optional[str]`    | -       | Name of the table to store knowledge content.                                                                    |
| `traces_table`                   | `Optional[str]`    | -       | Name of the table to store traces.                                                                               |
| `spans_table`                    | `Optional[str]`    | -       | Name of the table to store spans.                                                                                |
| `versions_table`                 | `Optional[str]`    | -       | Name of the table to store schema versions.                                                                      |
| `components_table`               | `Optional[str]`    | -       | Name of the table to store components.                                                                           |
| `component_configs_table`        | `Optional[str]`    | -       | Name of the table to store component configurations.                                                             |
| `component_links_table`          | `Optional[str]`    | -       | Name of the table to store links between components.                                                             |
| `learnings_table`                | `Optional[str]`    | -       | Name of the table to store learnings.                                                                            |
| `schedules_table`                | `Optional[str]`    | -       | Name of the table to store cron schedules.                                                                       |
| `schedule_runs_table`            | `Optional[str]`    | -       | Name of the table to store schedule run history.                                                                 |
| `job_table`                      | `Optional[str]`    | -       | Name of the table to store durable background run jobs.                                                          |
| `approvals_table`                | `Optional[str]`    | -       | Name of the table to store human approval requests.                                                              |
| `auth_tokens_table`              | `Optional[str]`    | -       | Name of the table to store OAuth tokens for external services.                                                   |
| `service_accounts_table`         | `Optional[str]`    | -       | Name of the table to store service accounts.                                                                     |
| `mcp_oauth_clients_table`        | `Optional[str]`    | -       | Name of the table to store MCP OAuth client registrations.                                                       |
| `mcp_oauth_transactions_table`   | `Optional[str]`    | -       | Name of the table to store MCP OAuth transactions.                                                               |
| `mcp_oauth_codes_table`          | `Optional[str]`    | -       | Name of the table to store MCP OAuth authorization codes.                                                        |
| `mcp_oauth_refresh_tokens_table` | `Optional[str]`    | -       | Name of the table to store MCP OAuth refresh tokens.                                                             |
| `mcp_oauth_keys_table`           | `Optional[str]`    | -       | Name of the table to store MCP OAuth signing keys.                                                               |
| `create_schema`                  | `bool`             | `True`  | Whether to create the database schema if it doesn't exist. Set to `False` when the schema is managed externally. |
