Antigravity logoCoding agent·Google

Antigravity + Powabase

Antigravity runs agents in parallel. Point them at Powabase and they build the whole stack.

Antigravity is Google's Gemini agent platform. It runs several agents at once, and they write code, drive a browser and check their own work. Install the Powabase skill and those agents can build a full app (sign-in, data, files, agents) on a project you control.

Rather have it built? Powabase engineers build MVPs free for annual Scale and Enterprise plans.

Quick start

Three steps and Antigravity is building on Powabase.

  1. 1

    Install the Powabase skill

    Run it once in your project. From then on the agent knows the Powabase API and how to call it.

    Terminal
    npx skills add powabase-ai/agent-skills
  2. 2

    Open your project in Antigravity

    Open the project in Antigravity so its agents can see the skill.

    Terminal
    antigravity .
  3. 3

    Describe the app

    Give it the spec and Antigravity builds the whole stack. The examples below show how much detail a good spec carries.

Example apps

Real apps, each from one prompt. Copy any of them and give it to Antigravity.

RAG support chatbot

Ingest our product docs, help center, and resolved tickets into a knowledge base, embedding on upload. Expose a support agent that answers with inline citations, streams over SSE, and hands off to a human when confidence is low. Add email and Google sign-in, isolate every conversation per organization with row-level security, and ship it as an embeddable chat widget.

Internal knowledge assistant

Index our wikis, runbooks, and exported threads into a knowledge base, chunking and embedding on upload. Expose an agent that answers with citations and respects per-department access, keep it fresh with scheduled re-indexing of changed sources, and add SSO sign-in plus an analytics view of unanswered questions.

AI help desk

Model tickets, organizations, and agents with row-level security, and auto-triage incoming tickets with an agent that predicts category and priority and drafts a reply from the knowledge base. Escalate low-confidence cases, run SLA timers as scheduled jobs, add email auth, and provide a live queue dashboard.

Sales CRM

Model companies, contacts, deals, and activities in Postgres with row-level security per team and roles for reps and managers. Build a pipeline board with stage tracking, an activity timeline, and semantic search across notes, plus a dashboard of weighted pipeline and win rate. Wire OAuth sign-in and an audit log of every change.

News monitoring app

Pull RSS feeds and news APIs on a schedule, deduplicate and embed each article, and run an agent that clusters related stories, summarizes them, and tags entities and sentiment. Let users define watchlists and alert rules, isolate data per workspace, and deliver a realtime feed plus a daily email digest via a cron job.

Invoice & receipt automation

Accept PDF and image uploads to storage, then extract vendor, line items, totals, and dates with an extraction agent and write validated records to Postgres, routing low-confidence fields to human review. Add approval workflows, per-team access control, exports to accounting formats, and a searchable archive.

Where Antigravity keeps your keys

Antigravity keeps MCP servers in mcp_config.json, globally at ~/.gemini/config/mcp_config.json or per workspace at .agents/mcp_config.json. The Powabase server uses OAuth, so no key goes in that file; Antigravity stores the token in ~/.gemini/antigravity/mcp_oauth_tokens.json and refreshes it when it expires. Your app's Service Role key belongs in a gitignored .env that server code reads, and anything the agents build for the browser should use the Anon key.

Antigravity docs

Connect over MCP

Config lives at ~/.gemini/config/mcp_config.json (or .agents/mcp_config.json per workspace) (JSON file).

JSON file
{
  "mcpServers": {
    "powabase": {
      "serverUrl": "https://mcp.powabase.ai/mcp"
    }
  }
}

Remote servers need serverUrl; Antigravity doesn't accept url or httpUrl. To sign in, open Agent Settings (Cmd+, or Ctrl+,), go to Customizations, click Authenticate next to powabase, finish in the browser, then paste the authorization code back into the panel and click Submit. In the IDE, the agent panel's … menu → MCP Servers → Manage MCP Servers → View raw config opens the file.

Append ?read_only=true to the MCP URL and the server exposes only the tools that don't write. We use it for sessions that should inspect a project and never mutate it.

Antigravity MCP docs

Antigravity example

Terminal: the agent's own check
# After wiring the backend, an Antigravity agent can verify it before
# building UI on top: list the project's agents with the app's own key.
set -a; source .env; set +a
curl -sS "$BASE_URL/api/agents" \
  -H "apikey: $API_KEY" \
  -H "Authorization: Bearer $API_KEY"

Antigravity's agents check their own work, and one curl call is the cheapest check we know of. A JSON list back means the URL and key in .env are right; a 401 means the key or a header is wrong, before any UI depends on it.

Connecting to Powabase from any tool

Mechanics that don’t change from tool to tool.

Anon (Publishable) Key
Client-side
Respects Row Level Security, so it's safe to ship to a browser.
Service Role (Secret) Key
Server-side only
Bypasses RLS. Never put it in anything that ships to a browser.
Keys & RLS docs ↗
  • Every call to /api/* or /rest/v1/* needs two headers, apikey and Authorization: Bearer, both set to the same key. Sending only one is the most common cause of a 401.

    Docs
  • The Database URL from the Connect modal is PgBouncer in transaction mode, not a direct Postgres connection. Disable prepared statements in your driver, or you'll hit prepared statement "..." does not exist. No LISTEN/NOTIFY and no session-level SET across statements. Use Realtime for change notifications; SET LOCAL inside a transaction otherwise. The username and database in the URL are both your project ref, not postgres.

    Docs
  • @supabase/supabase-js mostly works for the BaaS surface (PostgREST, Auth, Storage, Realtime) when you point it at your project URL with the Anon key. It doesn't cover the /api/* AI surface (agents, knowledge bases, orchestrations), which you call over plain REST. There's no /graphql/v1 route: point any GraphQL client at POST /rest/v1/rpc/graphql instead.

    Docs

Common errors

Powabase never shows up in Antigravity's MCP server list
Cause: The entry uses url or httpUrl. Antigravity only reads serverUrl for remote servers.
Fix: Rename the field to serverUrl, then reload the server from the MCP panel.
The Powabase server is listed, but its calls fail as unauthenticated
Cause: The browser sign-in finished, but the authorization code never made it back into Antigravity.
Fix: Open Agent Settings → Customizations, click Authenticate again, and paste the code into the panel before clicking Submit.
401 Unauthorized
Cause: Only one of the apikey / Authorization headers was sent.
Fix: Send both, set to the same key. Docs
prepared statement "..." does not exist
Cause: PgBouncer's transaction-mode pooler moved you to a different server connection.
Fix: Disable prepared statements in your driver's config. Docs
A query that should return rows comes back empty, or a write is silently rejected
Cause: Row Level Security on your own tables. New public tables ship with RLS off, but once you add policies they gate every request.
Fix: Check the policy's USING/WITH CHECK clause and confirm which role (anon, authenticated, service_role) you actually authenticated as. Docs
The Service Role key turns up in a browser bundle or other client-visible code
Cause: It was used somewhere that ships to the client instead of staying server-side.
Fix: Move the call server-side; use the Anon key with RLS for anything client-visible. If it shipped, rotate it in Studio. Docs

FAQ

Yes, including remote ones over streamable HTTP. Add Powabase to mcp_config.json with a serverUrl entry, then authenticate it from Agent Settings → Customizations.

The global file is ~/.gemini/config/mcp_config.json and a workspace file lives at .agents/mcp_config.json in your project. In the IDE, View raw config under Manage MCP Servers opens it.

Yes. Put the powabase entry in .agents/mcp_config.json inside that project instead of the global file, and other workspaces won't see it.

No. The server signs you in with OAuth, and Antigravity keeps the token in its own token file. The Service Role key only goes in the .env your app's server code reads.