Skip to Content

Updating ajat

ajat update installs the newest release your license includes, from inside the tool. After the first installation you no longer download a package for every release: one command checks, downloads, verifies and installs.

Available from ajat v1.0.4. If ajat update answers “unknown command”, install v1.0.4 or later once from your order page; every later release then arrives through update.

ajat update --check # report only; changes nothing ajat update # Linux sudo ajat update # macOS

Aliases: upgrade, self-update

The update is downloaded from Climakers using your activated license, verified against the SHA-256 checksum produced when the release was built, and installed in place of the running binary. Only your license credentials are sent, and only to Climakers; no GitHub account or other access is needed.

Flags

FlagWhat it does
--checkReport whether a newer release exists; change nothing
--versionInstall this release tag, for example v1.0.3 — also how you go back to an older one
--yesInstall without the confirmation prompt (required in CI and scripts)
--forceAsk again instead of using the 6-hour check cache, reinstall the same version, or install the macOS package when the running binary is not /usr/local/bin/ajat
--formattext (default) or json for scripts

Updating on macOS

On macOS the update is the same signed, notarized .pkg you installed from, applied with Apple’s installer. Installing a package needs administrator rights, so run:

sudo ajat update
$ sudo ajat update Password: Update ajat v1.0.3 to the latest version? [y/N] y → Updating ajat v1.0.3 → v1.0.4 (ajat-v1.0.4-darwin-universal.pkg, 10.3 MB) ✓ downloaded and checksum verified ✓ installed to /usr/local/bin/ajat ✅ Updated ajat to v1.0.4

What sudo does, and does not do:

  • It only runs Apple’s installer. The package installs one file, /usr/local/bin/ajat, and records a receipt you can list with pkgutil --pkgs | grep climakers.
  • Your license and settings stay yours. Under sudo, ajat reads your license from your own home folder and writes nothing there, so no file changes owner.
  • Forgetting sudo is harmless. The command stops before downloading anything and prints the exact command to run.
  • No Gatekeeper prompt. The package is notarized by Apple.
  • One installation location. If ajat runs from somewhere other than /usr/local/bin (for example a copy in your home folder), the update refuses, because the package would leave that copy unchanged. Remove the other copy, or pass --force to install to /usr/local/bin anyway.

Check the result with ajat --version.

Updating on Linux

ajat update

The binary is replaced in place with a single atomic rename, so it is never half-written, and a ajat command that is already running keeps using the old binary until it exits.

The update never uses sudo on Linux. The directory that holds ajat must be writable by you. If you installed into /usr/local/bin as root, install once more into a directory you own, such as ~/.local/bin (see Installation and First-Time Setup); later updates then work without sudo.

Windows has no published release, so update reports it as unsupported.

Your subscription and older versions

While your subscription is active, every new release is included. After it ends you keep the version you have, and you can still install any release published before the end date:

$ ajat update ❌ Error: your subscription ended on 2026-06-01; this release was published after that Hint: The last version your license includes is v1.0.3: run 'ajat update --version v1.0.3'. Renew your subscription to receive every new release.

Offline (local) licenses update too, as long as the license file was issued signed. The update service verifies that signature without any store account, and such licenses download from Climakers’ release storage. A license file issued before signing existed is refused with “this local license is not signed”: ask for a reissued file and activate it with ajat license activate --license-file <path>. See License.

Checks, limits and CI

  • --check answers from a local cache for 6 hours. Add --force to ask again, for example right after a release was announced.
  • Requests are limited per license (5 installs per hour). Normal use — a check a day and one install per release — never reaches the limit. When it does, the command says how long to wait and sends nothing until then.
  • A downloaded update is kept for 24 hours, so re-running after a failed install does not download it again.
  • In CI there is nobody to answer the prompt, so update refuses without --yes. Prefer pinning the version your pipeline installs (ajat update --version v1.0.4 --yes) over updating on every run.

For scripts, --format json prints the outcome:

{ "changed": false, "checked_at": "2026-09-19T12:00:00Z", "current": "v1.0.3", "latest": "v1.0.4", "update_available": true }

update needs no Jira credentials and does not count toward your license’s command limit. The service address is the update.endpoint configuration key; change it only when Climakers support asks you to.

If it fails

MessageCauseFix
installing the macOS package requires administrator rightsmacOS packages are installed with Apple’s installer, which needs rootsudo ajat update; nothing was downloaded yet
… is not writable by the current user (Linux)The binary lives in a directory owned by rootInstall once into a directory you own, such as ~/.local/bin
this ajat runs from …, but the macOS package installs to /usr/local/bin/ajatAnother copy of ajat is first on your PATHRemove that copy, or sudo ajat update --force
too many update requests; try again in …The per-license limit was reachedWait the time shown; in CI pin a version instead of updating each run
your subscription ended on …The release was published after your subscription endedInstall the version the hint names with --version, or renew
this local license is not signedThe license file predates license signingAsk for a reissued license file and activate it with --license-file
the update service is unavailableA temporary outageNothing was changed; try again later

Still stuck? Run the command with --debug and see Support.

Last updated on