More

Upgrade and uninstall

One command keeps Cove up to date, and one removes it. Your sites stay put either way unless you say otherwise.

Upgrade#

cove upgrade

Cove checks GitHub for its latest release and, if it's newer than yours, puts it in place of the cove command. Then it looks after the rest:

  • FrankenPHP, the web server and PHP, moves to its latest release.
  • Adminer, the database tool at https://db.cove.localhost, moves to its latest release, with Cove's theme for it refreshed.
  • What Cove manages is refreshed: the Whoops error pages, the login helper in every WordPress site, and the watchdog.
  • The menu bar app, if you turned it on, is rebuilt when the new release changed it.

Last, Cove reloads, so the dashboard and every site pick up the new release. Your sites, their databases and your settings are left as they are.

FrankenPHP lives in a folder that belongs to root, so replacing it asks for your password (sudo), on macOS as well as Linux. On Linux, replacing the cove command asks too. From a script, with no terminal to ask on, run sudo cove upgrade.

To see which release you have:

cove version

The changelog lists what each release changed.

Trying an unreleased build#

To try a fix before it's released, run the installer with --main. It builds Cove from the newest source on GitHub instead of the latest release.

bash <(curl -fsSL https://cove.run/install-cove.sh) --main

Run the installer again without --main to go back to the latest release.

Uninstall#

cove uninstall --dry-run       # shows what it would remove, changes nothing
cove uninstall                 # removes Cove, keeps your sites
cove uninstall --purge         # removes Cove and every site

cove uninstall lists what it's about to do and asks before it starts. It:

  • stops Cove's services (FrankenPHP, Mailpit, MariaDB, the watchdog and any Laravel workers) and takes them out of launchd on macOS or systemd on Linux,
  • ends background shares and stops LAN advertisements,
  • removes the menu bar app,
  • takes Cove's lines out of /etc/hosts,
  • and removes the cove command.

Your sites in ~/Cove and their databases stay. Removing the folder yourself afterwards leaves the databases behind, so use --purge to remove both.

Removing everything#

--purge also deletes every site the way cove delete does (its files, the MariaDB or PostgreSQL database Cove made for it, and its Redis keys), removes Cove's local certificate authority from your system's trust store, and deletes ~/Cove with its backups, snapshots, logs and settings. It asks you to type delete first. A database you pointed a site's wp-config.php at by hand stays, and the summary names it. Take a cove backup of anything you want to keep.

Without a terminal#

From a script, pass --yes. Without it, cove uninstall stops rather than remove anything it couldn't ask about.

cove uninstall --yes

The packages Cove installed#

MariaDB, Mailpit, FrankenPHP, gum and WP-CLI, plus PostgreSQL and Redis if a Laravel app set them up, stay installed either way, since other things on your computer may use them. PostgreSQL and Redis keep running too. The summary at the end of the uninstall names the commands that remove them. On macOS:

brew services stop postgresql@17 redis  # only if Cove set them up
brew uninstall gum mariadb mailpit wp-cli
brew uninstall postgresql@17 redis  # only if Cove set them up

FrankenPHP isn't a Homebrew package, so remove its file by hand: the summary prints the path. On Linux, the summary prints the apt or dnf line for your distribution.

Something wrong or missing here? Open an issue ↗ Every command also explains itself: cove help <command>.