# routeup update / uninstall / version

> Upgrade routeup in place, remove it and everything setup installed, or print the installed version.

## routeup update

```bash
routeup update
```

`update` checks for a newer release and installs it in place. It detects how
routeup was installed and uses the matching path:

- **Homebrew installs** are upgraded with the Homebrew flow (you can also run
  `brew upgrade routeup`).
- **Direct binary installs** download the latest GitHub release, verify it
  against `checksums.txt`, and replace the running binary.

Check without installing:

```bash
routeup update --check
```

routeup never checks for updates automatically. Running `update` or
`update --check` is what contacts GitHub.

After installing a release, `update` refreshes privileged port setup. On macOS,
that replaces the root-owned helper copy used by the port-443 LaunchDaemon. On
Linux, it reapplies `cap_net_bind_service` because the capability is attached
to the replaced binary inode. This step may ask for your password; if it cannot
finish, rerun `routeup setup`.

A manual package-manager upgrade cannot refresh the privileged helper itself.
[`routeup doctor`](/docs/cli-reference/doctor) detects a stale macOS helper or a
lost Linux capability and asks you to rerun setup.

## routeup uninstall

```bash
routeup uninstall
routeup uninstall --yes   # skip the confirmation prompt
```

`uninstall` asks for confirmation unless `-y/--yes` is supplied. Before system
cleanup, it checks live CLI owners:

- If a runner or standalone expose owner is active, uninstall aborts. Stop that
  command in its owning terminal and retry.
- If all live owners are foreground or detached serve commands, uninstall stops
  them cooperatively and waits for route/exposure cleanup.

It then reverses what [setup](/docs/cli-reference/setup) installed:

- stops the local agent,
- removes the root-owned port-443 helper and LaunchDaemon (macOS) or capability
  (Linux),
- removes the routeup CA from your OS trust store,
- deletes generated certificates and the `~/.routeup` state directory.

It is designed to work even mid-upgrade, when the binary is being replaced.
Removing the package alone (`brew uninstall`, deleting the binary) does **not**
untrust the CA or remove the forwarder, run `routeup uninstall` first for a
clean removal.

With an overridden/development state directory, uninstall validates the setup
marker, removes only recognized routeup files, preserves unrelated files, and
does not remove the global privileged-port helper.

For the default profile, failures while removing the privileged helper, trust
entry, or state directory are reported as warnings so the remaining teardown can
continue. Owner-control or agent-shutdown failures abort before system cleanup.

## routeup version

```bash
routeup version
```

Print the installed routeup version. `routeup --version` prints the same output.
