Docs
CLI reference
Every benbow command and flag. Each one also takes --json for output with a stable schema.
The app and the CLI drive the same local daemon, so anything you can click you can also script. Add --json to Benbow's own commands for machine-readable output (benbow wp, composer and artisan pass their tool's output through unchanged). Generated from benbow dev (a2d996de25d9).
benbow agent
While an AI agent works on a site, Benbow keeps the site's starting state (files and database) in an agent session, until you keep the changes or undo them all.
benbow agent connect
Add Benbow's MCP server to an agent's own settings in your home (after a backup)
benbow agent connect <agent> [flags]
--yes | do not ask |
|---|
benbow agent diff
What changed since the agent session started: files and database tables
benbow agent diff <site> [flags]
--file <string> | one file's unified diff (path inside the project) |
|---|
benbow agent idle
After how many idle hours a session closes keeping the changes (0: never)
benbow agent idle [hours] [flags]
benbow agent session
Agent sessions: list, show, keep or undo
benbow agent session keep
Keep the changes and close the session
benbow agent session keep <site> [flags]
benbow agent session list
Open agent sessions (--all: recently closed ones too)
benbow agent session list [flags]
--all | also recently closed sessions |
|---|
benbow agent session open
Open a session yourself before an agent (any agent, MCP or not) works on a site
benbow agent session open <site> [flags]
benbow agent session revert
Puts the site's files and database back to the session's starting snapshot. This also undoes changes you made yourself during the session: Benbow does not know who changed what. .git and node_modules are never touched, and the current state is saved first (a pre-restore snapshot).
benbow agent session revert <site> [flags]
--yes | do not ask |
|---|
benbow agent session show
A site's open session and its snapshots
benbow agent session show <site> [flags]
benbow agent start
Opens an agent session (starting snapshot of files and database), lets agents change this site until the session closes, and starts the agent in a new terminal window with Benbow connected for that run (Cursor: opens the folder). Agents: claude, codex, gemini, cursor-agent, cursor, copilot.
benbow agent start <site> [flags]
--connect | add Benbow to the agent's own settings if it needs it (Gemini, Cursor) |
|---|---|
--terminal <string> | Terminal, iTerm or Ghostty (default: the last one, or Terminal) |
--tool <string> | claude, codex, gemini, cursor-agent, cursor or copilot (default: the last one) |
--yes | same as --connect |
benbow agent tools
AI agents on this Mac and whether Benbow is connected to them
benbow agent tools [flags]
benbow artisan
Run artisan for a Laravel site, e.g. `benbow artisan shop migrate`.
Every argument after the site name goes to artisan unchanged, and its output and exit code are passed through (no --json envelope).
benbow artisan <site> [artisan arguments...] [flags]
benbow blueprint
Blueprints are JSON templates for new WordPress sites: WordPress version and language, themes and plugins (wordpress.org, zip URL, GitHub or git), options, wp-config constants and must-use plugins. See docs/blueprints.md.
Blueprints install third-party code (themes and plugins) into your site. Use only sources you trust. Benbow records each download's SHA-256 the first time and stops if it changes.
Subcommands: apply, delete, export, github-token, import, list, save, show, sources
benbow blueprint apply
Install a blueprint's themes, plugins and settings into a WordPress site (snapshot first)
benbow blueprint apply <name> <site> [flags]
--accept-changes | accept sources whose content changed since first use |
|---|---|
--dry-run | only show what would be installed |
--yes | do not ask |
benbow blueprint delete
Delete a blueprint
benbow blueprint delete <name> [flags]
benbow blueprint export
Write a blueprint as JSON (to stdout without a file)
benbow blueprint export <name> [file.json] [flags]
benbow blueprint github-token
Store a GitHub token for private repositories (read from the terminal or stdin)
benbow blueprint github-token [flags]
--delete | remove the stored token |
|---|
benbow blueprint import
Add a blueprint from a JSON file
benbow blueprint import <file.json|-> [flags]
--force | replace a blueprint with the same name |
|---|---|
--name <string> | save under this name instead of the file's |
benbow blueprint list
List blueprints
benbow blueprint list [flags]
benbow blueprint save
Save a WordPress site's themes, plugins and settings as a blueprint
benbow blueprint save <site> <name> [flags]
--force | replace a blueprint with the same name |
|---|
benbow blueprint show
Show a blueprint's JSON
benbow blueprint show <name> [flags]
benbow blueprint sources
List the downloads Benbow recorded, with their SHA-256
benbow blueprint sources [flags]
benbow composer
Run Composer for a site, e.g. `benbow composer shop require guzzlehttp/guzzle`. Composer 2.11 (2.2 LTS for PHP older than 7.3); its cache is in Benbow's folder.
Every argument after the site name goes to composer unchanged, and its output and exit code are passed through (no --json envelope).
benbow composer <site> [composer arguments...] [flags]
benbow daemon
The daemon serves Benbow's local API (JSON over a Unix socket only you can open) for the Benbow app. It runs as a launchd agent from the Benbow home and does not start at login; benbow start and benbow stop do not touch it.
benbow daemon [flags]
benbow daemon start
Start the daemon (restarts it if the benbow binary changed)
benbow daemon start [flags]
benbow daemon stop
Stop the daemon
benbow daemon stop [flags]
benbow db
Manage site databases on Benbow's MySQL
benbow db create
Create a database and its own user for a site
benbow db create <site> [flags]
--engine <string> | mysql or pgsql (default "mysql") |
|---|---|
--name <string> | database name (default: the site name with underscores) |
benbow db link
Link an existing database to a site (connects as root or postgres)
benbow db link <site> <database> [flags]
--engine <string> | mysql or pgsql (default "mysql") |
|---|
benbow db list
List databases (the server must be running)
benbow db list [flags]
--engine <string> | mysql or pgsql (default "mysql") |
|---|
benbow db query
Runs as a user that can only read, in a read-only transaction: at most 500 rows and 10 seconds. Changes go through wp or artisan.
benbow db query <site> <sql> [flags]
benbow db show
Show a site's database and how to connect (password with --json)
benbow db show <site> [flags]
benbow db unlink
Forget a site's database (--drop also deletes it)
benbow db unlink <site> [flags]
--drop | also delete the database and the site's own MySQL user |
|---|---|
--yes | do not ask before deleting |
benbow domains
Sites are served at <name>.localhost by default: nothing to set up.
.test domains (e.g. demo.benbow.test) are opt-in: Benbow adds a file to /etc/resolver that sends .test lookups to its own DNS server on 127.0.0.1. Enabling and disabling each ask for one administrator authorization.
.local domains (e.g. shop.local) are a MAMP compatibility mode: Benbow installs a small helper that only manages Benbow's own lines in /etc/hosts (127.0.0.1 and ::1). Installing it asks for one administrator authorization.
benbow domains [flags]
benbow domains disable
Stop serving .test or .local domains and remove what Benbow installed for them
benbow domains disable test|local [flags]
benbow domains enable
Serve .test or .local domains (one administrator authorization)
benbow domains enable test|local [flags]
benbow fetch
Request a page of a site and show the status, redirects and PHP errors it caused
benbow fetch <site> [path] [flags]
--head | HEAD instead of GET |
|---|---|
--html | print the page's HTML |
benbow group
Groups only organize the list: they change nothing about how sites are served. Paths use / between levels, e.g. Clients/Acme.
Subcommands: add, disable, enable, list, move, order, remove, rename
benbow group add
Create a group, and any missing group above it (e.g. Clients/Acme)
benbow group add <path> [flags]
benbow group disable
Turn off every site in a group and its subgroups
benbow group disable <path> [flags]
benbow group enable
Turn on every site in a group and its subgroups (archived sites stay off)
benbow group enable <path> [flags]
benbow group list
List groups
benbow group list [flags]
benbow group move
Move a group into another one ("/" for the top level)
benbow group move <path> <into> [flags]
benbow group order
Items are site:<name> or group:<path>, in the order wanted; groups and sites mix freely. Items from elsewhere move inside <path>; the others of that level follow in their current order. Example: benbow group order Clients site:shop group:Clients/Acme site:blog
benbow group order <path> <item>... [flags]
benbow group remove
Remove a group; its sites and groups move up one level (no site is removed)
benbow group remove <path> [flags]
benbow group rename
Rename a group
benbow group rename <path> <new-name> [flags]
benbow import
Import sites from another tool (MAMP PRO, Local, Herd, Valet, XAMPP)
benbow import herd
Reads Laravel Herd's site list (its files are only read) and creates one Benbow site per host, same name and folder. The tool itself is never modified and can keep running. .local names are kept (benbow domains enable local), or served as <name>.localhost with --localhost.
--migrate also brings each new site to work from Benbow: its database is copied from the tool's MySQL (only read: the tool's MySQL must be running, Benbow never starts it) or loaded from --dump, the site gets its own MySQL user, wp-config.php or .env is backed up in Benbow's folder and pointed at Benbow, and the old address is replaced in the database. The project files stay shared: afterwards the tool's copy of the site no longer reaches its database. `benbow import undo <site>` puts things back.
benbow import herd [flags]
--dry-run | show what would happen, change nothing |
|---|---|
--dump <string> | load this .sql or .sql.gz instead of reading the source's MySQL (one --site) |
--existing <string> | when Benbow already has the database: use, recopy (after a backup) or skip (default "use") |
--localhost | serve sites as <name>.localhost instead of their .local names |
--migrate | also copy databases and point wp-config.php/.env at Benbow |
--site <strings> | only these hosts (server name or site name; repeatable) |
--source-password | ask for the source user's password |
--source-user <string> | MySQL user on the source (default: the one in wp-config.php/.env) |
benbow import local
Reads Local's site list (its files are only read) and creates one Benbow site per host, same name and folder. The tool itself is never modified and can keep running. .local names are kept (benbow domains enable local), or served as <name>.localhost with --localhost.
--migrate also brings each new site to work from Benbow: its database is copied from the tool's MySQL (only read: the tool's MySQL must be running, Benbow never starts it) or loaded from --dump, the site gets its own MySQL user, wp-config.php or .env is backed up in Benbow's folder and pointed at Benbow, and the old address is replaced in the database. The project files stay shared: afterwards the tool's copy of the site no longer reaches its database. `benbow import undo <site>` puts things back.
benbow import local [flags]
--dry-run | show what would happen, change nothing |
|---|---|
--dump <string> | load this .sql or .sql.gz instead of reading the source's MySQL (one --site) |
--existing <string> | when Benbow already has the database: use, recopy (after a backup) or skip (default "use") |
--localhost | serve sites as <name>.localhost instead of their .local names |
--migrate | also copy databases and point wp-config.php/.env at Benbow |
--site <strings> | only these hosts (server name or site name; repeatable) |
--source-password | ask for the source user's password |
--source-user <string> | MySQL user on the source (default: the one in wp-config.php/.env) |
benbow import mamp
Reads MAMP PRO's site list (its files are only read) and creates one Benbow site per host, same name and folder. The tool itself is never modified and can keep running. .local names are kept (benbow domains enable local), or served as <name>.localhost with --localhost.
--migrate also brings each new site to work from Benbow: its database is copied from the tool's MySQL (only read: the tool's MySQL must be running, Benbow never starts it) or loaded from --dump, the site gets its own MySQL user, wp-config.php or .env is backed up in Benbow's folder and pointed at Benbow, and the old address is replaced in the database. The project files stay shared: afterwards the tool's copy of the site no longer reaches its database. `benbow import undo <site>` puts things back.
benbow import mamp [flags]
--dry-run | show what would happen, change nothing |
|---|---|
--dump <string> | load this .sql or .sql.gz instead of reading the source's MySQL (one --site) |
--existing <string> | when Benbow already has the database: use, recopy (after a backup) or skip (default "use") |
--localhost | serve sites as <name>.localhost instead of their .local names |
--migrate | also copy databases and point wp-config.php/.env at Benbow |
--site <strings> | only these hosts (server name or site name; repeatable) |
--source-password | ask for the source user's password |
--source-user <string> | MySQL user on the source (default: the one in wp-config.php/.env) |
benbow import undo
Undo a site's migration: restore its configuration, delete the copied database
benbow import undo <site> [flags]
benbow import valet
Reads Laravel Valet's site list (its files are only read) and creates one Benbow site per host, same name and folder. The tool itself is never modified and can keep running. .local names are kept (benbow domains enable local), or served as <name>.localhost with --localhost.
--migrate also brings each new site to work from Benbow: its database is copied from the tool's MySQL (only read: the tool's MySQL must be running, Benbow never starts it) or loaded from --dump, the site gets its own MySQL user, wp-config.php or .env is backed up in Benbow's folder and pointed at Benbow, and the old address is replaced in the database. The project files stay shared: afterwards the tool's copy of the site no longer reaches its database. `benbow import undo <site>` puts things back.
benbow import valet [flags]
--dry-run | show what would happen, change nothing |
|---|---|
--dump <string> | load this .sql or .sql.gz instead of reading the source's MySQL (one --site) |
--existing <string> | when Benbow already has the database: use, recopy (after a backup) or skip (default "use") |
--localhost | serve sites as <name>.localhost instead of their .local names |
--migrate | also copy databases and point wp-config.php/.env at Benbow |
--site <strings> | only these hosts (server name or site name; repeatable) |
--source-password | ask for the source user's password |
--source-user <string> | MySQL user on the source (default: the one in wp-config.php/.env) |
benbow import xampp
Reads XAMPP's site list (its files are only read) and creates one Benbow site per host, same name and folder. The tool itself is never modified and can keep running. .local names are kept (benbow domains enable local), or served as <name>.localhost with --localhost.
--migrate also brings each new site to work from Benbow: its database is copied from the tool's MySQL (only read: the tool's MySQL must be running, Benbow never starts it) or loaded from --dump, the site gets its own MySQL user, wp-config.php or .env is backed up in Benbow's folder and pointed at Benbow, and the old address is replaced in the database. The project files stay shared: afterwards the tool's copy of the site no longer reaches its database. `benbow import undo <site>` puts things back.
benbow import xampp [flags]
--dry-run | show what would happen, change nothing |
|---|---|
--dump <string> | load this .sql or .sql.gz instead of reading the source's MySQL (one --site) |
--existing <string> | when Benbow already has the database: use, recopy (after a backup) or skip (default "use") |
--localhost | serve sites as <name>.localhost instead of their .local names |
--migrate | also copy databases and point wp-config.php/.env at Benbow |
--site <strings> | only these hosts (server name or site name; repeatable) |
--source-password | ask for the source user's password |
--source-user <string> | MySQL user on the source (default: the one in wp-config.php/.env) |
benbow laravel
Runs composer create-project laravel/laravel, adds the site (served from public/) and sets APP_URL, the database (a new one with its own user when MySQL is running, else SQLite) and Mailpit in .env.
benbow laravel <name> [flags]
--aliases <strings> | extra domains, comma separated |
|---|---|
--database <string> | "new" (own MySQL database) or "sqlite" (default: new if MySQL is running) |
--domain <string> | local domain (default: <name>.localhost) |
--engine <string> | engine of the new database: mysql or pgsql (default: whichever is running, MySQL first) |
--group <string> | list the site in this group |
--ini <stringArray> | php.ini value of this site, name=value (repeatable) |
--path <string> | new or empty folder (default ~/Sites/<name>) |
--php <string> | PHP version (8.2 or newer) (default "8.4") |
benbow mail
Catch the mail PHP sends in Mailpit (status)
benbow mail [flags]
benbow mail disable
Stop catching mail (messages are kept)
benbow mail disable [flags]
benbow mail enable
Catch every mail PHP sends; inbox at https://mail.localhost
benbow mail enable [flags]
benbow mail list
The newest mail PHP sent (filter by --to or --subject)
benbow mail list [flags]
-n, --limit <int> | how many (default 20) |
|---|---|
--subject <string> | only mail with these words in the subject |
--to <string> | only mail to this address |
benbow mail show
One message's text and links (the newest without an id)
benbow mail show [id] [flags]
benbow mcp
Serves the Model Context Protocol over stdin/stdout: sites, PHP versions, logs, databases, the PHP compatibility check and wp-cli. Add it to an agent, e.g.:
claude mcp add benbow -- benbow mcp
Agents are read-only until you allow changes: benbow mcp allow <site> (or *). Before changing a site Benbow takes a snapshot; benbow mcp log shows what they did.
benbow mcp [flags]
benbow mcp allow
Let AI agents change a site (* for everything, creating sites included)
benbow mcp allow <site|*> [flags]
benbow mcp deny
Make a site (or everything) read-only for AI agents again
benbow mcp deny <site|*> [flags]
benbow mcp log
What AI agents changed (or tried to), newest first
benbow mcp log [flags]
-n, --lines <int> | how many (default 50) |
|---|
benbow mcp status
What AI agents may change
benbow mcp status [flags]
benbow mysql
Benbow runs MySQL 8.4 LTS on 127.0.0.1, port 3307 by default (3306 is usually MAMP's). Databases live in Benbow's home; the root password is generated by Benbow and kept in the login keychain.
PHP sites reach it with DB_HOST "localhost" (Benbow's socket) or "127.0.0.1:3307".
benbow mysql [flags]
benbow mysql disable
Stop MySQL (databases are kept)
benbow mysql disable [flags]
benbow mysql enable
Install, initialize and start MySQL
benbow mysql enable [flags]
--port <int> | TCP port on 127.0.0.1 (default: first free from 3307) |
|---|
benbow mysql password
Print the connection details, root password included
benbow mysql password [flags]
benbow phone
Serves one site at <site>-<mac>.local on this Mac's private network addresses (Bonjour), with HTTPS from Benbow's CA, for --minutes (default 30). Without a site, shows what is shared. The site's files and database are not changed.
benbow phone [site] [flags]
--minutes <int> | turn off after this many minutes (max 1440) (default 30) |
|---|---|
--off | stop sharing |
benbow php
Manage PHP versions
benbow php check
Runs PHP_CodeSniffer with PHPCompatibility on the site's code, before you switch its PHP version. WordPress sites: only wp-content (themes and plugins) unless --all.
benbow php check <site> [flags]
--all | WordPress: check the core files too |
|---|---|
--target <string> | PHP version to check against (default: the newest fully supported) |
benbow php install
Download, verify and install a PHP version (e.g. 8.4)
benbow php install <version> [flags]
benbow php list
List installed and available PHP versions
benbow php list [flags]
benbow php settings
Show or change php.ini settings of a PHP version.
Settings: memory_limit, upload_max_filesize, max_execution_time, display_errors. post_max_size always follows upload_max_filesize.
benbow php settings <version> [name=value...] [flags]
benbow php xdebug
Xdebug runs in step-debugging mode and only starts when triggered (browser extension, or an XDEBUG_TRIGGER cookie or parameter). Your IDE listens on 127.0.0.1:9003. Turning it on or off restarts that PHP version.
benbow php xdebug [flags]
benbow php xdebug off
Turn Xdebug off for a PHP version
benbow php xdebug off <version> [flags]
benbow php xdebug on
Turn Xdebug on for a PHP version (e.g. 8.4)
benbow php xdebug on <version> [flags]
benbow ports
The HTTPS port is the one in site addresses; 443 leaves it out. The HTTP port (0: off) only redirects to HTTPS. 443 and 80 need Benbow's helper, installed with one administrator password: it forwards them to Benbow while Benbow runs.
benbow ports [flags]
--http <int> | HTTP redirect port: 0 (off), 80, or 1024-65535 |
|---|---|
--https <int> | HTTPS port: 443, or 1024-65535 |
benbow postgres
Benbow can run PostgreSQL 18 on 127.0.0.1, port 5433 by default (5432 is usually taken by Postgres.app or Homebrew). Off until enabled; databases live in Benbow's home; the superuser (postgres) password is kept in the login keychain.
benbow postgres [flags]
benbow postgres disable
Stop PostgreSQL (databases are kept)
benbow postgres disable [flags]
benbow postgres enable
Install, initialize and start PostgreSQL
benbow postgres enable [flags]
--port <int> | TCP port on 127.0.0.1 (default: first free from 5433) |
|---|
benbow postgres password
Print the connection details, superuser password included
benbow postgres password [flags]
benbow pull
Copy a remote's database and files into the site (a snapshot is taken first)
benbow pull <site> [remote] [flags]
--dry-run | show what would change, change nothing |
|---|---|
--no-database | leave the database out |
--no-files | leave the files out |
benbow push
Copy the site's database and files to a staging remote (never production)
benbow push <site> <staging remote> [flags]
--dry-run | show what would change, change nothing |
|---|---|
--no-database | leave the database out |
--no-files | leave the files out |
--yes | do not ask |
benbow redis
Benbow can run Redis 8 on 127.0.0.1, port 6380 by default (6379 is usually taken by another Redis). Off until enabled; no password: only this Mac reaches it.
benbow redis [flags]
benbow redis disable
Stop Redis (its saved data is kept)
benbow redis disable [flags]
benbow redis enable
Install and start Redis
benbow redis enable [flags]
--port <int> | TCP port on 127.0.0.1 (default: first free from 6380) |
|---|
benbow remote
Production and staging copies of a site (for benbow pull and push)
benbow remote remove
Forget a remote and its password
benbow remote remove <site> <name> [flags]
benbow remote set
A remote is a copy of the site on a server. Transports: ssh your keys, ssh-agent and ~/.ssh/config (/usr/bin/ssh); files with rsync, database with the server's wp-cli or mysqldump sftp for hosts without a shell; database through a temporary PHP bridge ftps / ftp same, over FTP (plain FTP sends the password unencrypted) A password (--password asks for it) is kept in the login keychain.
benbow remote set <site> [flags]
--exclude <strings> | patterns never synced (default: .git, node_modules, .DS_Store, cache) |
|---|---|
--host <string> | server name |
--kind <string> | production (pull only) or staging (pull and push) (default "production") |
--name <string> | remote name (default: its kind) |
--no-password | forget the stored password |
--password | ask for the password and keep it in the keychain |
--path <string> | project folder on the server |
--paths <strings> | folders to sync (default: wp-content/uploads, storage/app/public, or everything) |
--port <int> | port (default of the transport) |
--transport <string> | ssh, sftp, ftps or ftp (default "ssh") |
--url <string> | the remote site's address |
--user <string> | login |
--webroot <string> | folder served on the web, inside --path (Laravel: public) |
benbow remote show
List a site's remotes
benbow remote show <site> [flags]
benbow site
Manage sites
Subcommands: add, archive, disable, enable, list, logs, php, remove, set, unarchive
benbow site add
Add a site served at https://<name>.localhost (or --domain)
benbow site add <name> [flags]
--aliases <strings> | extra domains, comma separated |
|---|---|
--create-folder | create the document root (missing or empty) for a new site |
--database <string> | "new" for a database with its own user, or the name of an existing one to link |
--domain <string> | local domain, e.g. demo.benbow.test (default: <name>.localhost) |
--engine <string> | database engine for --database: mysql or pgsql (default "mysql") |
--force | add the folder even if it has no index.php or index.html |
--group <string> | list the site in this group, e.g. Clients/Acme (see benbow group) |
--ini <stringArray> | php.ini value of this site, name=value (repeatable) |
--path <string> | document root (default: current folder) |
--php <string> | PHP version (e.g. 8.4, 8.2) (default "8.4") |
benbow site archive
Put a site away: not served, listed apart (folder and database are kept)
benbow site archive <name> [flags]
benbow site disable
Stop serving a site, keeping it in the list
benbow site disable <name> [flags]
benbow site enable
Serve a site that was disabled
benbow site enable <name> [flags]
benbow site list
List sites
benbow site list [flags]
benbow site logs
Show the end of a site's access log (or --php for PHP errors)
benbow site logs <name> [flags]
--clear | empty both logs of the site |
|---|---|
-n, --lines <int> | number of lines (max 2000) (default 50) |
--php | PHP errors, warnings and notices instead of requests |
benbow site php
Show or change php.ini settings of one site (setting= goes back to the PHP version's)
benbow site php <name> [setting=value...] [flags]
benbow site remove
Remove a site (its folder is left untouched)
benbow site remove <name> [flags]
--drop-database | also delete the site's database and its own MySQL user |
|---|---|
--yes | do not ask before deleting the database |
benbow site set
Change a site's PHP version, folder, domain, aliases, group or title
benbow site set <name> [flags]
--aliases <strings> | extra domains, comma separated, replacing the current ones ("" clears) |
|---|---|
--domain <string> | new local domain, e.g. demo.benbow.test |
--force | accept a folder without index.php or index.html |
--group <string> | move the site into a group, e.g. Clients/Acme ("" for the top level) |
--path <string> | new document root |
--php <string> | new PHP version (e.g. 8.3) |
--title <string> | label shown in the list instead of the name ("" clears) |
benbow site unarchive
Bring back an archived site and serve it again
benbow site unarchive <name> [flags]
benbow snapshot
Snapshots save a site's project folder (APFS clones: no space until files change; .git and node_modules are left out) and its database, in Benbow's folder.
benbow snapshot create
Take a snapshot
benbow snapshot create <site> [flags]
--note <string> | what this snapshot is for |
|---|
benbow snapshot delete
Delete a snapshot
benbow snapshot delete <site> <id> [flags]
benbow snapshot keep
Show or set how many snapshots are kept per site (default 10)
benbow snapshot keep [n] [flags]
benbow snapshot list
List a site's snapshots, newest first
benbow snapshot list <site> [flags]
benbow snapshot restore
Put the site's files and database back (the current state is saved first)
benbow snapshot restore <site> <id> [flags]
--yes | do not ask |
|---|
benbow start
Start Caddy and the PHP versions your sites use
benbow start [flags]
--https-port <int> | change the HTTPS port (default: 8443, or the first free port after it) |
|---|
benbow status
Show services, sites and their URLs
benbow status [flags]
benbow stop
Stop all Benbow services
benbow stop [flags]
benbow trust
Adds Benbow's local root certificate to your login keychain as trusted for your user only. macOS shows one dialog asking for your password or Touch ID. No sudo, nothing system-wide. Undo with: benbow untrust
benbow trust [flags]
benbow uninstall
Stops every Benbow service, removes Benbow's CA and MySQL password from the login keychain and deletes ~/Library/Application Support/benbow, MySQL databases included. Your site folders are never touched.
benbow uninstall [flags]
--yes | do not ask for confirmation |
|---|
benbow untrust
Remove Benbow's certificate authority from the login keychain
benbow untrust [flags]
benbow update
Show component updates (PHP, MySQL, Caddy, Mailpit, Adminer, wp-cli)
benbow update [flags]
benbow update apply
Install updates (all, or e.g. caddy php-8.4) and restart what uses them
benbow update apply [component...] [flags]
benbow update check
Download and verify the signed manifest; install nothing
benbow update check [flags]
benbow update rollback
Go back to the version a component had before its last update
benbow update rollback <component> [flags]
benbow version
Print the Benbow version
benbow version [flags]
benbow wordpress
Create a new WordPress site: folder, database, wp-config.php, installation
benbow wordpress <name> [flags]
--accept-changes | with --blueprint: accept sources whose content changed since first use |
|---|---|
--admin-email <string> | administrator email (default admin@<domain>) |
--admin-user <string> | administrator user name (default "admin") |
--aliases <strings> | extra domains, comma separated |
--blueprint <string> | apply this blueprint (see benbow blueprint) |
--domain <string> | local domain, e.g. blog.benbow.test (default: <name>.localhost) |
--group <string> | list the site in this group, e.g. Clients/Acme (see benbow group) |
--ini <stringArray> | php.ini value of this site, name=value (repeatable) |
--path <string> | new or empty folder (default ~/Sites/<name>) |
--php <string> | PHP version (default "8.4") |
--title <string> | site title (default: the name) |
--yes | with --blueprint: do not ask |
benbow wp
Run wp-cli for a site, e.g. `benbow wp shop plugin list`.
Every argument after the site name goes to wp unchanged, and its output and exit code are passed through (no --json envelope).
benbow wp <site> [wp arguments...] [flags]