Build on Postgres.
Let your agents run it.
IvaraBase is a self-hosted, Supabase-compatible backend. One server holds all your projects, each with its own database, auth, storage, realtime, functions and backups. Claude Code, Codex or ChatGPT build on it over MCP, and anything risky waits for your approval.
Works with Claude CodeCodexChatGPTCursorsupabase-jsDocker


Everything a project needs
A complete backend, per project
The same building blocks you know from Supabase, behind the same APIs, on a server you own.
Postgres database
A real Postgres 18 database per project, with an SQL editor, table editor, tracked migrations and TypeScript types.
Learn more →Authentication
Email, magic links, phone codes, anonymous users, MFA, Google, GitHub, Apple and any OpenID Connect provider.
Learn more →Storage
Buckets protected by row level security, signed URLs and resumable uploads for large files.
Learn more →Realtime
Database changes, broadcast and presence over supabase.channel(), filtered by each user’s policies.
Learn more →Functions
TypeScript on Deno with Supabase’s Deno.serve style, secrets, cron schedules and logs.
Learn more →Webhooks
Call a URL or a function on insert, update or delete, with retries and signed requests.
Learn more →Vectors
pgvector, PostGIS, pg_trgm and more, one click per project, plus a slow-queries view.
Learn more →Backups
Encrypted bundles, tested by restoring them automatically, copied off-site to any S3 bucket.
Learn more →Built for AI agents
Agents build. You approve.
Every button in the dashboard is an operation, and every operation is an MCP tool. Your agent can create a project, write migrations, turn on auth and deploy functions, without a single UI-only step.
- Scoped tokens. Read, write or admin; per project; with an expiry.
- Previews first. Destructive calls show what would happen before anything runs.
- Approvals. Dropping a table or replacing data becomes a request you accept from your phone.
- Audit log. Every change, with the agent that made it.
claude mcp add --transport http ivarabase \
https://base.example.com/mcp \
--header "Authorization: Bearer ivb_..."Also Codex, ChatGPT, Cursor, VS Code and Claude Desktop. Connect your agent →


Supabase-compatible
Keep your client code
supabase-js and the Supabase SDKs work unchanged. Point them at a project URL and go.
import { createClient } from "@supabase/supabase-js";
const supabase = createClient("https://shop.base.example.com", ANON_KEY);
const { data: orders } = await supabase
.from("orders")
.select("id, status, order_items(qty, products(name))")
.eq("status", "paid")
.order("created_at", { ascending: false });// email, phone, OAuth, any OpenID Connect provider, anonymous users
await supabase.auth.signInWithOtp({ phone: "+15551234567" });
await supabase.auth.signInWithOAuth({ provider: "keycloak" });
// authenticator-app MFA; RLS can require (auth.jwt()->>'aal') = 'aal2'
const { data } = await supabase.auth.mfa.enroll({ factorType: "totp" });supabase
.channel("room-1")
.on("postgres_changes", { event: "INSERT", schema: "public", table: "messages" },
(payload) => render(payload.new)) // only rows RLS lets you see
.on("presence", { event: "sync" }, () => showOnline())
.subscribe();await supabase.storage
.from("avatars")
.upload(`${user.id}/me.png`, file, { upsert: true });
const { data } = await supabase.storage
.from("invoices")
.createSignedUrl("2026/inv-0042.pdf", 3600);-- turn on pgvector from the Extensions page, then:
create table documents (id bigserial primary key, body text, embedding vector(1536));
create index on documents using hnsw (embedding vector_cosine_ops);
select body from documents order by embedding <=> $1 limit 5;One server, every project
Your tenth project costs nothing extra
A project is a database, a few roles and some metadata in one Postgres cluster. REST and function processes start on the first request and stop when idle, so client work, side projects and staging copies share the server you already pay for.
- Postgres tuning follows the memory you give it, container limits included.
- Monitoring and alerts to a webhook, Discord or email.
- Automatic HTTPS, or sits behind nginx, Caddy or Traefik.
Compare
Where IvaraBase fits
| IvaraBase | Supabaseself-hosted | PocketBase | Firebase | |
|---|---|---|---|---|
| Run by AI agents, with approvals | ✓ | ◐ | – | ◐ |
| Many projects on one server | ✓ | – | – | ☁ |
| Self-host with one container | ✓ | ◐ | ✓ | – |
| Postgres + supabase-js | ✓ | ✓ | – | – |
| Encrypted, restore-tested backups | ✓ | ◐ | ◐ | ☁ |
✓ yes · ◐ partly · ☁ cloud only · – no. Full comparison, including where the others win →
Self-host in minutes
One container. Your server.
IvaraBase, Postgres 18, PostgREST and Deno in one image for amd64 and arm64. Put it behind the proxy you already run.
services:
ivarabase:
image: ghcr.io/ankittchaurasia/ivarabase:0.2-pg18
restart: unless-stopped
environment:
IVARA_DOMAIN: base.example.com
ports: ["127.0.0.1:8787:8787"]
volumes: [ivarabase-data:/data]
volumes:
ivarabase-data:docker compose up -dGive your agents a real backend
Open source under AGPL-3.0. Free to self-host, commercially too.