Most people upgrading are coming from 0.3.0, the version Homebrew shipped for years.
It upgrades cleanly, but three leftovers can outlive it. Work through this in order.
Before you start: don't run asimov to check your version. v0.3.0 parses no
arguments at all — it ignores --version, --help, and every subcommand, and goes
straight to scanning and writing Time Machine exclusions. Read the version out of the
file instead:
grep -m1 -E '@version|ASIMOV_VERSION=' "$(command -v asimov)"Uninstalling first leaves the LaunchAgent behind with nothing to run:
brew services stop asimov
launchctl bootout gui/$(id -u)/homebrew.mxcl.asimov 2>/dev/null
rm -f ~/Library/LaunchAgents/homebrew.mxcl.asimov.plistbrew uninstall asimov
brew install asimovIf brew uninstall reports Permission denied @ apply2files, the old cellar files are
owned by another user — Homebrew prints the sudo command to force it, and that is safe
here.
v0.10.0 keeps state in ~/.cache/asimov/. If anything ever ran Asimov as root, those
files are root-owned and unreadable by you:
rm -rf ~/.cache/asimovv0.10.0 and earlier crashed outright on this with a bare Permission denied. Current
versions warn and carry on, but clearing it is still the fix.
doctor exists only in current versions, so it comes last — there is nothing to run
before the new binary is in place:
asimov doctorIt reports a shadowed binary, a leftover schedule, an unreadable cache, and a bad config,
and exits non-zero if it finds any. If it prints usage errors or starts a scan instead,
an old binary is still first on your PATH — doctor names the one it found.
Asimov is a one-shot scan, not a daemon. After brew services start asimov, ps aux | grep asimov finding nothing is expected: it scans, excludes, and exits. To confirm it is
actually scheduled, use asimov doctor.
0.10.0 folds the fork's work (v0.4.0–v0.8.0, plus a v0.9.0-beta round) back into
the original project, now homed at AsimovMac/asimov
(transferred from stevegrunwell/asimov, which now redirects there). It also reverts
the LaunchAgent label from com.django23.asimov back to the original com.stevegrunwell.asimov.
The installers remove the old com.django23.asimov agent for you. If you want to
migrate by hand, unload the fork's agent first so you don't end up with two daily jobs:
launchctl bootout gui/$(id -u)/com.django23.asimov 2>/dev/null
rm ~/Library/LaunchAgents/com.django23.asimov.plist 2>/dev/nullThen install v0.10.0:
curl -fsSL https://raw.githubusercontent.com/AsimovMac/asimov/main/scripts/install-remote.sh | bashYour ~/.config/asimov/config and ~/.cache/asimov/ are unaffected.
v0.5.0 is a breaking release. Here's what changed:
Global cache directories (~/.cache, ~/.gradle/caches, etc.) are no longer excluded by default. To restore the previous behavior, create a config file:
mkdir -p ~/.config/asimov
cat > ~/.config/asimov/config << 'EOF'
[fixed_dirs]
enabled = true
EOFThe plist label changed from com.stevegrunwell.asimov to com.django23.asimov. If upgrading a manual install, unload the old agent first:
launchctl unload ~/Library/LaunchAgents/com.stevegrunwell.asimov.plist 2>/dev/null
make installHomebrew users: brew upgrade handles this automatically.
- "Already excluded, skipping" messages are now hidden by default (use
--verboseto see them). - New
--quietflag suppresses all output except errors. - ANSI colors are disabled when stdout is not a terminal (e.g. launchd logs).
Welcome! This fork adds config file support, 30+ new ecosystem patterns, --dry-run, --verbose, --quiet, performance improvements, and daily scheduling via launchd.
brew uninstall asimov 2>/dev/null
# or, if installed manually:
launchctl unload ~/Library/LaunchAgents/com.stevegrunwell.asimov.plist 2>/dev/null
rm /usr/local/bin/asimovcurl -fsSL https://raw.githubusercontent.com/AsimovMac/asimov/v0.9.0-beta.1/scripts/install-remote.sh \
| ASIMOV_REF=v0.9.0-beta.1 bashThe original asimov did not have this feature. To enable it:
mkdir -p ~/.config/asimov
cat > ~/.config/asimov/config << 'EOF'
[fixed_dirs]
enabled = true
EOF