Run Hermes Agent inside Zomg and connect the native Hermes Desktop app to it as a remote backend. Zomg also serves the Hermes web UI from the same published dashboard URL, so you can open it in a browser and sign in there too. Hermes has two network surfaces:
  • OpenAI-compatible API: 8642
  • Desktop remote backend / dashboard: 9119
Hermes Desktop connects to the dashboard backend on 9119. When that backend is published, the public https://... URL also serves the Hermes web UI.

Build the Hermes base

zomg hermes build-base
This builds the reusable box-base-hermes-agent base from the default Zomg base and the official Hermes installer.

Create an agent

For local cluster use:
zomg hermes new my-agent \
  --dashboard-password "$HERMES_DASHBOARD_PASSWORD"
For Desktop access from your laptop, publish the dashboard:
zomg hermes new my-agent \
  --publish my-agent \
  --dashboard-password "$HERMES_DASHBOARD_PASSWORD"
The command prints:
  • OpenAI-compatible base URL
  • Hermes Desktop remote URL
  • Desktop login credentials
  • Published remote URL when --publish is used
Use a non-default dashboard password for anything reachable outside the cluster.

Connect with Hermes Desktop or the web UI

To use the browser UI, open the published URL printed by zomg hermes, for example https://my-agent.example.com, and sign in with the dashboard username and password. Install or open Hermes Desktop from the official Hermes docs. In the app:
  1. Open Settings.
  2. Go to Gateway.
  3. Set Remote URL to the published URL printed by zomg hermes, for example https://my-agent.example.com.
  4. Click Sign in.
  5. Enter the dashboard username and password.
  6. Save and reconnect.
You can also launch Desktop with the URL preset:
HERMES_DESKTOP_REMOTE_URL=https://my-agent.example.com hermes desktop
You still sign in from the Gateway settings panel.

Use the Agent API

Services in the same Zomg project can call the OpenAI-compatible API directly:
curl -fsS \
  -H "Authorization: Bearer $HERMES_API_KEY" \
  http://my-agent.default:8642/v1/models
From compose, wire the add-on into another service:
name: agent-stack

addons:
  - use: hermes
    as: agent

services:
  app:
    port: 8080
    command: ["python3", "-u", "-m", "http.server", "8080"]
    env:
      HERMES_API_BASE_URL: ${addons.agent.api_base_url}
      HERMES_API_KEY: ${addons.agent.api_key}
      HERMES_MODEL: ${addons.agent.model}
      HERMES_DESKTOP_REMOTE_URL: ${addons.agent.desktop_remote_url}

Publish later

If you created the agent without --publish, publish the dashboard later:
zomg hermes publish my-agent my-agent
The helper publishes port 9119, which is the dashboard backend Hermes Desktop expects and the web UI serves from.

Snapshot and box

Hermes state lives in /var/lib/hermes, so snapshots capture config, sessions, memory, logs, and dashboard auth settings.
zomg hermes snapshot my-agent before-experiment
zomg hermes box my-agent my-agent-copy --snapshot before-experiment

Stop and clean up

Stop the running gateway and dashboard:
zomg hermes stop my-agent
Delete the box and its data volume:
zomg hermes delete my-agent

Security notes

The username/password dashboard provider is for development, trusted networks, or VPN-protected access. Don’t expose a password-protected dashboard directly to the open internet. For public use, configure Hermes dashboard OAuth or put the published URL behind a VPN or access layer.