Setting Up the Supabase Connector

Give your agents a scratchpad database they can read and write to — using a Supabase project you control.

September 18, 2026
6 min read

What this connector does

The Supabase connector points Wazzi at a Postgres database you own — a project in your own Supabase account. It gives agents a scratchpad they can read and write freely: intermediate results, structured outputs, workspace state, anything that doesn't belong in your operational systems.

Wazzi does not host this database. You control the data, the schema, and who has access. If you delete the Supabase project, the connector goes with it.

What agents can do here

  • Schema: list, describe, create, alter, and drop tables and indexes
  • Data: select, insert, update, delete, upsert, and count rows
  • Advanced: run raw SQL and inspect query plans (can be gated separately per agent)

Setup — 3 steps, about 5 minutes

Step 1 — Create a Supabase project

If you don't already have one, sign up for a free Supabase account at supabase.com and create a new project. The Free tier is enough for a scratchpad database and includes 500 MB of storage and the pooler we'll be connecting through.

When Supabase prompts you for a database password, pick a strong one and save it — you'll paste it into the connection string in Step 2.

Screenshots and full step-by-step visuals: Supabase — Getting Started.

Step 2 — Copy the Session pooler connection string

Important — pick the right connection type. Supabase offers three:

  • ✅ Session pooler (port 6543) — use this one. Resolves to IPv4, supports every Postgres feature Wazzi needs.
  • ⚠️ Transaction pooler (port 6543) — also IPv4, but breaks prepared statements. Don't use.
  • ❌ Direct connection (port 5432) — IPv6-only on Supabase. Will fail from most cloud environments (including Wazzi's). Don't use.

Inside your Supabase project:

  1. Open Project Settings (gear icon, bottom left)
  2. Go to Database in the left sidebar
  3. Scroll to Connection String
  4. Select the Session pooler tab (port 6543)
  5. Click the copy icon next to the URI
  6. Replace [YOUR-PASSWORD] in the copied string with the password you set in Step 1

The result looks like:
postgresql://postgres.abcdefgh:YourPassword@aws-0-us-east-1.pooler.supabase.com:6543/postgres

Screenshots and step-by-step visuals: Supabase — Connect to your database (see the "Shared Pooler" section).

Step 3 — Add the connector in Wazzi

  1. In the Wazzi Admin Center, go to Connectors
  2. Find Supabase in the catalog and click Add
  3. Paste the connection string from Step 2 into the Connection String field
  4. Leave Schema blank to use the default public schema, or enter a schema name if you set up a dedicated one (see Optional: dedicated schema for power users below)
  5. Click Test Connection — you should see a green Connected message that names the Postgres version and the schema agents will be writing to
  6. Click Save
Wazzi Admin Center Supabase connector edit page
Paste the connection string, optionally set a schema, then click Test Connection.

Granting agents access to tools

Once the connector is configured, individual tools still need to be granted to the users or agents that should use them. Do this in Access Groups — the standard permissions flow for every Wazzi connector.

The connector exposes 15 tools grouped by risk level. A typical setup:

  • Read-only agents: grant list_tables, describe_table, select_rows, count_rows, list_indexes, explain_query
  • Read/write agents: add insert_rows, update_rows, delete_rows, upsert_rows
  • Schema-managing agents: add create_table, alter_table, drop_table, create_index
  • Trusted power agents only: grant execute_sql. This tool runs arbitrary SQL and bypasses the typed-tool guardrails — grant it deliberately.

Optional: dedicated schema for power users

By default, agents work in the public schema — the same one your own apps might be using. If you want agent-created tables isolated from everything else, create a dedicated schema and a Postgres role that owns it.

In the Supabase SQL Editor, run:

CREATE ROLE wazzi_agent WITH LOGIN PASSWORD 'pick-a-strong-password';
CREATE SCHEMA wazzi_agent AUTHORIZATION wazzi_agent;
GRANT USAGE ON SCHEMA wazzi_agent TO wazzi_agent;
ALTER ROLE wazzi_agent SET search_path = wazzi_agent;

Then in Wazzi, update the connector config:

  • Connection String: replace postgres.abcdefgh (the default role) with wazzi_agent.abcdefgh, and swap the password to the one you just set
  • Schema: enter wazzi_agent

Click Test Connection again to confirm. Agents can now only see and modify tables inside the wazzi_agent schema.


Troubleshooting

Test Connection says "Hostname didn't resolve"

Most common cause: you copied the Direct connection string (port 5432) instead of the Session pooler (port 6543). Supabase's direct connections are IPv6-only, and Wazzi's cloud environment egresses over IPv4, so DNS returns no reachable address and the connection fails before it starts.

Fix: go back to Supabase → Project Settings → Database → Connection String, click the Session pooler tab, copy that URI, re-save the connector. The hostname should look like aws-0-<region>.pooler.supabase.com and the port should be 6543 — not db.<ref>.supabase.co on port 5432.

Other possibilities: a typo in the hostname, or the project has been paused/deleted in Supabase. Re-copy the string fresh from the Supabase dashboard.

Test Connection says "Password rejected"

Double-check the password portion of the connection string. Supabase's copy button leaves [YOUR-PASSWORD] as a placeholder — you have to replace it manually. If you've forgotten the password, reset it in Supabase → Project Settings → Database → Database Password → Reset database password.

Test Connection says "Connection timed out"

The pooler host is unreachable within 10 seconds. Verify the port is 6543 (Session pooler) and not 5432 (Direct — see above). Also check status.supabase.com for a live incident.

Test Connection says "Schema does not exist"

Either create the schema (see Optional: dedicated schema above) or clear the Schema field to fall back to public.

Agents say "permission denied for table X"

You're using a dedicated role (like wazzi_agent) and it doesn't have access to that table. Either grant it in Supabase (GRANT SELECT ON X TO wazzi_agent) or switch the connector back to the default postgres role.

A tool times out after 30 seconds

Wazzi enforces a 30-second statement timeout on every query. If a legitimate query needs more, split it up or add an index using create_index.


Costs and limits

  • Supabase Free tier — 500 MB storage, unlimited API requests, plenty for a scratchpad. Paid plans start at $25/month if you need more storage.
  • Wazzi — no per-connector cost. Standard tool-call pricing applies.
  • Row limits — select_rows returns up to 1,000 rows by default, 10,000 max. Larger reads should paginate.
  • Statement timeout — 30 seconds per query, enforced by Wazzi.

Related articles

Was this article helpful?