Private pilotCurrent availability and limits ↗
Docs/Start here·
.mdES

What Plurabase is

Plurabase is a multitenant platform that puts a web application's static frontend and its backend in one project. The backend is built from Supabase's open-source services, so an application talks to it with the official @supabase/supabase-js v2 client. Coding agents reach a project through a project-scoped MCP endpoint.

Plurabase is in a private pilot. It is not open to the public, has no prices, no SLA and no running backups, and it is not approved for production data. The facts page lists the status of every capability.

Plurabase is an independent product. It is not affiliated with or endorsed by Supabase, Inc. or Vercel Inc. Some technical identifiers still use the earlier name Simplybase, for example ./__simplybase/config.json.

What a project contains

Each project runs its own copy of these services. All but Studio are the images of Supabase's self-hosted release self-hosted/v0.8.2:

  • PostgreSQL 17.6 (supabase/postgres 17.6.1.136)
  • Auth for your application's users (GoTrue v2.196.0)
  • REST and RPC API (PostgREST v14.17)
  • Realtime (v2.134.10), Storage API (v1.74.0) and Edge Functions (supabase/edge-runtime v1.76.2)
  • Supabase Studio, built from Supabase's source with Plurabase changes and opened from the Plurabase console by owners and admins

A project can also have a Site: a static frontend uploaded as a ZIP and served next to the backend. See frontend hosting.

How the frontend finds its backend

Every Site release is served with a generated ./__simplybase/config.json that holds the project's API URL and its publishable (anon) key, plus the project ref, the release id and the file's format number. The frontend reads it at start-up:

ts
import { createClient } from '@supabase/supabase-js'

export async function connect() {
  const reply = await fetch('./__simplybase/config.json', {
    credentials: 'omit',
    cache: 'no-store',
    redirect: 'error',
  })
  if (!reply.ok) throw new Error('Project connection unavailable')
  const config = await reply.json()
  return createClient(config.api_url, config.publishable_key, {
    auth: { persistSession: false, detectSessionInUrl: false },
    global: {
      fetch: (input, init) => fetch(input, { ...init, credentials: 'omit' }),
    },
  })
}

The same build can therefore be published again or rolled back without rebuilding. Secret keys never reach the browser.

Who it is for

Today: people the operator admits to the pilot. The intended users are small teams and solo developers who build web applications with @supabase/supabase-js, often with coding agents, and who want the frontend and backend managed as one project.