Get started with databases and managed services
A managed service is one engine, such as a database, a cache or a message broker, running in a container of its own on your workspace's private network. The platform installs and configures it, gives it a hostname and connection details, and shows each step while it does. Your apps, virtual machines and Kubernetes clusters reach it privately; make it public when something outside the platform needs it. A new instance is ready in about 75 seconds.
Pick an engine
| Family | Engines | Good for |
|---|---|---|
| SQL databases | PostgreSQL 17, MySQL 8.4, MariaDB 11 | Your app's data. A table editor, a SQL editor, database users, backups, import and export in the console |
| Document database | FerretDB | Apps that speak the MongoDB wire protocol, with TLS on |
| Caches | Valkey 8, Memcached | Sessions, queues and cached pages |
| Vector database | Qdrant | Embeddings and similarity search |
| Message broker | RabbitMQ | Jobs and events between services |
| Container registry | Container Registry | Your private container images, pushed and pulled over TLS |
Before you start
A workspace role of Owner, Admin or Developer. Every instance takes its size from the workspace's quota, which the workspace owner's plan sets.
Create it in the console
Open Managed services, choose New service, and pick the engine's card. The form for the new instance opens:
- Basics: the instance's name, 3 to 31 lowercase letters, digits and underscores, starting with a letter, such as
orders. It becomes part of the hostname, such asorders-c3d4.db.sahabti.app. - For PostgreSQL, MySQL and MariaDB, Configure credentials sets the Database name, Username and Password up front. Leave them blank: the names default to
appand a strong password is generated. - Region: where it runs. It cannot change later.
- Network access: Private, reachable only from your workspace's private network, or Public, at a hostname and a port of its own on your workspace's shared IP. You can change this later. MariaDB and Memcached connections are not encrypted, so keep them private.
- Plan: the instance's size: Free, Small, Medium or Large. Quota usage shows what it takes from the workspace's quota.
Select Create instance. The Provisioning tab streams each step until the instance is Ready. See Instances for every size and step.
Connect
The instance's Overview holds its Connection details: host, port, username, password and a connection URI, ready to copy. For example, for PostgreSQL:
psql "host=orders-c3d4.db.sahabti.app port=40012 dbname=app user=app sslmode=require"
Copy the real host and port from the console. From an app, a virtual machine or a pod on the same workspace network, use the instance's private address instead, shown with it. Connecting has an example for every engine, and Web apps can link an instance so its connection string arrives as an environment variable.
Work with the data
- Table editor and SQL editor, for PostgreSQL, MySQL and MariaDB, browse rows and run statements from the console, with no client to install. See Database tools.
- Backups: Back up now takes a copy of a running SQL database, and a restore creates a new instance from it. Export and Import move a database in and out as a file. See Backups.
- Network: for a public instance, restrict who reaches its port with Edit allowed sources. See Instance network.
With PromptOps
In a workspace with PromptOps on, ask in the chat. It asks before it creates or changes anything:
- "Create a private PostgreSQL instance called orders on the Small size."
- "Back up orders before I run the migration."
- "The orders database is slow. What's wrong with it?"
- "Make orders public, reachable only from 203.0.113.0/24."
With the API or MCP
Create an API token with the instance actions, and save the instance as instance.json:
{
"orgId": "<workspace id>",
"engine": "postgres",
"name": "orders",
"plan": "small",
"access": "private"
}
curl -X POST https://api.sahabti.com/v1/servers \
-H "x-api-key: $SAHABTI_TOKEN" \
-H "Content-Type: application/json" \
-d @instance.json
The answer comes at once, while the instance is still being created: read it back with GET /v1/servers/{id} until it is running. Over MCP, create_instance takes the same fields, and get_provision_log follows the steps. No token or tool returns the password: copy it from the console.
What it costs
On Free and on a plan, an instance takes its size from the workspace's quota and is not billed on its own: request more quota from Usage, or move to a bigger plan. On pay as you go, instances are metered by the hour. Backups take space from the disk quota. See Plans and pay as you go and the pricing page.
First checks
- The instance shows Ready, and every step on Provisioning is done.
- You can connect with the details from Connection: over TLS for every engine except MariaDB and Memcached, which you reach privately.
- Metrics charts its CPU, memory, disk and network.
- A public instance's built-in rule on Network lists only the addresses that should reach it.
Next steps
- Instances: sizes, lifecycle, provisioning and metrics
- Connecting: per-engine examples and TLS
- Database tools: table editor, SQL editor and database users
- Backups: back up, restore, export and import
- Container registry: push and pull your images