Build the frontend. We packed the rest.
PotaLab Base is everything behind your frontend, already packed: a Postgres database, auth, storage, realtime and serverless functions, running and secured from the first minute. No servers, no setup, no ops. Set it up in the dashboard, or let your AI agent build it through MCP.
- Database
- Auth
- Storage
- Realtime
- Functions
- Flows
What's in the pot
Everything behind your frontend, already packed.
Database, auth, storage, realtime, functions and flows on solid Postgres, so you build the product instead of the plumbing.
- Database
A real Postgres, with instant APIs
Create tables in the dashboard and query them over REST. Row level security decides who sees what, and it is on by default.
- Auth
Sign-in your users already expect
Email and password, magic links, social sign-in, a second factor and enterprise SSO with OIDC and SAML.
- Storage
Buckets with controlled access
Store files in buckets, decide access with policies and hand out short-lived signed URLs.
- Realtime
Everyone sees changes as they happen
Subscribe to database changes, broadcast messages between clients and track who is online with presence.
- Functions and flows
Server-side logic without servers
Run TypeScript next to your data, or build durable flows as code or in a visual builder, started by HTTP, cron or a database event.
- Webhooks
Reliable delivery after commit
Events leave through a transactional outbox, so they are delivered after the commit and retried when an endpoint fails.
- Multi-tenancy
Workspaces, members and roles for B2B
Give each customer a workspace with members, roles and invitations. Tenant claims travel in tokens, so your policies keep every workspace apart.
Build with your agent
Describe the product. Your agent does the rest.
Connect Claude Code, Cursor or any MCP client to your Base project. The agent designs the backend with real tools, and you stay in control of what it may change.
- 1
Describe
Tell your agent the product you want. It reads your project first: tables, API docs and plan limits.
- list_tables
- get_api_docs
- project_limits
- 2
Design schema and RLS
It proposes tables and policies as SQL you can read, then creates them once writes are on.
- create_table
- alter_table
- create_policy
- set_rls
- get_advisors
- 3
Add logic
SQL functions you can call over RPC, Edge Functions with write-only secrets, and Flows. Each one is tested before you rely on it.
- db_functions_create
- rpc_call
- functions_deploy
- function_secrets_set
- flows_deploy
- 4
Ship
Migrations are applied and typed client code is generated from your real schema.
- apply_migration
- generate_typescript_types
- get_sdk_snippet
You stay in control
Read-only by default
Until you turn writes on, table and policy tools only return dry-run SQL and queries run in a read-only transaction.
You approve writes
Writes are enabled per project. With OAuth you choose the projects and scopes and can keep the Read-only switch.
Audited
Every write goes through the Management API and shows up in the project audit log.
Plan limits enforced
The server applies your plan limits and roles to the agent, exactly as in the dashboard.
$ claude mcp add --transport http potalab-base https://base.potalab.com/mcp # then run /mcp in Claude Code and choose Authenticate (available at launch)
Works with Claude Code, Claude Desktop, Cursor, VS Code and any MCP client.
How it works
From empty project to production in three steps.
- 1
Open the pot
Create a project and pick a region. Your database, auth, storage and realtime are running in minutes.
- 2
Connect your frontend
Install @potalab/base and point it at your project URL and public key.
- 3
Ship
Sign users in, query tables and react to changes. Scale when your users arrive.
Code
One client for auth, data and realtime.
A small TypeScript SDK with zero runtime dependencies. Results are returned as { data, error }, never thrown.
import { createClient } from "@potalab/base"
const base = createClient({
url: "https://app.example.com",
key: "lb_pub_…",
})
// Sign in with an emailed one-time code
await base.auth.signInWithOtp({ email: "you@example.com" })// Query your Postgres tables
const { data, error } = await base.from("todos").select("*")
if (error) console.error(error.message)
else console.log(data)// React to changes as they happen
backend
.channel("todos")
.on(
"postgres_changes",
{ event: "INSERT", schema: "public", table: "todos" },
(payload) => console.log(payload.new),
)
.subscribe()PRICING
Planned plans, clear limits.
Prices and limits are planned and may change before launch. Higher plans are expected to raise the quotas.
FreeSoon
$0/ month
Expected price · Free tier planned
- 512 MiB database
- 50,000 monthly active users
- up to 2 free projects
GoSoon
$6/ month
Expected price · per organization, includes 1 project
- 1 GiB database
- 75,000 monthly active users
- 1 project incl. · more from $6/mo
ProSoon
$22/ month
Expected price · per organization, includes 1 project
- 10 GiB database
- 120,000 monthly active users
- 1 project incl. · more from $6/mo
Coming soonPrefer to run it yourself? Base OSS is a planned, self-hostable core of Base.
Learn about Base OSSOpen the pot. Start building.
PotaLab Base is launching soon. Join the waitlist and be first to open the pot.