Databases & Vector

Test changes on a branch of your Postgres data

Run PostgreSQL 16 through 18 with branches for pull requests and migrations, browser queries through the SDK, and point-in-time restore on Superagent.

Databases & Vector product screenshot
databases
volcano cloud databases branches create app pr_482 --ttl 72h✓ Branch 'pr_482' of database 'app' createdvolcano cloud databases branches get app pr_482 --show-connection-stringStatus: active   Connection string: postgresql://volcano_client_…# app's data, its own password, and gone on its own in 72 hours
Overview

Managed Postgres you can branch

Branch the database to try a migration, a data fix or a new index against real rows without writing to the parent.

Volcano hosts PostgreSQL 16 through 18 on six compute tiers, volcano-db-xs through volcano-db-2xl. Connect with psql, pg_dump, Prisma, Sequelize, TypeORM or any Postgres driver, and write per-user access policies in SQL.

Database branching

Give each pull request its own database

A branch copies schema, rows, roles and policies, usually in under a minute, with its own connection string and password. Copy-on-write storage shares unchanged data with the parent and stores changes separately.

  • Run CI against a copy of real data
  • Reset a branch to the parent’s current data
  • Set automatic expiry from one hour to 30 days
rehearse the migration
volcano cloud databases branches create app try_004 --ttl 24hStatus: provisioning · usually active in under a minutevolcano cloud databases branches get app try_004 --show-connection-stringStatus: active   Connection string: postgresql://volcano_client_…psql "$BRANCH_URL" -f volcano/migrations/004_split_names.sqlALTER TABLE · UPDATE 1284 · the parent never saw itvolcano cloud databases branches reset app try_004 --yes✓ re-forked from app as it is now · same connection string
Database access

Query from the browser or your backend

Query through the browser SDK or a standard Postgres driver. Enable row-level security on your tables and write policies against the caller’s identity.

  • psql, Prisma, Sequelize, TypeORM or any driver, on 5432 over TLS
  • Query from the browser without building an API
  • Choose admin, user or anonymous access for direct connections
select count(*) from notes
# one query, three callers, one policyadmin · migrations       → 1284signed-in user 8f1c…     →   12anonymous visitor        →    0the policy is the only thing deciding
Compute

Choose a database size for each workload

Give staging, load tests and production their own databases, each with compute that scales within its chosen tier.

  • Six tiers, volcano-db-xs through volcano-db-2xl
  • Compute scales within the tier’s limits
  • Separate databases for environments or tenants
volcano.dev/dashboard/database
The Volcano dashboard listing databases with their region, Postgres version and tier
Capabilities

Postgres for development and production

Isolated branches

Fork, reset and expire test databases. Branch storage is charged only for changes since the fork.

PostgreSQL 16 through 18

Choose your major version. Install extensions including vector, uuid-ossp and pg_trgm.

Autoscaling compute

Compute scales with load inside the tier you choose.

Backups and restore

Superagent includes manual and scheduled backups, plus point-in-time restore with up to seven days of history.

Row-level security

Write policies with built-in auth.uid(), auth.email(), auth.role() and auth.is_authenticated() helpers.

Direct connections

Connect psql, pg_dump, Prisma or any Postgres driver on port 5432 over TLS.

Code

Create a table, protect its rows and test changes

SQL
create table if not exists notes ( id uuid primary key default gen_random_uuid(), user_id uuid not null, title text not null, archived boolean not null default false, updated_at timestamptz not null default now() ); create index if not exists notes_user_updated on notes (user_id, updated_at desc); alter table notes enable row level security; -- The owner reads and writes their own rows. Nothing else does, including -- code that forgets to add "where user_id = ...". drop policy if exists notes_owner_read on notes; create policy notes_owner_read on notes for select to authenticated using (user_id = auth.uid()); drop policy if exists notes_owner_write on notes; create policy notes_owner_write on notes for insert to authenticated with check (user_id = auth.uid()); drop policy if exists notes_owner_update on notes; create policy notes_owner_update on notes for update to authenticated using (user_id = auth.uid()) with check (user_id = auth.uid());
Use cases

What people build on it

volcano cloud databases branches list app
# name        status   storage    expires inpr_482      active   12.4 MiB   2dpr_479      active   0 B        1dnightly_ci  active   3.1 MiB    6d✓ three copies of app, charged only for what each one changed
Platform

Works with the rest of Volcano

Authentication
  • Use signed-in users in access policies

    Volcano Auth supplies the user identity that auth.uid() and auth.role() expose to your policies.

Realtime
  • Send table changes to subscribers

    Subscribe to INSERT, UPDATE and DELETE events, filtered through row-level security for each subscriber.

Functions and agents
  • Query as a function’s caller

    Save DATABASE_URL as a project variable and put the caller’s user ID in the connection, so their queries run under your row-level policies.

Next.js frontends
  • Query from Next.js client components

    Use the Volcano SDK in signed-in client components to read and write Postgres tables.

Frequently asked questions

Read the docs
Can I use my existing Postgres tools with Volcano?

Yes, Volcano runs PostgreSQL 16, 17 or 18 and accepts standard Postgres connections on port 5432 over TLS. Connect with psql, pg_dump, Prisma, Sequelize, TypeORM or any driver that speaks the Postgres wire protocol, and choose the major version when creating the database.

How many Postgres database branches can I create?

Each database supports up to 10 branches on Hobby or 25 on Superagent. Create one with volcano cloud databases branches create. It gets its own connection string and usually becomes ready in under a minute. Choose a lifetime from one hour to 30 days.

How do I query Postgres safely from the browser?

Use the Volcano SDK with a signed-in user and enable row-level security on the tables you expose. The SDK sends the user’s access token, and policies using auth.uid() control which rows they can access. Keep admin credentials on the server: they bypass RLS.

How do I run Postgres migrations on Volcano?

Put SQL files in volcano/migrations and run volcano cloud databases migration up --all -d app for a database named app. The CLI applies files in name order without tracking which have run. Use one SQL statement per file and make it safe to repeat.

Can I use pgvector for AI retrieval on Volcano?

Yes, Volcano supports pgvector for storing embeddings and running similarity searches in Postgres. Run CREATE EXTENSION IF NOT EXISTS vector, then add a vector column and an index. User-access queries apply your row-level security policies to the results.

Does Volcano support Postgres point-in-time restore?

Yes, Superagent supports point-in-time restore with up to seven days of history, without a manually created backup. It also includes manual backups and daily, weekly or monthly schedules. Restores keep the database’s connection string. Hobby includes neither backups nor point-in-time restore.

Create a database and try your first branch

Build, deploy, and scale on Volcano's global platform — free to start, with no infrastructure to manage.

Checkout more features