Skip to main content
Working with an agent? Give them a link to this page as markdown.

Automate Analyzer updates

Desktop Watcher clients installed with the public installer and running through their login agents automatically update to match the version of the Watcher server they connect to. If that server stays on an old release, the desktop clients stay on that release too.

You still need to keep your self-hosted Analyzer deployment up to date. Update the Analyzer, API, and background workloads together using the target release's deployment definitions.

We recommend checking for releases daily, reviewing the required upgrade actions, and automatically deploying an approved release during a maintenance window. These are operating recommendations, not a scheduler built into Watcher. Your deployment tooling owns the server update.

1. Establish the update policy

Before enabling a job, record:

  • Who approves releases and who responds when an update fails.
  • Where the job gets release files, server images, and credentials.
  • The check frequency, maintenance window, and timezone.
  • The backup location, restore procedure, and failure-notification destination.

Use the published releases or your approved internal release catalog to discover candidates. Exclude prereleases. Check the release notes and required upgrade actions for every version crossed before approving an exact target version. A discovery job can open a change request; it must not turn a newly discovered release into a deployment approval.

Use short-lived credentials that the scheduled job can renew without an interactive login. Test registry access as the same operating-system user or runner that will deploy. The bundled AWS registry-login timer refreshes Docker credentials; it does not update Watcher.

2. Choose where the job runs

Your setupRecommended mechanismWhat approval changes
Compose on a Linux hostA systemd timer or existing host scheduler invokes your deployment jobThe exact release the job may install
Existing CI/CD or Kubernetes/GitOpsA scheduled release check proposes a change to version-controlled deployment inputsA reviewed commit or pipeline approval promotes the target release
Internal registry or restricted networkAn import pipeline prepares an approved release for the deployment job aboveMatching release files and images become available in your internal catalog

Compose on a Linux host

Have your coding agent adapt the deployment sequence in the next section into your host's deployment job. Put the job and its scheduler configuration under your normal configuration management. If you already deploy from CI, keep using that pipeline instead of introducing a second deployment owner.

Keep a fixed Compose project name when unpacking each release into a new directory. Run docker compose ls to identify the existing project and pass that name with docker compose --project-name <existing-project> ... on every deployment command. Preserve the database and audit-log volumes, external database address, and paths to operator-owned configuration. A different project name can create a second stack with empty volumes.

Give a timer an explicit working directory and executable path. Schedule it inside the agreed maintenance window and prevent concurrent deployments, including manual ones. Recheck the window when the job starts so a missed timer run cannot deploy after the window has closed.

CI/CD and Kubernetes/GitOps

Use one reviewed change to select the target deployment definitions and matching image tag. Keep secrets in your existing secret store. Serialize deployments to the same environment, and make backup and bootstrap failures stop the pipeline before it updates the long-running workloads.

If your deployment uses the separately distributed Watcher Helm chart, use the target chart with its matching image.tag. Its pre-upgrade bootstrap Job must finish before rollout. Confirm your GitOps controller honors that ordering; rendering a chart into manifests alone does not establish it. Disable automatic application rollback after a database migration: recovery needs the matching database backup as well as the previous application.

Internal registries and restricted networks

Run release discovery, verification, and scanning in the environment that can reach the release sources. Import the release files and all three server image repositories together, following Use internal mirrors. Let the deployment job select only completed, approved imports. Keep the previous release available for recovery.

Server image mirroring and client mirroring are separate choices. Clients installed from an internal mirror need an approved client release distributed through your fleet tooling, even after the server has updated.

3. Configure the deployment job

Implement Update the server in your existing deployment tooling. Use this sequence as the job's acceptance criteria:

  1. Read the installed version and approved target. Exit without changing the deployment if they match or no target is approved. Treat an unreadable version or approval record as a failure. Handle downgrades as recovery.
  2. Confirm all required upgrade actions are complete, the maintenance window is open, and no other deployment is running.
  3. Verify and stage the target release files and images. Take and verify the pre-update database and configuration backups before running bootstrap.
  4. Apply operator-owned configuration to the target deployment definitions. Preserve storage, secrets, proxy settings, and the choice of whether to run async grading. Refresh release-owned utilities with the release.
  5. Run the target bootstrap workload and require success. Deploy the matching API, Analyzer, retention cleanup, and enabled grading-scheduler workloads.
  6. Require the public health response's status to be healthy and the version response to report the target release. Complete Verify an update, including a test client, before reporting success.

A timer that only pulls images does not perform this sequence. Likewise, restarting only the Analyzer leaves the server components on different releases. Keep the approved version pinned throughout the job.

Record the previous and target versions, backup reference, start time, and verification result without secret values. On failure, notify the owner and pause further deployments until the failed run is investigated. Application rollback alone cannot undo a database migration; use the documented recovery procedure.

4. Verify the automation before enabling its schedule

Run the job manually as its scheduled identity. In a test environment, check an approved upgrade, a repeated run at the installed version, a run without approval, and a failed backup or bootstrap. The last case must prevent rollout and deliver a notification. Confirm credentials renew without your interactive session and that the job targets the existing storage.

Record the job location, owner, schedule, last result, and next run. Enable the schedule only after these checks pass. Monitor missed checks and releases waiting for approval as well as failed deployments, so an idle pipeline does not leave Watcher indefinitely out of date.

Public-installer clients running through their login agents check the server every two to two-and-a-half hours and can update during your server verification. A strict client canary gate requires mirror-backed distribution. Foreground-only public-installer clients require watcher update; mirror-backed clients require fleet rollout. See client updates.

During guided setup, either verify the configured automation or explicitly defer it with an owner, reason, and follow-up date. Until it is enabled, that owner must keep the deployment current manually.