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.
| Service | Name / aliases | Default port | Login |
|---|---|---|---|
| MySQL | mysql | 3360 | root, no password |
| MariaDB | mariadb, maria, mdb | 3361 | root, no password |
| PostgreSQL | postgresql, postgres, pg | 5440 | bitl, no password ยท db postgres |
| MongoDB | mongodb, mongo | 27018 | no auth |
| Redis | redis | 6380 | no password |
| Meilisearch | meilisearch, meili | 7710 | no key |
| Typesense | typesense | 8118 | โ |
| MinIO | minio | 9010 | minioadmin / minioadmin |
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 6390Several 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 mysql80Starting 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 --allCore 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/shopWhat gets written, per running service:
| Service | Keys |
|---|---|
| MySQL / MariaDB | DB_CONNECTION DB_HOST DB_PORT DB_USERNAME DB_PASSWORD |
| PostgreSQL | DB_CONNECTION=pgsql plus host, port, DB_USERNAME=bitl |
| Redis | REDIS_HOST REDIS_PORT |
| Meilisearch | SCOUT_DRIVER MEILISEARCH_HOST |
| MinIO | AWS_ENDPOINT AWS_URL |
DB_DATABASE is left alone โ it's yours. MongoDB and Typesense have no standard Laravel keys, so set them yourself:
# 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=trueGUI clients
bitl services open mysql # opens TablePlus, or prints the connection URLIn 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--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 / USEHost, 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 --jsonBitL 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:
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 missingherd-import reports; it does not install. Install anything missing with bitl services install.