Hermes One Desktop fails to connect to a self-hosted Hermes Agent gateway. Three errors in console:
Error in 'get-hermes-home': 404: Not Found
Error in 'list-models': 401: Invalid gateway API key (API_SERVER_KEY)
Error in 'get-hermes-version': 404: Not Found
Analysis:
-
get-hermes-home (404) — Hermes One probes GET / to check gateway liveness. The Hermes Agent API server does not register a root handler — GET / returns 404 Not Found. Health check only exists at GET /health.
Workaround: reverse proxy rules mapping / → /health. Would be better if either the gateway root returned 200 or Hermes One probed /health directly.
-
get-hermes-version (404) — Hermes One hits GET /version, which has no registered route. Version info is embedded in GET /health response but not exposed at a standalone /version endpoint.
Would be better if either a /version route is registered or Hermes One reads the version from the health endpoint response.
-
list-models (401) — Expected with an incorrect API key. The gateway correctly rejects unauthenticated requests to /v1/models.
Expected behavior:
- GET / should return 200 or redirect to health so Hermes One can verify the gateway is alive
- GET /version should return version info, or Hermes One should probe via the health endpoint instead
- 401 on wrong API key is correct — no change needed
Environment:
- Hermes Agent version: 0.19.0 (self-hosted, no Nous Portal)
- Gateway running via python -m hermes_cli.main gateway run
- API Server enabled with API_SERVER_KEY in .env
- Reverse proxy: nginx → localhost:8642
Hermes One Desktop fails to connect to a self-hosted Hermes Agent gateway. Three errors in console:
Error in 'get-hermes-home': 404: Not Found
Error in 'list-models': 401: Invalid gateway API key (API_SERVER_KEY)
Error in 'get-hermes-version': 404: Not Found
Analysis:
get-hermes-home (404) — Hermes One probes GET / to check gateway liveness. The Hermes Agent API server does not register a root handler — GET / returns 404 Not Found. Health check only exists at GET /health.
Workaround: reverse proxy rules mapping / → /health. Would be better if either the gateway root returned 200 or Hermes One probed /health directly.
get-hermes-version (404) — Hermes One hits GET /version, which has no registered route. Version info is embedded in GET /health response but not exposed at a standalone /version endpoint.
Would be better if either a /version route is registered or Hermes One reads the version from the health endpoint response.
list-models (401) — Expected with an incorrect API key. The gateway correctly rejects unauthenticated requests to /v1/models.
Expected behavior:
Environment: