Update Watcher
Update the self-hosted server first. Watcher clients
installed with the public installer then follow the server version
automatically or when you run watcher update.
Update the server
-
Back up the database and deployment configuration.
-
Verify and unpack the new self-host bundle beside the current bundle. Read the new
WATCHER_IMAGE_TAGfrom the bundle's.env.example. If you use an internal registry, import the new tag forxylon-api,bootstrap, andanalyzerbefore continuing. -
From the current deployment directory, run:
cp <new-bundle>/docker-compose.yml docker-compose.ymlsed -i 's/^WATCHER_IMAGE_TAG=.*/WATCHER_IMAGE_TAG=<new-tag>/' .envdocker compose pulldocker compose up -d -
Confirm the update:
docker compose ps -adocker compose logs watcher-bootstrapcurl -fsS "http://localhost:$(docker compose port analyzer 80 | sed 's/.*://')/api/v1/health"
The bootstrap container should exit successfully after applying database
migrations. Refresh any release-owned files you use from support-bundle.sh,
scripts/, auth-proxy/, prompts/, and modules/. Preserve your .env,
server-config.yaml, Compose overrides, certificates, and proxy configuration.
If you use the bundled Terraform module, update it separately and review
terraform plan. Read Replace the instance
before applying a plan that replaces the host.
To roll back, stop the stack, restore the previous docker-compose.yml and
WATCHER_IMAGE_TAG, and run docker compose pull. Then follow the
restore procedure with the pre-update database
backup. This starts the previous server release against the restored database.
Update Watcher clients
A client installed with the public installer and running through its login service checks every two to two-and-a-half hours. It reads the configured server's version and installs that client release, including moving back to an older release after a server rollback. Sign-in and local settings are kept.
To update immediately on one machine, run:
watcher update
watcher --version
Clients running only in the foreground do not check automatically. Run
watcher update for those clients.
Clients installed from an internal mirror do not update themselves. Publish the approved client release to the mirror and redeploy it through your fleet tooling. An MDM installation that uses the public installer can rely on the built-in update check while the MDM continues to repair the installation.
See Client deployment for installation paths and MDM rollout for managed fleets.