Updating & Uninstalling
Updating & Uninstalling
Section titled “Updating & Uninstalling”Updating
Section titled “Updating”Update to the latest version with a single command:
hermes updateThis pulls the latest code, updates dependencies, and prompts you to configure any new options that were added since your last update.
What happens during an update
Section titled “What happens during an update”When you run hermes update, the following steps occur:
- Pairing-data snapshot — a lightweight pre-update state snapshot is saved (covers
~/.hermes/pairing/, Feishu comment rules, and other state files that get modified at runtime). Rollbackable viahermes backup restore --state pre-update. - Git pull — pulls the latest code from the
mainbranch and updates submodules - Dependency install — runs
uv pip install -e ".[all]"to pick up new or changed dependencies - Config migration — detects new config options added since your version and prompts you to set them
- Gateway auto-restart — running gateways are refreshed after the update completes so the new code takes effect immediately. Service-managed gateways (systemd on Linux, launchd on macOS) are restarted through the service manager. Manual gateways are relaunched automatically when Hermes can map the running PID back to a profile.
Preview-only: hermes update --check
Section titled “Preview-only: hermes update --check”Want to know if you’re behind origin/main before actually pulling? Run hermes update --check — it fetches, prints your local commit and the latest remote commit side-by-side, and exits 0 if in sync or 1 if behind. No files are modified, no gateway is restarted. Useful in scripts and cron jobs that gate on “is there an update”.
Full pre-update backup: --backup
Section titled “Full pre-update backup: --backup”For high-value profiles (production gateways, shared team installs) you can opt into a full pre-pull backup of HERMES_HOME (config, auth, sessions, skills, pairing):
hermes update --backupOr make it the default for every run:
update: backup: true--backup was the always-on behavior in earlier builds, but it was adding minutes to every update on large homes, so it’s now opt-in. The lightweight pairing-data snapshot above still runs unconditionally.
Expected output looks like:
$ hermes updateUpdating Hermes Agent...📥 Pulling latest code...Already up to date. (or: Updating abc1234..def5678)📦 Updating dependencies...✅ Dependencies updated🔍 Checking for new config options...✅ Config is up to date (or: Found 2 new options — running migration...)🔄 Restarting gateways...✅ Gateway restarted✅ Hermes Agent updated successfully!Recommended Post-Update Validation
Section titled “Recommended Post-Update Validation”hermes update handles the main update path, but a quick validation confirms everything landed cleanly:
git status --short— if the tree is unexpectedly dirty, inspect before continuinghermes doctor— checks config, dependencies, and service healthhermes --version— confirm the version bumped as expected- If you use the gateway:
hermes gateway status - If
doctorreports npm audit issues: runnpm audit fixin the flagged directory
:::warning Dirty working tree after update
If git status --short shows unexpected changes after hermes update, stop and inspect them before continuing. This usually means local modifications were reapplied on top of the updated code, or a dependency step refreshed lockfiles.
:::
If your terminal disconnects mid-update
Section titled “If your terminal disconnects mid-update”hermes update protects itself against accidental terminal loss:
- The update ignores
SIGHUP, so closing your SSH session or terminal window no longer kills it mid-install.pipandgitchild processes inherit this protection, so the Python environment cannot be left half-installed by a dropped connection. - All output is mirrored to
~/.hermes/logs/update.logwhile the update runs. If your terminal disappears, reconnect and inspect the log to see whether the update finished and whether the gateway restart succeeded:
tail -f ~/.hermes/logs/update.logCtrl-C(SIGINT) and system shutdown (SIGTERM) are still honored — those are deliberate cancellations, not accidents.
You no longer need to wrap hermes update in screen or tmux to survive a terminal drop.
Checking your current version
Section titled “Checking your current version”hermes versionCompare against the latest release at the GitHub releases page.
Updating from Messaging Platforms
Section titled “Updating from Messaging Platforms”You can also update directly from Telegram, Discord, Slack, WhatsApp, or Teams by sending:
/updateThis pulls the latest code, updates dependencies, and restarts running gateways. The bot will briefly go offline during the restart (typically 5–15 seconds) and then resume.
Manual Update
Section titled “Manual Update”If you installed manually (not via the quick installer):
cd /path/to/hermes-agentexport VIRTUAL_ENV="$(pwd)/venv"
# Pull latest code and submodulesgit pull origin maingit submodule update --init --recursive
# Reinstall (picks up new dependencies)uv pip install -e ".[all]"uv pip install -e "./tinker-atropos"
# Check for new config optionshermes config checkhermes config migrate # Interactively add any missing optionsRollback instructions
Section titled “Rollback instructions”If an update introduces a problem, you can roll back to a previous version:
cd /path/to/hermes-agent
# List recent versionsgit log --oneline -10
# Roll back to a specific commitgit checkout <commit-hash>git submodule update --init --recursiveuv pip install -e ".[all]"
# Restart the gateway if runninghermes gateway restartTo roll back to a specific release tag:
git checkout v0.6.0git submodule update --init --recursiveuv pip install -e ".[all]"Rolling back may cause config incompatibilities if new options were added. Run hermes config check after rolling back and remove any unrecognized options from config.yaml if you encounter errors.
Note for Nix users
Section titled “Note for Nix users”If you installed via Nix flake, updates are managed through the Nix package manager:
# Update the flake inputnix flake update hermes-agent
# Or rebuild with the latestnix profile upgrade hermes-agentNix installations are immutable — rollback is handled by Nix’s generation system:
nix profile rollbackSee Nix Setup for more details.
Uninstalling
Section titled “Uninstalling”hermes uninstallThe uninstaller gives you the option to keep your configuration files (~/.hermes/) for a future reinstall.
Manual Uninstall
Section titled “Manual Uninstall”rm -f ~/.local/bin/hermesrm -rf /path/to/hermes-agentrm -rf ~/.hermes # Optional — keep if you plan to reinstallIf you installed the gateway as a system service, stop and disable it first:
hermes gateway stop# Linux: systemctl --user disable hermes-gateway# macOS: launchctl remove ai.hermes.gateway