Skip to content

Databases

Your data belongs
beside your app.

Five engines, provisioned into the same private project as the applications that read them. Your app reaches its database by name on a network the internet is not on — no public endpoint to lock down, no connection string to carry around, and no second bill.

databases / new

PostgreSQL

:5432 · backups available

Name

primary

Plan

1 vCPU · 2 GB $30.51 a month at most
Create database

DATABASE_URL added to web

written in as a secret · app redeploying

Engines

Five, on every tier

Relational, document and key-value. The tier sets the size, never the engine.

Network

Private to your project

Reached by name from your own containers. Public access is off until you turn it on.

Billing

Hourly, one balance

The same prepaid credit as your apps and your model calls. Free while stopped.

Engines

Pick the one your application already speaks

Every engine is available on every tier, so the decision is about the workload rather than about what a plan unlocks. Each runs as its own service in your project, on its standard port.

PostgreSQL

:5432

The default choice, and the one most stacks assume.

MySQL

:3306

For applications and frameworks that expect it.

MariaDB

:3306

A drop-in for MySQL, on its own release line.

MongoDB

:27017

Document storage where a schema would be in the way.

Redis

:6379

Caching, queues, sessions and rate limits.

No engine tax

The smallest tier runs any of the five. Nothing here is reserved for a larger plan.

Adjacency

The part a hosted database somewhere else cannot do

A database you rent elsewhere is reached over the public internet, which makes its address, its firewall and its credential your problem to hold. Here the database is provisioned into the project your applications already run in, so there is nothing in between to secure.

  • Reached by hostname. Your app connects to the database by its name on the project network, the way it would a service in the same compose file.

  • No public endpoint by default. There is no address on the internet to find, scan or brute-force, because one was never created.

  • Opening it is deliberate. Publishing a database on a port takes an admin, a typed confirmation, and leaves an entry in your audit log. It is not a checkbox anyone can pass on the way to something else.

  • A stable address if you do open it. A published database answers on a hostname of its own, so the connection string you distribute survives the database being moved or the port being closed and reopened.

app/db.ts
// Written in as a secret when the database is created.// Nothing to paste, and nothing to rotate by hand.const pool = new Pool({  connectionString: process.env.DATABASE_URL,});// primary.<your-project> — a name on your own network,// not a host on the public internet.connected

What you get

Managed means we hold the parts you would rather not

Private before it is anything else

A new database has no route in from the internet. It answers on your project's own network and nowhere else, which is the state it stays in unless an admin deliberately changes it.

The credential is written, not handed over

Maxlayer puts the connection string into the applications that need it as a secret and redeploys them. Nobody pastes a password into a dashboard field, and there is no copy of it in a chat log.

Billed by the hour, from one balance

The same prepaid credit your applications and model calls draw from. It meters while the database runs, stops at the monthly price, and costs nothing while stopped.

Backups are a switch, not a project

On or off per database. Maxlayer owns the storage, the schedule and the retention, so there is no bucket to create and no credential of yours to guard.

Backups

One switch, and the storage is ours

Turn backups on for a database and Maxlayer takes the dump on a schedule and keeps it in storage we own and pay for. There is no bucket for you to create, no key for you to guard, and no schedule for you to invent. While a database's backups are on it bills at 130% of its plan — the surcharge runs through the same meter as the plan itself.

Turning backups off stops the schedule and leaves the dumps in place. They are recovery copies, and deleting them because a switch moved would remove the one thing the feature exists for.

What it costs

A database is a container, and it bills like one

Seven tiers, each with its CPU, memory and storage, priced from their own catalogue rather than as a markup on the application plans — a database wants memory where a web process wants CPU. It meters by the hour against your prepaid balance and stops at the monthly price, so a full month never costs more than the figure on the tier.

Metered

By the hour while it runs, from the same credit as your apps and model calls. One balance, one top-up.

Capped

At the tier’s monthly price. A month is paid off after 28 days and the rest of it is not charged.

Stopped

Costs nothing. A stopped database keeps its data and its connection string and draws no credit.

Backed up

130% of the plan while the switch is on, hourly rate and monthly cap alike.

Give your app a database it reaches by name

Create one in your project, and the connection string is written into the apps that need it. Hourly from the same balance, private until you decide otherwise, nothing to cancel.

  • GitHub + GitLab
  • Container images
  • OpenAI-compatible AI
  • Pay as you run