CLI Reference

Every bitl command — 125 entries across 13 areas. <angle> is required, [square] optional.

Most commands that take a site default to the one linked to the current directory. Domains can be given with or without the .test suffix. Commands with subcommands run a sensible default when called bare — bitl services lists, bitl php shows info.

Environment

CommandDoes
bitl initCreate BitL directories, write nginx/PHP/dnsmasq configs, generate the local CA
bitl startStart the core stack: nginx, PHP-FPM, dnsmasq
bitl stopStop the core stack
bitl restartRestart the core stack (apply php.ini / Xdebug changes)
bitl statusStack status, default PHP, TLD and site count
bitl doctorCheck the environment and print a fix for each problem
bitl self-update [--check] [--beta] [--rollback]Update the CLI; check only, include pre-releases, or go back one version

Sites

CommandDoes
bitl link [path|name] [--domain <name>] [-t|--tld <tld>]Link a directory (default: current) as a site
bitl unlink <domain>Unlink one site
bitl unlink --all | --group <path> [--yes]Unlink every site, or every site from one parked directory
bitl park [path] [-t|--tld <tld>]Serve every subdirectory of a folder as a site
bitl unpark [path]Remove a parked folder and its sites
bitl parkedList parked folders and their sites
bitl listAll sites: domain, path, PHP, SSL, linked/parked
bitl secure [domain]Enable HTTPS (default: current directory’s site)
bitl unsecure [domain]Disable HTTPS
bitl isolate <php-version> [domain]Pin a site to a PHP version
bitl open [domain] [--editor | --terminal]Open in the browser, editor or terminal
bitl edit [domain]Open the site folder in $EDITOR
bitl detect [path] [--verbose]Show what kind of project a directory is
bitl new <laravel|wordpress|static> <name> [-t|--tld <tld>] [--park]Scaffold a project in the current directory and link it

Site groups

CommandDoes
bitl group create <name>Create a group
bitl group delete <name>Delete a group
bitl group add <group> <domain>Add a site to a group
bitl group remove <domain>Take a site out of its group
bitl group listList groups and their sites
bitl group apply <group> [--php <version>] [--secure | --unsecure]Change every site in a group at once

Docker & sharing

CommandDoes
bitl docker link <name> <port>Proxy name.test to 127.0.0.1:<port>
bitl docker unlink <name>Remove that proxy
bitl docker proxy <container>Proxy a running container (domain/port from labels or name)
bitl docker unproxy <container>Remove a container proxy
bitl docker listProxies and running containers
bitl share <domain> [--provider cloudflared|ngrok|expose] [--port <n>]Expose a site through a public tunnel (port default 80)
bitl share <domain> --stopClose that tunnel
bitl share --listActive tunnels

PHP

CommandDoes
bitl php [info]Current version and FPM availability
bitl php listInstalled versions
bitl php availableVersions you can download
bitl php install <version> [--build]Install a pre-built binary, or build from source
bitl php use <version>Switch the global version (CLI and default FPM pool)
bitl php extensions [version]Loaded extensions
bitl php pools [--json]Running FPM pools and which sites use them
bitl php path [--check | --install]Show, check or add BitL’s bin directory to PATH
bitl composer [status]Composer wrapper status
bitl composer self-updateUpdate Composer
bitl composer install [--force]Reinstall the Composer wrapper

Node.js, Python, Go, Flutter

CommandDoes
bitl node [info]Current Node.js version
bitl node list | availableInstalled / downloadable versions
bitl node install <version>Install (a major like 22 picks the latest 22.x)
bitl node use <version>Switch globally
bitl node uninstall <version>Remove a version
bitl node isolate <version> [--path <dir>]Write .node-version for a project
bitl node unisolate [--path <dir>] · bitl node isolated [--path <dir>]Remove / show a project’s pinned version
bitl python [current] · list [--available]Current / installed / downloadable versions
bitl python install | use | uninstall <version>Manage versions (e.g. 3.12.8)
bitl python venv <path> [-p|--python-version <v>]Create a virtual environment
bitl go [current] · list [--available]Current / installed / downloadable versions
bitl go install | use | uninstall <version>Manage versions (e.g. 1.24.0)
bitl flutter [version] [--channel <c>]Show current, or switch when a version is given
bitl flutter list [--available] · currentInstalled / downloadable / active SDK
bitl flutter install | use | uninstall <version> [--channel stable|beta|dev]Manage SDK versions
bitl flutter doctor · devicesRun flutter doctor / list devices

Services

Service names: mysql, mariadb (maria, mdb), postgresql (postgres, pg), mongodb (mongo), redis, meilisearch (meili), typesense, minio — or an instance name you chose.

CommandDoes
bitl services [list]Every instance: type, name, version, status, port
bitl services install <type> [--name <n>] [--version <v>] [--port <p>]Install a service instance
bitl services start <name> | --allStart one or all installed services
bitl services stop <name> | --allStop one or all running services
bitl services restart <name>Restart a service
bitl services open <name>Open in TablePlus, or print the connection URL
bitl services health [name] [--json]Health, restarts and recent crashes
bitl env-sync [path] [--add]Write service connection details into .env
bitl herd-import [path]Report which services a herd.yml needs and which are installed

Database snapshots

Connection flags on snapshot, restore and import: --host (127.0.0.1), --port (the engine’s BitL port), --user (root; bitl for PostgreSQL), --password.

CommandDoes
bitl db snapshot <name> [--database <db>] [--type mysql|postgresql|mariadb] [--site <domain>]Dump a database (defaults: laravel, mysql)
bitl db restore <name> [--site <domain>]Restore a snapshot over the database
bitl db list [--site <domain>] [--json]List snapshots
bitl db delete <name> [--site <domain>]Delete a snapshot
bitl db import <file.sql|file.sql.gz> [--database <db>] [--type <t>]Load an external dump

Frameworks & nginx

CommandDoes
bitl artisan <domain> <command…>Run php artisan with the site’s PHP version
bitl wp <domain> <command…>Run WP-CLI with the site’s PHP version
bitl queue start [site] [--workers <n>] [--connection <c>] [--queue <q>]Start queue:work processes (1 worker, queue default)
bitl queue stop | restart [site] · status [--json]Manage workers from any earlier queue start
bitl vite start [site|path] [--port <n>]Start a Vite dev server (ports from 5173)
bitl vite stop [site] · statusManage running Vite servers (any terminal)
bitl nginx templatesList templates: laravel, spa, wordpress, static, proxy, node
bitl nginx template <name> --domain <d> --root <path> [--port <n>]Print a rendered server block
bitl nginx validateCheck BitL’s nginx configuration
bitl nginx reloadReload nginx

Debugging

CommandDoes
bitl debug [status] · start · stop · clearDebug server (port 8765) and SMTP server (port 2525)
bitl mail [list] · show <id> · status · clearCaptured email
bitl logs [nginx|nginx-access|php|<path>] [-f] [--lines <n>]Show or follow a log (default: nginx error log, 50 lines)
bitl logs … [--level <l>] [--channel <c>] [--search <text>] [--clear]Filter, search or truncate
bitl xdebug on [--php <v>] [--ide vscode|phpstorm] [--mode debug|profile|trace] [--site <s>]Enable Xdebug
bitl xdebug off [--php <v>] [--site <s>]Disable Xdebug
bitl xdebug status [--php <v>]Xdebug state per PHP version
bitl xdebug setup <vscode|phpstorm> [--php <v>] [--mode <m>]Write the IDE preset
bitl extension install | enable | disable | status [--php <v>]The bitl.so dump-capture extension
bitl profile parse <file>Call-tree summary of a cachegrind file
bitl profile top <file> [-s|--sort self-time|total-time|calls] [-l|--limit <n>]Hottest functions (20 by self time)
bitl profile folded <file>Folded stacks for flamegraph tools
bitl profile save <file> [-l|--label <name>] · listKeep a profile for comparison
bitl profile compare <baseline> <current> [-t|--threshold <pct>]Regressions and improvements (default 5%)
bitl profile watch <dir>Watch a directory for new cachegrind files
bitl dashboard [site|log] [--range 5m|15m|1h|24h] [--json] [--export]Request stats from nginx access logs

Mobile

CommandDoes
bitl sim list [--booted] [--iphone] [--ipad]iOS Simulators
bitl sim boot <name|udid>Boot a simulator
bitl sim shutdown <name|udid|all>Shut down simulators
bitl sim screenshot [name|udid] [-o|--output <path>]Screenshot a booted simulator
bitl emu list [--running]Android Virtual Devices
bitl emu start <avd> [--cold-boot]Start an emulator
bitl emu stop <avd|all>Stop emulators
bitl metro start [--path <dir>] [-p|--port <n>] [--clear]Start Metro / Expo (port 8081)
bitl metro stop | status [-p <n>] · restart [--path <dir>] [-p <n>]Manage Metro

AI & notebooks

CommandDoes
bitl ollama install · start · stop · statusOllama server
bitl ollama models [--available]Installed or popular models
bitl ollama pull <model> · rm <model>Download / remove a model
bitl jupyter installInstall JupyterLab
bitl jupyter start [dir] [-p|--port <n>] [--classic] [--open]Start a server (port 8888)
bitl jupyter list · stop [session-id]List / stop servers (all by default)

Configuration & migration

CommandDoes
bitl config [list] [--json]Every setting
bitl config get <key> · set <key> <value>Keys: tld, php-default, editor, terminal, browser, theme, auto-start
bitl config reset [key] · pathReset to defaults / show settings.json location
bitl migrate [detect]Look for a Herd or Valet install
bitl migrate herd | valet [--dry-run] [--force]Import sites, parked paths, certificates and isolations
bitl completions install [--shell zsh|bash|fish]Install tab completion
bitl completions generate <zsh|bash|fish>Print the completion script
bitl plugin [list] [--json] · install <path|git-url> · remove <id> · create <name>Plugins (preview)

Getting help

bitl --help                 # every commandbitl help services          # one commandbitl services install --helpbitl --version
Tip. Many list and status commands take --json for scripting: config, db list, services health, php pools, queue status, plugin list, dashboard.