Databases
Every app gets its own Postgres database — created automatically on first deploy, no setup, no add-ons to buy.
How it works
On your app's first deploy, wess.dev provisions a dedicated database and a dedicated role that owns it, then injects the connection string into your app's environment:
DATABASE_URL=postgres://… # already set inside your app
Read it like any other env var:
import { SQL } from "bun"
const sql = new SQL(process.env.DATABASE_URL!)
const [row] = await sql`SELECT 1 AS ok`Good to know
| Isolation | Your role can only reach your database. Other apps can't connect to it, ever. |
| Pooling | Connections are pooled at the platform level — open what you need, it's handled. |
| Backups | The platform takes nightly backups with point-in-time recovery. |
| Lifecycle | The database lives as long as the app. wess destroy removes it with the app — permanently. |
Vectors (pgvector)
Every database ships with pgvector — store embeddings for search and RAG with no add-on:
CREATE EXTENSION IF NOT EXISTS vector; CREATE TABLE docs (id bigserial primary key, embedding vector(1536), body text); -- nearest neighbours: SELECT body FROM docs ORDER BY embedding <-> $1 LIMIT 5;
Pair it with the AI gateway to generate embeddings and you have a full RAG stack on one platform.
Need to inspect your data?
wess secrets list <app> shows that DATABASE_URL is set; ask the platform owner for external access — direct connections from outside aren't exposed by default.