← Back to Feed
Tools

Hermes Desktop startup failure: diagnosing and fixing stale model fallbacks

A recent Hermes Agent Desktop update caused an issue where the desktop application appeared unable to start or log in, even though the local Hermes backend and the configured AI provider were working normally. Here is what actually broke, the safe recovery, and what to do while the Desktop connection issue is investigated.

2026-08-27 · 4 min read
Expedient AI mark

A recent Hermes Agent Desktop update caused an issue where the desktop application appeared unable to start or log in, even though the local Hermes backend and configured AI provider were working normally.

The visible error was:

Desktop boot failed: Timed out waiting for Hermes backend port announcement (90000ms)

At the same time, the logs showed that Hermes had actually started its backend successfully:

HERMES_BACKEND_READY port=50465
Hermes backend listening on 127.0.0.1:50465

This created a confusing situation: the Desktop app timed out waiting for its local backend, while the backend was already alive and accessible.

What caused it

The fault had two overlapping parts:

1. A retired OpenRouter model remained in old task routing.
A scheduled task was still attempting to use stealth/ox-alpha, an OpenRouter preview model that had been retired. OpenRouter returned HTTP 404 and directed users to its replacement, z-ai/glm-5.3-flash.

2. Hermes then fell back to an inactive Alibaba Coding Plan model.
The fallback chain still contained qwen3.8-max through alibaba-coding-plan. As the relevant Alibaba entitlement was no longer active, the request failed with:

HTTP 403: Access to model denied
AccessDenied.Unpurchased

The updated primary model was already MiniMax M3, but saved scheduled jobs and fallbacks can retain historical model choices. That meant some jobs continued trying obsolete providers even after the global model was changed.

The safe recovery process

The first priority is to avoid deleting Hermes data. Do not remove or reset:

~/.hermes

This folder contains the Hermes configuration, API credentials, sessions, memories, skills, profiles, cron jobs, logs, and local databases.

Before changing anything, create a backup:

mkdir -p ~/Desktop/hermes-backups
tar -czf ~/Desktop/hermes-backups/hermes-before-fix-$(date +%Y%m%d-%H%M%S).tar.gz ~/.hermes

A successful archive command may display:

tar: Removing leading '/' from member names

That is normal and does not indicate a problem.

Check model routing

Use the Hermes CLI to inspect the active model and fallback chain:

~/.hermes/hermes-agent/venv/bin/hermes fallback list

In this case, the output showed:

Primary: MiniMax-M3 (via minimax)

Fallback chain:
1. qwen3.8-max (via alibaba-coding-plan)

The invalid Alibaba fallback should be removed through the interactive fallback manager:

~/.hermes/hermes-agent/venv/bin/hermes fallback remove

Then check it again:

~/.hermes/hermes-agent/venv/bin/hermes fallback list

The goal is for MiniMax to remain the primary model, with no inaccessible provider left in the fallback path.

Fix scheduled jobs

Scheduled Hermes jobs can retain prior model settings or stop deliberately when Hermes detects configuration drift. List jobs with:

~/.hermes/hermes-agent/venv/bin/hermes cron list

Look for failed jobs using old models or errors such as:

HTTP 403: Access to model denied

or:

global inference config drifted

Pin affected jobs explicitly to the current working provider and model:

~/.hermes/hermes-agent/venv/bin/hermes cron edit JOB_ID --provider minimax --model MiniMax-M3

For example:

~/.hermes/hermes-agent/venv/bin/hermes cron edit 3c006b59e927 --provider minimax --model MiniMax-M3

This updates only the selected job's model routing. It does not delete the job, its schedule, history, skills, delivery settings, or other Hermes data.

Confirm the provider works

A simple one-shot request confirms whether Hermes can reach the configured model outside Desktop:

~/.hermes/hermes-agent/venv/bin/hermes -z "Reply with exactly: Hermes MiniMax test passed"

A successful result:

Hermes MiniMax test passed

confirms that the MiniMax API key, provider configuration, local Hermes runtime, and AI request flow are working correctly.

When Desktop still fails

If the terminal test succeeds but Hermes Desktop still reports a backend port timeout, the problem is likely limited to the Electron Desktop interface rather than the agent, credentials, or stored data.

Run a health check:

~/.hermes/hermes-agent/venv/bin/hermes doctor

Useful indicators include:

  • Configuration version is current
  • Required Python packages are installed
  • API credentials and config files exist
  • SQLite databases are healthy
  • Sessions, memory, skills, and cron directories are present
  • No deprecated configuration keys are detected

If those checks pass, use Hermes through its terminal interface while the desktop issue is investigated:

~/.hermes/hermes-agent/venv/bin/hermes --tui

Or start the local browser dashboard:

~/.hermes/hermes-agent/venv/bin/hermes dashboard

This retains access to the same sessions, memory, skills, scheduled jobs, and model configuration while bypassing the Desktop application.

Key takeaway

A Desktop boot timeout does not necessarily mean Hermes itself has failed. In this case, the backend was healthy, MiniMax was working, and all local data remained intact. The effective fix was to remove an inaccessible Alibaba fallback, pin legacy scheduled jobs to the active MiniMax model, verify the provider through the CLI, and use the dashboard or terminal UI until the Desktop connection issue is resolved.

Frequently asked questions

Why does Hermes Desktop show 'Timed out waiting for Hermes backend port announcement'?
The visible timeout comes from the Desktop shell waiting for the local Hermes backend to announce a port. In the case we fixed, the backend had started successfully, but a scheduled job kept hitting obsolete providers, so Desktop never finished its startup routine.
Is ~/.hermes safe to keep during a Hermes recovery?
Yes. ~/.hermes holds the Hermes configuration, API credentials, sessions, memories, skills, profiles, cron jobs, logs and local databases. The recovery steps in this post only edit model routing on individual jobs and remove one entry from the fallback chain. Nothing is wiped.
How do I remove an inactive provider from the Hermes fallback chain?
Run the interactive fallback manager from the Hermes CLI: ~/.hermes/hermes-agent/venv/bin/hermes fallback remove. Confirm the chain afterwards with hermes fallback list. The goal is the active MiniMax primary with no inaccessible provider left behind.
How do I pin a Hermes cron job to the current model?
Use the Hermes CLI to edit the affected job directly: ~/.hermes/hermes-agent/venv/bin/hermes cron edit JOB_ID --provider minimax --model MiniMax-M3. This updates only that job's model routing and leaves its schedule, history, skills and delivery settings intact.
What should I do if Hermes Desktop still fails after the fallback and cron fixes?
Run ~/.hermes/hermes-agent/venv/bin/hermes doctor for a full health check. If the doctor report is clean, use Hermes through the terminal UI with hermes --tui or through the local browser dashboard with hermes dashboard while the Desktop connection issue is investigated separately.