Hermes Agent

How-To Guide

How to Update Hermes Agent Safely

Update Hermes Agent safely with current backup, preview, dependency, Desktop, Docker, Windows, gateway, and post-update verification steps.

Quick answer

Run hermes update --check, protect important state with hermes update --backup, close conflicting Desktop/Windows processes, then run hermes update. Read any partial Node/npm failure before restarting services, run hermes config check, hermes doctor, and hermes gateway status, and prove one real tool or channel workflow. Docker users must pull and recreate the image instead of running hermes update inside the container.

Updating Hermes Agent is more than pulling code. The current updater can preview changes, snapshot state, auto-stash source edits, validate critical files, refresh Python and Node dependencies, migrate configuration, sync skills, and restart gateways. The safe workflow is to identify the install method, protect state, read partial-update output exactly, then prove the real tool or channel path after the update.

Deploy Hermes faster with FlyHermes

Managed cloud · API costs included · Skill library · Cancel anytime

Before you start:

  • A working Hermes Agent install and access to the active profile
  • Enough free disk space for dependency refreshes and a pre-update snapshot
  • A maintenance window if Telegram, Discord, cron, webhooks, Desktop, or a remote gateway must stay available
  • For Docker: access to the Compose/image workflow and the persistent /opt/data mount

Steps

  1. 1

    Read the v0.20 release notes before updating

    The Hermes Agent v0.20 Herald Release adds conversational voice, A2A, signed outbound webhooks, Desktop artifacts, grounded citations, and new CLI commands. Review the focused release guide before changing a production profile.

  2. 2

    Identify the install and check the current version

    Run which hermes, hermes --version, and hermes doctor. Hermes detects git-installer, Docker, and NixOS layouts differently, so confirm the active binary before changing anything.

  3. 3

    Preview the update without modifying files

    Run hermes update --check. It fetches and compares your checkout with origin/main without pulling code, installing dependencies, or restarting gateways. Read the latest release notes before a production update.

  4. 4

    Take the right pre-update backup

    Normal updates take a lightweight state snapshot. Use hermes update --backup for a full HERMES_HOME archive on production gateways or important profiles. Commit intentional source changes first; Hermes auto-stashes a dirty source checkout, but restoring custom edits can conflict with new code.

  5. 5

    Close conflicting Windows or Desktop processes

    On Windows, close Hermes Desktop, exit open Hermes REPLs, and stop the gateway before updating so hermes.exe and venv files are not locked. For a Desktop retry loop, close every Hermes window before using the terminal updater and inspect ~/.hermes/logs/bootstrap-installer.log.

  6. 6

    Run the update

    Run hermes update. It pulls the configured branch, validates critical Python files, refreshes Python and Node dependencies, migrates config, syncs bundled skills, and attempts to restart running gateway profiles. Use /update from a supported messaging platform only when you can tolerate the bot going briefly offline.

  7. 7

    Read partial-update errors literally

    If Hermes says Node dependencies did not refresh, the code and Python environment may be current while Desktop, dashboard, or TUI assets remain mixed. Run node --version and npm --version, then compare the error's Required and Actual engine ranges with the current Hermes package.json; use a supported LTS Node/npm pair instead of bypassing engine-strict.

  8. 8

    Migrate config only when prompted or reported

    Run hermes config check after the update. If it reports missing options, run hermes config migrate. Do not use obsolete commands such as hermes config validate.

  9. 9

    Verify the updated runtime

    Run hermes --version, hermes doctor, and hermes gateway status. For a git install, inspect git -C ~/.hermes/hermes-agent status --short. If Hermes restored local source changes, review the diff before blaming the new release.

  10. 10

    Prove one real workflow

    Open the private Hermes dashboard, confirm the intended profile/provider, then run one harmless tool call and one real Telegram, Discord, cron, or webhook test. A successful update message does not prove every long-running channel loaded the new code.

Pro Tips

  • 💡Use hermes update --check before changing a production install and hermes update --backup when the profile is expensive to reconstruct.
  • 💡The normal updater already attempts to restart running gateway profiles; use hermes gateway restart only when validation shows a gateway stayed stale.
  • 💡Docker installs do not support hermes update; pull the new image, recreate the service, and preserve the Hermes home volume.
  • 💡Do not solve Node/npm engine failures with random global upgrades. Read the current repo engine constraints and use a supported LTS combination.
  • 💡If prompted to restore local changes, choose yes only for source edits you recognize. Choosing no leaves the update stash preserved for later review.
  • 💡If an SSH terminal disconnects, inspect ~/.hermes/logs/update.log; current updates mirror progress there and ignore SIGHUP.

Troubleshooting

Update is partially complete because Node dependencies failed

Do not assume the whole update rolled back. Check node --version, npm --version, and the error's Required/Actual ranges; select a supported LTS Node/npm pair, rebuild the failed workspace, then rerun hermes doctor. The dashboard/TUI/Desktop can remain mixed until this is fixed.

Desktop Retry Update loops or says an update is already in progress

Close every Hermes Desktop window and backend process. Inspect ~/.hermes/logs/bootstrap-installer.log and ~/.hermes/logs/update.log. Only remove ~/.hermes/.hermes-update-in-progress when no updater is actually running, then use the installed terminal/bootstrap updater to get the fixed updater before reopening Desktop.

Windows update cannot replace hermes.exe or venv files

Close Desktop, exit Hermes REPLs, stop the gateway, and retry. Do not force through a real venv lock: a half-refreshed native dependency set is worse than a cleanly refused update.

Update asks whether to restore local changes

Hermes found modified or untracked source files and saved them in git stash. Restore only intentional customizations, then review git status and git diff. If you decline, the stash remains available for manual recovery.

Hermes works in CLI but Telegram, Discord, or cron fails after update

Run hermes gateway status, fully restart the affected gateway profile if needed, and test the exact destination. Separate stale gateway code from provider credits, allowlists, thread IDs, and delivery permissions.

A Docker install says hermes update is unsupported

That is expected. Pull the current Hermes image and recreate the container while preserving host ~/.hermes at container /opt/data. Never mount over the immutable /opt/hermes application tree.

FAQ

Does updating Hermes erase memory, sessions, skills, or config?

A normal update preserves profile state and takes a quick pre-update snapshot. Use hermes update --backup for a full Hermes-home archive before a high-value production update.

Does hermes update restart the gateway automatically?

Current Hermes attempts to restart every running gateway profile after a successful update. Verify with hermes gateway status; manually restart only when the service did not refresh or the real channel still uses stale code.

What does Update partially complete mean?

It can mean code and Python dependencies updated while one or more Node workspaces did not. Desktop, dashboard, or TUI assets may be in a mixed state until the Node/npm engine or dependency error is repaired.

What does Restore local changes mean during a Hermes update?

The updater auto-stashed a dirty source checkout before pulling. Restore only custom source edits you recognize; otherwise leave the stash preserved and review it later.

How do I update Hermes Agent in Docker?

Pull the current image and recreate the container or Compose service while preserving /opt/data. Docker installs do not support the hermes update command.

Should I use sudo to fix a Hermes update permission error?

Not as a blanket fix. First identify the active install and the exact path with wrong ownership. Running global npm or Hermes commands with sudo can create root-owned caches and make later updates harder.

Related setup and cost guides

Related Guides