Services

Databases, caches, search engines and S3 storage, run natively as per-user launchd agents โ€” a started service keeps running when you quit the app, and comes back when you log in, until you stop it.

MySQL

Database ยท :3360

MariaDB

Database ยท :3361

PostgreSQL

Database ยท :5440

MongoDB

Database ยท :27018

Redis

Cache / queue ยท :6380

Meilisearch

Search ยท :7710

Typesense

Search ยท :8118

MinIO

S3 storage ยท :9010

Ports and credentials

BitL deliberately avoids the stock ports (3306, 5432, 6379 โ€ฆ), so its services can run next to Homebrew, Docker or another tool without a fight. Everything listens on 127.0.0.1 only.

ServiceName / aliasesDefault portLogin
MySQLmysql3360root, no password
MariaDBmariadb, maria, mdb3361root, no password
PostgreSQLpostgresql, postgres, pg5440bitl, no password ยท db postgres
MongoDBmongodb, mongo27018no auth
Redisredis6380no password
Meilisearchmeilisearch, meili7710no key
Typesensetypesense8118โ€”
MinIOminio9010minioadmin / minioadmin
Tip. Don't copy ports by hand. bitl env-sync writes the right values into your .env, and bitl services list shows what each instance actually uses.

Installing

Binaries are downloaded pre-built for Apple Silicon; if BitL has no build for a service, it uses a Homebrew install when one is present. Install once, then start and stop at will.

bitl services install mysqlbitl services install postgresql --version 16bitl services install redis --port 6390

Several versions side by side

Give each instance a name. Commands accept either the instance name or the service type.

bitl services install mysql --name mysql80 --version 8.0 --port 3370bitl services start mysql80

Starting and stopping

bitl services                 # list every instance: status, version, portbitl services start mysqlbitl services restart redisbitl services stop mysqlbitl services start --all     # every installed servicebitl services stop --all

Core stack (nginx, PHP-FPM, dnsmasq) is separate: bitl start, bitl stop, bitl restart, bitl status. The app starts the core stack on launch unless you turn off Start services on launch in Settings โ†’ General.

Connecting from your app

Run this in a Laravel (or any .env-based) project after starting your services:

bitl env-sync            # update keys that already exist in .envbitl env-sync --add      # also append keys that are missingbitl env-sync ~/Sites/shop

What gets written, per running service:

ServiceKeys
MySQL / MariaDBDB_CONNECTION DB_HOST DB_PORT DB_USERNAME DB_PASSWORD
PostgreSQLDB_CONNECTION=pgsql plus host, port, DB_USERNAME=bitl
RedisREDIS_HOST REDIS_PORT
MeilisearchSCOUT_DRIVER MEILISEARCH_HOST
MinIOAWS_ENDPOINT AWS_URL

DB_DATABASE is left alone โ€” it's yours. MongoDB and Typesense have no standard Laravel keys, so set them yourself:

.env
# MongoDBMONGODB_URI=mongodb://127.0.0.1:27018ย # TypesenseTYPESENSE_HOST=127.0.0.1TYPESENSE_PORT=8118ย # MinIO โ€” env-sync sets the endpoint; add credentials and a bucketAWS_ACCESS_KEY_ID=minioadminAWS_SECRET_ACCESS_KEY=minioadminAWS_BUCKET=localAWS_USE_PATH_STYLE_ENDPOINT=true

GUI clients

bitl services open mysql      # opens TablePlus, or prints the connection URL

In the app, the Databases view lists, creates and drops databases, and can install phpMyAdmin or Adminer as local sites with one click.

Snapshots

Save a database before a risky migration and roll back in seconds. Snapshots are gzip-compressed dumps under ~/Library/Application Support/BitL/snapshots/.

bitl db snapshot before-migration --database shopbitl db snapshot seed --database shop --type postgresqlbitl db snapshot nightly --database shop --site shop   # file it under a siteย bitl db list                     # add --site shop to filter, --json for scriptsbitl db restore before-migrationbitl db delete before-migration
Warning. --database defaults to laravel and --type to mysql. Pass both when your project differs. Restoring overwrites the database.

Importing a dump

bitl db import ~/Downloads/prod.sql.gz --database shopbitl db import dump.sql --type postgresql --database shopbitl db import full-dump.sql      # dump contains its own CREATE DATABASE / USE

Host, port, user and password default to BitL's own engine (root for MySQL/MariaDB, bitl for PostgreSQL). Override with --host, --port, --user, --password to target another server.

Health and crash diagnosis

bitl services health            # every servicebitl services health mysql --json

BitL restarts a crashed service automatically (up to three retries) and keeps a crash history. When a service dies in a loop, BitL reads its stderr log and, if it recognises the cause โ€” for example a Homebrew library upgraded underneath the binary โ€” shows a plain-English reason and a Copy Fix button with the command to run. BitL never runs the fix for you.

Raw logs live in ~/Library/Application Support/BitL/log/; the app shows live CPU and memory per service on its Dashboard.

herd.yml support

Projects that ship a Herd herd.yml keep working. BitL reads the PHP version, HTTPS flag and services from it:

herd.yml
name: shopphp: '8.4'secured: trueservices:  mysql:    version: 8.0.36    port: '${DB_PORT}'  redis:    version: 7.0.0    port: '${REDIS_PORT}'
bitl herd-import           # which of these services are installed, which are missing

herd-import reports; it does not install. Install anything missing with bitl services install.