Skip to content
Appwrite PostgreSQL

Raw Postgres, fully managed_

Appwrite runs the engine and you keep the SQL. Connect with psql or any driver, bring your own ORM and migrations, and get the full PostgreSQL feature set with nothing in between.

db-7f3a2c.fra.appwrite.centerTLS

orders-prod

Managed PostgreSQL

Ready
PostgreSQL 18s-4vcpu-8gbfra

Pooler

On

Replicas

2 sync

PITR

7 days

Compute credits on every Pro plan
$10/mo
Every Appwrite Cloud region
6 regions
High availability maximum
5 replicas
Restore to any moment
PITR

A PostgreSQL endpoint, nothing else in the way

Every database gets its own hostname on port 5432, TLS, and an admin role that owns it. Connect with psql, any driver, or any ORM, and copy a ready-made DSN, .env, or Prisma snippet from the Console.

Credentials

:5432
postgresql://admin:••••••••@db-7f3a2c.fra.appwrite.center:5432/db-7f3a2c

Built-in connection pooling

PostgreSQL spends a backend process per connection, so serverless functions and horizontally scaled app servers exhaust a specification fast. Point runtime traffic at the pooler, same hostname and credentials, and many clients share a small pool of server connections.

Clients

fn-01
fn-02
fn-03

Pooler

Pool18 / 25

A full extension catalog, at no extra cost

Each database lists every extension its PostgreSQL version can install, from pgvector and PostGIS to pg_trgm, pgcrypto, and many more. Free to install, up to 50 per database.

Search and AI
vectorpgvector

Vector data type and similarity search for embeddings, next to your relational data.

pg_trgmpg_trgm

Trigram matching for fuzzy string search, typo tolerance, and similarity ranking.

Geospatial
postgisPostGIS

Spatial types, indexes, and functions for geographic objects and radius queries.

ltreeltree

Represent and query hierarchical, tree-like data such as categories and org charts.

Security and data types
pgcryptopgcrypto

Cryptographic functions for hashing and encrypting values inside the database.

citextcitext

Case-insensitive text type, so comparisons ignore letter case.

A sample of the catalog. Your database lists every extension it can install, including hstore, uuid-ossp, and many more.

Install from a Server SDK

await postgresql.createExtension({
  databaseId, name: 'vector'
})

Snapshot branches in minutes

A branch is an isolated copy taken from a storage snapshot, with its own endpoint and the parent credentials. The parent never pauses writes. Rehearse a migration or give every pull request a database.

orders-prod

Parent database

pr-48223h 41m

db-2b9d41.fra:5432

migration-check6d 2h

db-5c7e08.fra:5432

Backups off the instance, restores on demand

Every database ships with a backup policy and backups are stored off the instance. Add your own schedule and retention, or enable point-in-time recovery to restore to any moment in the last 35 days.

Backups

Oct 2, 03:00 UTC1.8 GB
Oct 1, 03:00 UTC1.8 GB
Sep 30, 03:00 UTC1.7 GB

Point-in-time recovery

14:32:05 UTC

Replicas with automatic failover

Add up to five streaming replicas and pick how safe writes should be: asynchronous, synchronous, or quorum. If the primary stops responding, the most caught-up replica is promoted and the hostname repointed.

r1Next to promoter2r3

Primary

db-7f3a2c.fra

Streaming to 3 replicas

Automatic failover

Same hostname, same port

Live metrics and online resizing

The Monitor tab tracks CPU, memory, queries per second, cache hit ratio, and disk growth with nothing to install. Inspect live sessions, cancel a query, then resize compute online when it is time.

CPU

38%

Queries / sec

1.4k

Cache hit

99.4%

Connections

142 / 1,000

Last 6 hours

Works with your ORM and toolstack

Use the same hostname and credentials with Prisma, Drizzle, Sequelize, TypeORM, SQLAlchemy, psql, and the rest of your PostgreSQL toolchain. Copy DSN, .env, and ORM snippets from the Console Credentials tab, or follow integration guides in the docs.

postgresql://app:••••@postgres.appwrite.cloud:5432/app

Prisma

Type-safe schema and client for Node.js and TypeScript.

Drizzle

Lightweight TypeScript ORM with SQL-like query builder.

Sequelize

Promise-based ORM for Node.js with multi-dialect support.

TypeORM

Active Record and Data Mapper patterns for TypeScript.

SQLAlchemy

Python SQL toolkit and ORM for expressive queries.

psql

Official PostgreSQL CLI for ad-hoc SQL and schema exploration.

Specifications and pricing

Fixed monthly compute tiers with reserved CPU, memory, and connections.

TierCPUMemoryPrice
Starter1 core1 GB$10/mo
Standard2 cores2 GB$20/mo
Standard Plus2 cores4 GB$49/mo
Professional4 cores8 GB$85/mo
Business4 cores16 GB$160/mo
Business Plus4 cores32 GB$299/mo
Enterprise8 cores32 GB$425/mo
Enterprise Plus8 cores64 GB$699/mo
Scale16 cores64 GB$999/mo
Scale Plus16 cores128 GB$1,699/mo
Scale Pro32 cores128 GB$2,399/mo
Scale Max32 cores256 GB$4,099/mo

$10 of compute credits for database usage included every month.

FAQ_

A managed PostgreSQL database is the raw engine with its own compute, storage, and credentials. You talk to it over the PostgreSQL wire protocol instead of an Appwrite SDK, so schema, migrations, roles, and queries are standard PostgreSQL. Use TablesDB, DocumentsDB, or VectorsDB when you want Appwrite SDKs and platform permissions for app data instead.

New databases run PostgreSQL 18 by default, and you can pick PostgreSQL 17 at create time. Upgrades run online: a second instance is provisioned on the new version, data streams over with logical replication, and traffic cuts over once it catches up. Connections are closed at the cutover, so your application has to reconnect.

Every Appwrite Cloud region: Frankfurt, New York, San Francisco, Singapore, Sydney, and Toronto. A database takes the region of the project that owns it, so create your project close to your users first. Each database gets a hostname in the form db-<hash>.<region>.appwrite.center and the data does not leave the region.

PostgreSQL uses the same dedicated compute tiers as pricing: reserved CPU, memory, and connections, from $10/mo per database. Reads and writes are included in the tier. High availability replicas are billed at the full compute tier price per replica, and point-in-time recovery is +20% of base. Extra storage and bandwidth are usage-based overage. Managed databases need a paid plan.

The limit comes from your specification, from 100 on the smallest tier up to a platform cap of 10,000. Since PostgreSQL spends a backend process per connection, point runtime traffic at the pooler, where many clients share a small pool of server connections. Keep migrations and long administrative sessions on a direct connection.

The engine reports every extension this PostgreSQL version can install, so the catalog is the full set available to this database, not a short list. That includes pgvector, PostGIS, pg_trgm, pgcrypto, and many more. Installs are free, up to 50 per database. Uninstalling always cascades, so anything depending on the extension is dropped with it.

Backups are snapshots on a schedule, stored off the instance, with your own cron and retention on top of the default policy. Point-in-time recovery is an add-on that archives the write-ahead log continuously, so you can restore to any moment in a window of 1 to 35 days. Both restore in place, so anything written after the target is discarded.

High availability adds up to five streaming replicas, each a full copy on its own compute. Pick asynchronous replication for the fastest writes, or synchronous or quorum when you cannot lose acknowledged writes. When the primary stops responding, the most caught-up replica is promoted and the hostname repointed, so a driver pool with retries usually recovers on its own.

A branch is a short-lived copy created from a storage snapshot, with its own endpoint and the parent credentials. The parent is never frozen and takes no write pause. Rehearse a destructive migration, reproduce a bug, or give every pull request its own database. Branches never merge back and expire after 24 hours by default, 7 days at most.

Appwrite manages the container, storage, networking, TLS, backups, replication, security patches, and engine upgrades. You own everything above the wire protocol: schema, migrations, indexes, roles and grants, queries, extensions, and the IP allowlist. There is nothing Appwrite-specific in your application code.

Yes, with the standard PostgreSQL tooling you already use. Run your dump and restore over a direct connection, because tools like pg_dump expect one session for the whole run, then point your application runtime at the pooler. Any client that speaks the wire protocol works, including pgAdmin and DataGrip.

Start building on managed PostgreSQL_

Create a database in your project region, copy the connection string, and run your first query.