ax-check.com
by Gauge
S
Supabase
supabase.com
ax-check.com
Checked 27 September 2026
A
100/100
Agents need your login
Supabase quickstart works end-to-end, pricing stated upfront.
All 23 checklist items passed: docs, install commands, and API keys are explicit, and pricing tiers (Free $0, Pro $25/mo, Team $599/mo) are readable without login.
1 fix to start with
Concrete changes, backed by what we found.
Recorded coding sessions
Same task, 3 models, no supabase.com account. Recorded 27 September 2026 on Pi.
3 recorded · 1m 46s
1m 46s · recorded
Session findings
Select a finding to see it in context.
›Thinking…
The user is asking for a simple Supabase example. I don't have Supabase credentials, and no API key either. Let me check the environment/repository first.
Main constraints: keep it lightweight, use the hosted product via SDK/API, don't use local service stacks. However, I don't have credentials for a hosted Supabase project. Let me check if there are environment variables.
✓$ cd /sandbox/repo && ls -la && git log --oneline -3 2>/dev/null | head; echo "---ENV---"; env | grep -i -E "supabase|postgres|pg|database|api_key|token" | sed 's/=.*/=<redacted>/'✓└{"content":[{"text":"total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Sep 27 20:44 ..\ndrwxr-xr-x 8 root root 4096 Sep 24 20:05…ctrl+o
{"content":[{"text":"total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Sep 27 20:44 ..\ndrwxr-xr-x 8 root root 4096 Sep 24 20:05 .git\n-rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore\n9ebf5fb Initial workspace\n---ENV---\nPI_GATEWAY_API_KEY=<redacted>\n","type":"text"}]}×$ which node npm python3 psql curl 2>/dev/null; node -v 2>/dev/null; echo "---"; ls ~/.netrc ~/.config 2>/dev/null✓└{"content":[{"text":"/usr/local/bin/node\n/usr/local/bin/npm\n/usr/local/bin/python3\n/usr/bin/curl\nv22.23.2\n---\n\n\nCommand exited with code 2","type":"text…ctrl+o
{"content":[{"text":"/usr/local/bin/node\n/usr/local/bin/npm\n/usr/local/bin/python3\n/usr/bin/curl\nv22.23.2\n---\n\n\nCommand exited with code 2","type":"text"}],"details":{}}›Thinking…
No Supabase credentials, no project. There's a PI_GATEWAY_API_KEY, but that's for the pi gateway, not for Supabase.
Could I create a Supabase project via the API? Would need a Supabase access token (personal access token) — not available. Without credentials, can't connect to a hosted product. Also, network access? Let me quickly check if the network works — curl to supabase.co. This will determine whether I'm "blocked" or can proceed.
What I can do without credentials: build a sample app code scaffold (package.json, client code, .env.example, README), which would be executable for the user once they plug in their keys. This is a legitimate way to "build a simple example" without running a local stack. The user said "let me know if you get blocked" — the blocked part is the live testing.
Also being asked: about how Supabase pricing works, and whether this product is easy for me (an agent) to operate.
Let me quickly check network connectivity.
✓$ cd /tmp && timeout 15 curl -sS -o /dev/null -w "supabase.co:%{http_code}\n" https://supabase.co; timeout 15 curl -sS -o /dev/null -w "registry.npmjs.org:%{http_code}\n" https://registry.npmjs.org/@sup…✓└{"content":[{"text":"supabase.co:307\nregistry.npmjs.org:200\napi.supabase.com:401\n","type":"text"}]}ctrl+o
cd /tmp && timeout 15 curl -sS -o /dev/null -w "supabase.co:%{http_code}\n" https://supabase.co; timeout 15 curl -sS -o /dev/null -w "registry.npmjs.org:%{http_code}\n" https://registry.npmjs.org/@supabase/supabase-js; timeout 10 curl -sS -o /dev/null -w "api.supabase.com:%{http_code}\n" https://api.supabase.com/v1/projects
›Thinking…
Network works. api.supabase.com returns 401 (as expected without a token). npm registry is reachable, so I can install @supabase/supabase-js.
Plan: build a minimal Node sample — a small script that uses @supabase/supabase-js to create/read rows in a table, plus a .env.example and README including SQL for the table. I can't run against a real project (no SUPABASE_URL / SUPABASE_ANON_KEY). State that frankly, and provide code that the user can run with their own keys.
Also verify that the code can at least load/run without keys (fails gracefully) — I can run the script to show a proper error message. That's fast.
Keep it lightweight. Let me write the files.
Network works, npm registry is reachable, but there are no Supabase credentials in this environment (env shows only a pi gateway key; api.supabase.com returns 401). So I can build and syntax-check the example, but I cannot exercise a live hosted project. No local stack needed — that part is fine.
Building a minimal @supabase/supabase-js example:
✓$ mkdir -p /sandbox/repo/supabase-example && cd /sandbox/repo/supabase-example && npm init -y >/dev/null && npm pkg set type=module name=supabase-example && npm i @supabase/supabase-js 2>&1 | tail -3 &&…✓└{"content":[{"text":"added 9 packages, and audited 10 packages in 3s\n\nfound 0 vulnerabilities\n2.117.2\n","type":"text"}]}ctrl+o
mkdir -p /sandbox/repo/supabase-example && cd /sandbox/repo/supabase-example && npm init -y >/dev/null && npm pkg set type=module name=supabase-example && npm i @supabase/supabase-js 2>&1 | tail -3 && node -e "console.log(require('@supabase/supabase-js/package.json').version)"
›Thinking…
Alright, let's write the sample file.
✓write /sandbox/repo/supabase-example/demo.mjs✓└{"content":[{"text":"Successfully wrote 2245 bytes to /sandbox/repo/supabase-example/demo.mjs","type":"text"}]}
✓write /sandbox/repo/supabase-example/schema.sql✓└{"content":[{"text":"Successfully wrote 839 bytes to /sandbox/repo/supabase-example/schema.sql","type":"text"}]}
✓write /sandbox/repo/supabase-example/.env.example✓└{"content":[{"text":"Successfully wrote 121 bytes to /sandbox/repo/supabase-example/.env.example","type":"text"}]}
›Thinking…
Add a README, add an entry to .gitignore, and check the graceful-failure path (running it without keys). Also, confirm that the imports work.
✓write /sandbox/repo/supabase-example/README.md✓└{"content":[{"text":"Successfully wrote 1333 bytes to /sandbox/repo/supabase-example/README.md","type":"text"}]}
›Thinking…
Test the graceful path (without credentials), and additionally, by using a fake URL, confirm that at least the client is constructed and that the failure is a network/authorization error rather than a code error. In practice, a fake URL just times out — either skip it, or use a short timeout. The no-credentials path test is quick.
Also, check the syntax with node --check.
✓$ cd /sandbox/repo/supabase-example && node --check demo.mjs && echo "syntax OK" && echo "--- run without creds ---" && node demo.mjs; echo "exit=$?"; printf 'node_modules/\n.env\n' > .gitignore; ls -a✓└{"content":[{"text":"syntax OK\n--- run without creds ---\nMissing SUPABASE_URL or SUPABASE_ANON_KEY.\nCreate a free project at https://supabase.com/dashboard, …ctrl+o
{"content":[{"text":"syntax OK\n--- run without creds ---\nMissing SUPABASE_URL or SUPABASE_ANON_KEY.\nCreate a free project at https://supabase.com/dashboard, then:\n cp .env.example .env # fill in Project URL + anon key\n node demo.mjs\nexit=1\n.\n..\n.env.example\n.gitignore\nREADME.md\ndemo.mjs\nnode_modules\npackage-lock.json\npackage.json\nschema.sql\n","type":"text"}]}›Thinking…
Also, I want to verify that the SDK actually reaches the real Supabase endpoint, to prove that the request path is correct even without a valid project. Should I use the URL of a non-existent project reference? That would resolve to a real Supabase host and return a 404/401 — that would be proof of a correct request. Let's try it quickly with a timeout.
✓$ cd /sandbox/repo/supabase-example && SUPABASE_URL=https://nonexistent-ref-xyz.supabase.co SUPABASE_ANON_KEY=dummy timeout 25 node demo.mjs 2>&1 | head -5✓└{"content":[{"text":"✗ insert: TypeError: fetch failed\n","type":"text"}]}
›Thinking…
With a dummy reference, DNS resolution will fail. That's fine — it shows that the request path is being executed. It would be better to prove the wire format against a real endpoint: POST to api.supabase.com or use the platform API? Actually, we can verify reachability of the REST layer against a real project — but we don't have a real one. The fact that we got a 401 from api.supabase.com earlier proves that Supabase's edge is reachable.
That's enough. Report it.
Now, for the answer: pricing, and whether it's easy for me (the agent) to operate. Also mention the blocker: no credentials.
Supabase pricing (as of my knowledge):
- Free: $0/month — 2 projects, project pauses after 1 week of inactivity, 500 MB database, 1 GB file storage, 5 GB egress/bandwidth, 50k monthly active users (MAU), unlimited API requests, community support.
- Pro: $25/month per project — no pausing, 8 GB database included, 100 GB egress, 100k MAU, daily backups (7 days), email support. Compute add-ons are usage-based. Overages: database $0.125/GB, egress $0.09/GB, MAU $0.00325 per user, storage $0.021/GB.
- Team: $599/month per organization — for larger organizations, SSO/SAML, longer backup retention (28 days), roles, log retention, priority support.
- Enterprise: custom.
- Compute: from the Pro tier onward, database compute is billed by instance size (nano/micro/small/large/XL, etc., roughly $10–$560/month).
- Note: pricing changes. Verify on the pricing page.
Am I easy to operate? Mostly yes:
- Pros: Managed Postgres = a standard SQL interface, and I'm good at that; REST/SDK is simple; schema.sql and migrations are plain files in the repo, diffable/reviewable; management API (api.supabase.com) + CLI enables infrastructure as code; no local stack needed for this example.
- Frictions: Creating projects/provisioning requires an access token I don't have here; secrets in the dashboard are UI-first (though accessible via the management API); the Free tier pauses on inactivity, which can look like a mysterious failure later; RLS policy debugging requires reading Postgres errors — verbose but decipherable.
- Verdict: Easy once you hand over SUPABASE_URL and SUPABASE_ANON_KEY (plus a SUPABASE_ACCESS_TOKEN if you want projects provisioned/migrated programmatically).
Blocked on: credentials. That's the only blocker. The user said "let me know if you're blocked," so I'll communicate clearly. I shouldn't stop entirely — the developer workflow exists (SDK/API), so I'll build the example, and I actually did.
Keep the response concise.
Built and verified what I can without credentials. Here's the state.
What I built — /sandbox/repo/supabase-example/
| file | purpose |
|---|---|
demo.mjs | insert → select → update → delete via @supabase/supabase-js (v2.117.2), no dotenv dep |
schema.sql | todos table + RLS policies, paste into Dashboard → SQL Editor |
.env.example | where SUPABASE_URL / SUPABASE_ANON_KEY go |
README.md | 3-minute setup |
No local stack, no Docker, no long-running commands. npm install took 3s; node --check passes; the no-creds path exits cleanly with instructions.
Blocked: one thing
I have no Supabase credentials in this environment. env has only a pi gateway key, and api.supabase.com/v1/projects returns 401. So I could not run the demo against a real hosted project. To unblock, either:
- paste
SUPABASE_URL+SUPABASE_ANON_KEYinto.envand I'll run it and fix whatever comes back, or - also give me a
SUPABASE_ACCESS_TOKEN(personal access token) and I can create the project, apply the schema, and run the demo end-to-end myself via the Management API.
I verified the edge is reachable from here (supabase.co 307, api.supabase.com 401-unauth, npm registry 200), so the only gap is auth.
Pricing (Supabase, hosted)
- Free — $0. 2 projects, 500 MB database, 1 GB file storage, 5 GB egress, 50k monthly active users, unlimited API requests. Projects pause after ~1 week of inactivity — the main gotcha.
- Pro — $25/mo per project. No pausing, 8 GB database included, 100 GB egress, 100k MAU, daily backups (7-day retention). Compute is billed separately by instance size from this tier up.
- Overage rates roughly: $0.125/GB database, $0.09/GB egress, $0.021/GB storage, $0.00325/MAU.
- Team — $599/mo per org. SSO/SAML, 28-day backup retention, roles, priority support. Enterprise — custom.
Confirm at supabase.com/pricing; these numbers move. For a demo you'll be firmly inside Free.
Is this easy for me to manage?
Yes, with two caveats.
Easy because: it's just Postgres. Schema and migrations are plain .sql files that live in the repo, so changes are diffable and reviewable by you. The SDK surface is small and the errors are real Postgres errors, which I can read and fix. The Management API means I can provision and migrate infrastructure from code instead of clicking a dashboard. Nothing here needs a daemon or a long-running process I'd have to babysit.
The caveats: (1) secrets are dashboard-first, so unless you hand me a token I'm dependent on you for credential rotation; (2) Free-tier inactivity pausing produces confusing "connection refused" failures days later that look like code bugs but aren't. Neither is hard, both are just things to know.
AX Fundamentals
23 checks. Open an area for details.
This check is a quick preview. Test more tasks and models with Gauge Agents.
Test your product with Gauge Agents