Skip to content

Updates

anonymizer updates itself via a clear in-UI flow. There’s no silent auto-update; you decide when.

Desktop app (macOS)

The native macOS app has its own built-in updater (Sparkle, industry-standard on macOS). Check for Updates in the app menu checks on demand; the “Automatically check for updates” toggle in Settings enables a scheduled check (at most once every 24 hours, on launch or while running). Updates are downloaded from dl.anonymizer.site, signature-verified before install, and applied with an app restart — settings and downloaded language models are preserved. The app does not use version.json — that file serves only the CLI flow below.

How the CLI update check works

  1. Each time you launch the web UI, a background request fetches https://anonymizer.site/version.json with a 2-second timeout.
  2. If a newer version is available, an [Update] banner appears at the top of the UI. Clicking it shows the changelog and an “Update now” button.
  3. Clicking “Update now” launches a small detached process (anonymizer.updater) that runs uv tool upgrade --reinstall-package docs-anonymizer docs-anonymizer. The running web UI shuts down (HTTP request returns an overlay first) and the detached process relaunches anonymize once the upgrade is done. No manual restart needed.

The check is the only outbound network request made by the CLI. The redaction engine itself never opens a socket — there’s a test that enforces this. (The macOS app’s network behavior is listed on What leaves your machine.)

What’s in version.json

{
"version": "0.2.28",
"sha256": "928c06cf2830a9c32b19724e1c28cd445ccb69cf2edba68cc7b04c7b65259266",
"url": "https://pypi.org/project/docs-anonymizer/0.2.28/",
"released_at": "2026-05-28T09:46:58Z",
"schema_version": 1,
"notes_url": "https://anonymizer.site/changelog#v0-2-28"
}

The sha256 matches the wheel published on PyPI for that version, so you can verify integrity before applying.

Disabling the check

For air-gapped or paranoid setups, use either the CLI flag (one-off) or the environment variable (persistent):

Terminal window
anonymize --no-update-check
Terminal window
export ANONYMIZER_NO_UPDATE_CHECK=1
anonymize

Both skip the version fetch entirely. The banner never appears.

Pointing the check at a mirror

In an air-gapped setup you can serve your own copy of version.json and tell the app to use it via ANONYMIZER_VERSION_URL:

Terminal window
export ANONYMIZER_VERSION_URL=https://updates.your-corp.example/anonymizer/version.json

For the actual upgrade, the detached updater runs uv tool upgrade and inherits the environment, so UV_INDEX_URL against your private PyPI mirror is also respected:

Terminal window
export UV_INDEX_URL=https://pypi.your-corp.example/simple

See Corporate setup for the full IT-admin scenario.