Databases, caches, search and file storage run inside your environment, next to your sites. rdev installs each service the first time a project needs it, in the version you choose, keeps it running and writes the connection settings into the project's .env.
What is available
| Service | What it is for | Versions | Default port |
|---|---|---|---|
| MySQL | Relational database | 8.0, 8.4, 9.7 | 3306 |
| MariaDB | Relational database | 10.11, 11.4, 11.8, 12.3 | 3306 |
| PostgreSQL | Relational database; the -full builds add pgvector, PostGIS, pgRouting and (from 16) TimescaleDB |
14, 15, 16, 17, 18 | 5432 |
| MongoDB | Document database | 7.0, 8.0, 9.0 | 27017 |
| Redis (Valkey) | Cache, queues and sessions | 9.1 | 6379 |
| Meilisearch | Full-text search, for Laravel Scout | 1 | 7700 |
| Typesense | Full-text search, for Laravel Scout | 29, 30 | 8108 |
| RustFS | S3-compatible file storage, with a web console on the next port | 1 | 9000 |
| Mail capture | Catches outgoing email so nothing reaches real inboxes | built in | |
| Dump server | Collects debug dumps from your code | built in |
Redis is served by Valkey, the open-source fork of Redis that speaks the same protocol: Laravel's redis drivers and phpredis work unchanged. Every service listens only inside your environment, on 127.0.0.1; reach a web console such as RustFS's through your laptop connection.
Give a project a service
On the server, name the project and the service:
rdev project service shop postgres
rdev installs and starts the service if it is not running yet, creates a database (MySQL, MariaDB, PostgreSQL) or a bucket (RustFS) named after the project, and writes the connection settings into the project's .env. A project without a .env gets the settings printed instead. MongoDB creates the database the first time your code writes to it.
In the panel, choose Add service on a project or next to a server, pick the service and, for services with several versions, the Version. Your AI agent can do the same through its MCP access; ask it for "a PostgreSQL database for shop".
A new project can get its services in the same command:
rdev project add shop --git [email protected]:you/shop.git --service mysql --service redis
What goes into .env
| Service | Settings |
|---|---|
| MySQL, MariaDB, PostgreSQL | DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME (no password: only your environment can reach it) |
| MongoDB | MONGODB_URI, MONGODB_DATABASE, for the mongodb/laravel-mongodb package |
| Redis | REDIS_HOST, REDIS_PORT |
| Meilisearch | SCOUT_DRIVER=meilisearch, MEILISEARCH_HOST |
| Typesense | SCOUT_DRIVER=typesense, TYPESENSE_HOST, TYPESENSE_PORT, TYPESENSE_PROTOCOL, TYPESENSE_API_KEY |
| RustFS | AWS_ACCESS_KEY_ID=rdev, AWS_SECRET_ACCESS_KEY=rdev-secret, AWS_DEFAULT_REGION, AWS_BUCKET, AWS_ENDPOINT, AWS_URL, AWS_USE_PATH_STYLE_ENDPOINT=true |
Values already in .env for these keys are replaced; other lines stay as they are.
Choosing a version
Add @ and a version or release line to the service:
rdev project service shop [email protected]
That installs the newest MySQL 8.0 and switches to it. Without a version you get the one already installed, or the newest. To see every version you can install:
rdev service available
One version of each service runs at a time:
- MySQL and MariaDB keep separate data for each release line (8.0, 8.4, 9.7…). Moving to a newer line starts from a copy of the older line's data, which the newer server upgrades; the older line's data stays as it was, so you can move back. Moving to an older line starts with empty data, because an older server cannot read newer data.
- PostgreSQL and MongoDB keep separate data for each major version (PostgreSQL 14, 15…; MongoDB 7, 8, 9). A new major starts empty; move your data across with
pg_dumpormongodump. - Meilisearch and Typesense rebuild their indexes from your app (
php artisan scout:import) after a version change.
MySQL and MariaDB both use port 3306, so run one of them at a time, or move one to another port with rdev service set-port mariadb 3307. Choosing versions needs rdev 0.2.0-beta.18 or later.
PostgreSQL extensions
The -full builds of PostgreSQL include pgvector (vector search for AI features), PostGIS and pgRouting (maps and routes) and, from version 16, TimescaleDB (time series). Pick one by its full version, as rdev service available lists it:
rdev project service shop [email protected]
Then turn the extension on in your database, for example in a migration:
CREATE EXTENSION IF NOT EXISTS vector;
The same goes for postgis, pgrouting and timescaledb. rdev preloads TimescaleDB automatically when the build includes it.
Managing services
| Command | What it does |
|---|---|
rdev service available |
Lists the versions you can install |
rdev service start mysql / stop / restart |
Starts, stops or restarts a service |
rdev service logs mysql |
Shows the last lines of its log |
rdev service set-port mysql 3307 |
Moves it to another port (on the next restart) |
rdev service set mysql max_connections 300 |
Sets a configuration option (on the next restart; MySQL, MariaDB, PostgreSQL and Redis) |
rdev service change-version mysql 9.7.4 |
Switches to another version |
Services start with your environment. Removing a project never removes its database; drop it yourself when you no longer need it.
Teams and backups
On a Team plan, every member environment reaches the owner's services at the name rdev-team, next to its own private ones (Teams).
The nightly data backup on Pro and Team includes every MySQL, MariaDB, PostgreSQL and MongoDB database and your ~/Code folder, and restores them from the panel (Backups). MySQL and MariaDB are backed up from whichever of them runs on port 3306; MongoDB as one archive of all its databases. Search indexes and RustFS buckets are rebuilt from your app and your own copies.
A service that is not on the list
You do not need to wait for us to run something else:
-
A service written in Node.js, Python, Ruby or Go runs as a project. rdev installs its runtime, starts the command, gives it a port and restarts it if it stops:
rdev project add realtime --lang node --command "npx soketi start --port={port}" -
Other software goes into your home folder, for example a downloaded binary in
~/.local/bin, and starts from a project's command the same way. Your home folder is the part of the environment thatrdev host updatekeeps; anything installed elsewhere withsudo aptis gone after the next environment update. -
Want it supported like the services above, with versions, the panel,
.envsettings and backups? Write to us with the service and what you use it for. We add services that several customers need, and tell you where it stands.
Your AI agent can set up the first two for you; ask it to "run Elasticsearch for the shop project".