| --- |
| sidebar_position: 3 |
| title: "Updating & Uninstalling" |
| description: "How to update Hermes Agent to the latest version or uninstall it" |
| --- |
| |
| # Updating & Uninstalling |
|
|
| ## Updating |
|
|
| Update to the latest version with a single command: |
|
|
| ```bash |
| hermes update |
| ``` |
|
|
| This pulls the latest code, updates dependencies, and prompts you to configure any new options that were added since your last update. |
|
|
| :::tip |
| `hermes update` automatically detects new configuration options and prompts you to add them. If you skipped that prompt, you can manually run `hermes config check` to see missing options, then `hermes config migrate` to interactively add them. |
| ::: |
|
|
| ### What happens during an update |
|
|
| When you run `hermes update`, the following steps occur: |
|
|
| 1. **Git pull** β pulls the latest code from the `main` branch and updates submodules |
| 2. **Dependency install** β runs `uv pip install -e ".[all]"` to pick up new or changed dependencies |
| 3. **Config migration** β detects new config options added since your version and prompts you to set them |
| 4. **Gateway auto-restart** β if the gateway service is running (systemd on Linux, launchd on macOS), it is **automatically restarted** after the update completes so the new code takes effect immediately |
|
|
| Expected output looks like: |
|
|
| ``` |
| $ hermes update |
| Updating 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 gateway service... |
| β
Gateway restarted |
| β
Hermes Agent updated successfully! |
| ``` |
|
|
| ### Recommended Post-Update Validation |
|
|
| `hermes update` handles the main update path, but a quick validation confirms everything landed cleanly: |
|
|
| 1. `git status --short` β if the tree is unexpectedly dirty, inspect before continuing |
| 2. `hermes doctor` β checks config, dependencies, and service health |
| 3. `hermes --version` β confirm the version bumped as expected |
| 4. If you use the gateway: `hermes gateway status` |
| 5. If `doctor` reports npm audit issues: run `npm audit fix` in 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 |
|
|
| `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. `pip` and `git` child 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.log` while the update runs. If your terminal disappears, reconnect and inspect the log to see whether the update finished and whether the gateway restart succeeded: |
|
|
| ```bash |
| tail -f ~/.hermes/logs/update.log |
| ``` |
|
|
| - `Ctrl-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 |
|
|
| ```bash |
| hermes version |
| ``` |
|
|
| Compare against the latest release at the [GitHub releases page](https://github.com/NousResearch/hermes-agent/releases). |
|
|
| ### Updating from Messaging Platforms |
|
|
| You can also update directly from Telegram, Discord, Slack, or WhatsApp by sending: |
|
|
| ``` |
| /update |
| ``` |
|
|
| This pulls the latest code, updates dependencies, and restarts the gateway. The bot will briefly go offline during the restart (typically 5β15 seconds) and then resume. |
|
|
| ### Manual Update |
|
|
| If you installed manually (not via the quick installer): |
|
|
| ```bash |
| cd /path/to/hermes-agent |
| export VIRTUAL_ENV="$(pwd)/venv" |
| |
| # Pull latest code and submodules |
| git pull origin main |
| git submodule update --init --recursive |
| |
| # Reinstall (picks up new dependencies) |
| uv pip install -e ".[all]" |
| uv pip install -e "./tinker-atropos" |
| |
| # Check for new config options |
| hermes config check |
| hermes config migrate # Interactively add any missing options |
| ``` |
|
|
| ### Rollback instructions |
|
|
| If an update introduces a problem, you can roll back to a previous version: |
|
|
| ```bash |
| cd /path/to/hermes-agent |
| |
| # List recent versions |
| git log --oneline -10 |
| |
| # Roll back to a specific commit |
| git checkout <commit-hash> |
| git submodule update --init --recursive |
| uv pip install -e ".[all]" |
| |
| # Restart the gateway if running |
| hermes gateway restart |
| ``` |
|
|
| To roll back to a specific release tag: |
|
|
| ```bash |
| git checkout v0.6.0 |
| git submodule update --init --recursive |
| uv pip install -e ".[all]" |
| ``` |
|
|
| :::warning |
| 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 |
|
|
| If you installed via Nix flake, updates are managed through the Nix package manager: |
|
|
| ```bash |
| # Update the flake input |
| nix flake update hermes-agent |
| |
| # Or rebuild with the latest |
| nix profile upgrade hermes-agent |
| ``` |
|
|
| Nix installations are immutable β rollback is handled by Nix's generation system: |
|
|
| ```bash |
| nix profile rollback |
| ``` |
|
|
| See [Nix Setup](./nix-setup.md) for more details. |
|
|
| --- |
|
|
| ## Uninstalling |
|
|
| ```bash |
| hermes uninstall |
| ``` |
|
|
| The uninstaller gives you the option to keep your configuration files (`~/.hermes/`) for a future reinstall. |
|
|
| ### Manual Uninstall |
|
|
| ```bash |
| rm -f ~/.local/bin/hermes |
| rm -rf /path/to/hermes-agent |
| rm -rf ~/.hermes # Optional β keep if you plan to reinstall |
| ``` |
|
|
| :::info |
| If you installed the gateway as a system service, stop and disable it first: |
| ```bash |
| hermes gateway stop |
| # Linux: systemctl --user disable hermes-gateway |
| # macOS: launchctl remove ai.hermes.gateway |
| ``` |
| ::: |
|
|