Skip to content
Beta

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

FamilyEnginesGood for
SQL databasesPostgreSQL 17, MySQL 8.4, MariaDB 11Your app's data. A table editor, a SQL editor, database users, backups, import and export in the console
Document databaseFerretDBApps that speak the MongoDB wire protocol, with TLS on
CachesValkey 8, MemcachedSessions, queues and cached pages
Vector databaseQdrantEmbeddings and similarity search
Message brokerRabbitMQJobs and events between services
Container registryContainer RegistryYour 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:

  1. 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 as orders-c3d4.db.sahabti.app.
  2. For PostgreSQL, MySQL and MariaDB, Configure credentials sets the Database name, Username and Password up front. Leave them blank: the names default to app and a strong password is generated.
  3. Region: where it runs. It cannot change later.
  4. 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.
  5. 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:

bash
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:

json
{
  "orgId": "<workspace id>",
  "engine": "postgres",
  "name": "orders",
  "plan": "small",
  "access": "private"
}
bash
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