✦
Hermes Agent

How-To Guide

Hermes Desktop Won't Open After an Update

Fix a blank, stuck, or non-opening Hermes Desktop after an update on Windows, macOS, or Linux without deleting profiles, memory, sessions, skills, or credentials.

Quick answer

Do not delete ~/.hermes. First classify the symptom: a blank window is a Desktop renderer problem; a window stuck on startup is usually a local-backend or port problem; an app that opens but cannot chat is usually a profile, provider, authentication, or WebSocket problem. Close stale Hermes processes, then run hermes --version, hermes doctor, and hermes chat -q "reply ok". If the CLI works, open hermes dashboard to confirm the profile and sessions survived. Back up state, complete the supported update, rebuild with hermes desktop --force-build, select the intended connection/profile, and prove recovery with one real chat or tool result.

A blank Hermes Desktop window after an update is not the same failure as a backend that will not start or a Chat connection that will not authenticate. This guide uses that distinction to recover the app without deleting durable state. It reflects fresh September 2026 support demand around unfinished updates, four-day blank screens, startup stalls, missing Bots after layout changes, Windows failures, and model/profile confusion. Protect state first with the Hermes backup workflow, then use the current safe update path. If maintaining native builds, provider keys, remote runtimes, and channel uptime is the job you are trying to avoid, compare the FlyHermes managed path.

Deploy Hermes faster with FlyHermes

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

Before you start:

  • ☑Terminal access on the same Windows, macOS, or Linux account that runs Hermes Desktop
  • ☑Enough disk space for an update snapshot and Desktop dependency rebuild
  • ☑Permission to stop a local Hermes gateway briefly if it holds update files open
  • ☑A copy of any visible error plus ~/.hermes/logs/update.log and ~/.hermes/logs/bootstrap-installer.log when present

Steps

  1. 1

    Protect the Hermes home before changing anything

    Do not uninstall everything or delete ~/.hermes. That directory can hold profiles, sessions, memory, skills, cron jobs, auth, and config. If the CLI still starts, run hermes update --backup; otherwise copy the Hermes home before reinstalling. Follow the backup guide when the profile is expensive to reconstruct.

  2. 2

    Classify the visible failure before changing files

    Blank white/black content with the window chrome visible points to the Desktop renderer or damaged app assets. A window stuck on startup points to the local hermes serve backend, port 9119, PATH, or a stale process. Desktop opening but Chat failing points to the selected profile/connection, provider, dashboard authentication, or /api/ws. Bots missing after an update can mean the wrong owning backend or a changed filter/layout—not deleted profiles. Record which branch you have before reinstalling anything.

  3. 3

    Close Desktop and stop stale child processes

    Quit every Desktop window. Stop the local gateway with hermes gateway stop if it uses the same install, exit open Hermes REPLs, and close old updater or backend processes. On Windows this matters because running hermes.exe, Python, or native-extension files can lock the venv and make a dependency refresh stop halfway.

  4. 4

    Prove whether the shared Hermes runtime still works

    Run hermes --version, hermes doctor, and hermes chat -q "reply ok". If these pass, your provider, profile, and core runtime are available; focus on Desktop build or startup. If they fail, use the layer-by-layer Hermes troubleshooting guide before rebuilding the GUI.

  5. 5

    Use Web UI as a recovery checkpoint

    Run hermes dashboard and open http://127.0.0.1:9119. A working Hermes dashboard confirms that sessions and profile state can still be read, but it does not repair Desktop by itself. Stop it before relaunching Desktop if both try to own the same backend port.

  6. 6

    Read the updater logs before retrying

    Inspect ~/.hermes/logs/update.log and ~/.hermes/logs/bootstrap-installer.log. Look for a real updater still running, an in-progress marker, Node/npm engine mismatch, PATH failure, locked Windows executable, failed native dependency, or incomplete Desktop build. Do not remove ~/.hermes/.hermes-update-in-progress unless no updater process is active.

  7. 7

    Preview and complete the supported update

    Run hermes update --check, then hermes update. Read any partial-update message literally: core Python may be current while Desktop assets are not. If Node/npm failed, compare node --version and npm --version with the current source requirements instead of bypassing engine checks or using blanket sudo. The hanging-update recovery guide covers mixed dependency state.

  8. 8

    Rebuild and relaunch the native app

    Run hermes desktop. The command installs the Desktop workspace dependencies, builds the current operating system's unpacked Electron app, and launches it. Use hermes desktop --force-build when a stale content stamp or incomplete build is the suspected cause. Use --skip-build only when a verified unpacked app already exists.

  9. 9

    Apply the operating-system branch

    On Windows, close every process using the Hermes venv and retry the transactional update before forcing anything. On macOS, check reduced PATH when app-launched subprocesses cannot find git, ssh, bash, node, or npm. On Linux, verify Node/npm, executable permissions, and whether the app was started from the same account and environment as the working CLI.

  10. 10

    Reconnect the intended local or remote backend

    If Desktop opens but Chat disconnects, confirm the profile's connection mode. Local mode starts its own hermes serve backend; remote mode points to a protected serve-compatible backend, normally on port 9119—not the OpenAI-compatible API on 8642. Use the remote Desktop backend guide for HTTP versus WebSocket failures.

  11. 11

    Verify one real Desktop workflow

    Open the intended profile, send one message, and verify one artifact, file, terminal action, or tool result. If you restarted a gateway, also test the exact Telegram or Discord destination. Choose FlyHermes managed hosting when the real requirement is browser/mobile access and uptime without owning Desktop, provider, update, backup, and gateway maintenance.

  12. 12

    Treat session-storage FATAL errors as backend state failures

    If Desktop opens but a prompt fails with session storage unavailable, do not reinstall the UI or delete SQLite files. Use the state.db troubleshooting workflow: align versions, fully quit Desktop, restart the gateway once, inspect session stats, and preserve WAL/SHM sidecars for recovery.

Pro Tips

  • 💡Treat a working CLI or dashboard as evidence that state survived, not as proof the native app is repaired.
  • 💡Use hermes desktop --force-build for a suspected stale or incomplete Desktop artifact; do not begin with a full data-destructive uninstall.
  • 💡On Windows, do not use --force-venv until you have verified that reported venv holders are false positives.
  • 💡If only the GUI needs removal, hermes uninstall --gui preserves the agent, config, and chats; avoid hermes uninstall --full during recovery.
  • 💡After recovery, follow the session handoff checklist before a planned restart of important long-running work.
  • 💡After a v0.21-era layout change, verify the selected backend and profile roster before recreating a missing Bot.
  • 💡A four-day blank screen is not a reason to delete the Hermes home: prove the CLI and dashboard state first, then rebuild only the Desktop layer.
  • 💡Capture the exact symptom and timestamp so Desktop, backend, update, and provider logs can be compared from the same launch attempt.

Troubleshooting

❌ Desktop disappeared or still does nothing after clicking Update

✅ Close stale app/backend processes, inspect both update logs, run the CLI smoke test, complete hermes update, then rebuild with hermes desktop --force-build. Preserve ~/.hermes throughout.

❌ Windows says another hermes.exe or venv Python process is running

✅ Close Desktop and open Hermes terminals, run hermes gateway stop, then retry. The updater refuses partial native-dependency replacement because Windows locks running executables and .pyd files.

❌ Update reports success but Desktop assets are still mixed

✅ Check the update output for a Node/npm workspace failure. Repair the Required versus Actual engine mismatch, rerun the update, and force a Desktop rebuild before relaunching.

❌ CLI and dashboard work but Desktop cannot start its local backend

✅ Stop the dashboard or other process using port 9119, verify the selected profile and connection mode, then relaunch Desktop. Inspect backend startup output rather than deleting profile data.

❌ Desktop opens but a remote agent will not connect

✅ Test both the backend HTTP status and WebSocket path, verify authentication, use port 9119 for the serve-compatible backend, and make sure the profile did not fall back to a different local connection.

❌ macOS app launch cannot find git, node, npm, ssh, or bash

✅ Compare the app or service PATH with the interactive shell. Use explicit standard macOS paths or relaunch from a correctly initialized environment; do not assume a working terminal PATH is inherited by app-launched subprocesses.

❌ Reinstall seems necessary

✅ Back up first. Prefer repairing the update and rebuilding Desktop. If GUI-only removal is needed, use hermes uninstall --gui, then run hermes desktop; this keeps the Hermes agent and user state.

❌ Desktop window is blank, but the CLI still replies

✅ Treat the runtime and state as healthy evidence. Close Desktop, inspect the Desktop/update logs from the failed launch, complete any partial Node/npm update, then run hermes desktop --force-build. Do not remove profiles or sessions.

❌ Bots or chats disappeared after the new Desktop layout

✅ Confirm the selected local/remote/cloud backend, active profile, and any Chats/Automation/All filter before recreating anything. Compare the roster with hermes profile list and inspect the same backend in Dashboard.

❌ Desktop starts, but the selected model or Chat fails

✅ Run one CLI call with the same profile/provider, inspect provider quota and model availability, then test both HTTP and WebSocket legs for a remote backend. Repair the failing layer instead of rebuilding the app again.

FAQ

Will reinstalling Hermes Desktop delete my memory and sessions?

A GUI-only reinstall should preserve the agent and user state, but back up first. Do not delete ~/.hermes or use the full-uninstall option during ordinary Desktop recovery.

What command should I run when Hermes Desktop will not open?

Start with hermes doctor and a CLI chat smoke test. Then preview and complete the update, and launch or rebuild the app with hermes desktop or hermes desktop --force-build.

Why does Windows block the Hermes Desktop update?

A running Desktop backend, gateway, REPL, or venv Python process can hold hermes.exe or native files open. Close those processes before retrying so the updater can replace dependencies transactionally.

Does a working dashboard prove Hermes Desktop is fixed?

No. It proves the shared runtime and profile state are reachable. Desktop still needs its own build, backend startup, authentication, and native UI verification.

Should I remove the update-in-progress marker?

Only after confirming no updater is running. Removing the marker while a real update is active can create overlapping update attempts.

When should I use FlyHermes instead of repairing Desktop?

Use FlyHermes when you want managed browser/mobile access, connected channels, and uptime without maintaining local Desktop builds, dependencies, provider credentials, backups, and gateways.

Why is Hermes Desktop blank after an update?

Common causes are incomplete Desktop assets, a partial Node/npm workspace update, stale renderer state, or a Desktop build mismatch. If the CLI and Dashboard work, preserve ~/.hermes and rebuild the Desktop layer rather than deleting agent state.

Did an update delete my Hermes Bots?

Do not assume so. Verify the selected backend, active profile, roster filters, and hermes profile list. A layout, connection, or filter change can hide Bots while their profile-backed state remains intact.

Related setup and cost guides

Related Guides