Deploy Hermes Agent Template
Deploy Hermes Agent as a secure web dashboard with persistent storage.
Hermes Agent
Just deployed
/opt/data
Deploy and Host Hermes Agent
Deploy Hermes Agent, the self-improving AI agent by Nous Research, as a secure web dashboard on Railway. The template can optionally add self-hosted Supermemory as Hermes's external long-term memory provider.
This template derives from the official nousresearch/hermes-agent:v2026.7.20 image and uses a persistent volume so Hermes keeps its sessions, memory, skills, configuration, and workspace across deploys. It runs hermes gateway run for messaging connectors and serves the dashboard through Hermes's supervised container service on Railway's injected port.
About Hosting
Railway runs Hermes's browser-based management dashboard on a public HTTPS domain. Railway provides durable storage for agent state and a managed restart policy.
Why Deploy
- Manage Hermes from a browser when your computer is offline.
- Preserve its learned state, sessions, skills, and workspace across restarts.
- Use Railway Variables for model-provider and messaging credentials.
Common Use Cases
- A remote browser dashboard for configuring models, API keys, skills, sessions, and cron jobs.
- A persistent personal Hermes instance with durable memory and workspace data.
- A web chat interface backed by the Hermes TUI.
- Self-hosted semantic long-term memory with automatic recall and session capture.
Dependencies for Hermes Agent
Deployment Dependencies
- The official
nousresearch/hermes-agent:v2026.7.20Docker image. - A Railway volume mounted at
/opt/datafor Hermes state. - Credentials for a supported model provider and messaging platform.
- Optional: an LLM API key for Supermemory's extraction runtime.
Deploy
Create a Railway project from this template, then open its generated public domain and sign in. Set these Railway variables before the first deployment:
| Variable | Required | Purpose |
|---|---|---|
HERMES_DASHBOARD_BASIC_AUTH_USERNAME | Yes | Dashboard username. |
HERMES_DASHBOARD_BASIC_AUTH_PASSWORD | Yes | Strong dashboard password. |
HERMES_DASHBOARD_BASIC_AUTH_SECRET | Recommended | Stable 32+ byte secret for signing dashboard sessions. |
The template maps these variables to Hermes's documented password-auth provider. Configure a model provider, messaging platform, and other integrations through the dashboard after signing in.
See the Hermes web dashboard guide for dashboard capabilities and authentication details.
Supermemory
Supermemory is optional. When enabled, Hermes automatically recalls relevant memories before turns, captures conversations, and provides explicit search, save, forget, and profile tools. It remains additive to Hermes's built-in memory.
The implementation uses three Railway services in one project:
| Service | Source root | Network exposure | Purpose |
|---|---|---|---|
hermes | repository root | Public | Authenticated Hermes dashboard and agent. |
supermemory-runtime | infra/supermemory-runtime | Private only | Volume-backed Supermemory server. |
supermemory-gateway | infra/supermemory-gateway | Public | Authenticated proxy from Hermes to the private runtime. |
Provisioning
- Create the
supermemory-runtimeservice frominfra/supermemory-runtime, attach a volume at/data, and do not create a public domain. SetSUPERMEMORY_DATA_DIR=/data,SUPERMEMORY_DISABLE_TELEMETRY=1, and one extraction-model credential:OPENAI_API_KEY,ANTHROPIC_API_KEY, orGEMINI_API_KEY. - After its first successful boot, copy the generated
sm_...key from the runtime logs. Createsupermemory-gatewayfrominfra/supermemory-gateway, then setSUPERMEMORY_RUNTIME_API_KEYto that key,SUPERMEMORY_RUNTIME_URL=http://supermemory-runtime.railway.internal:8080, and a high-entropySUPERMEMORY_GATEWAY_API_KEY. Create a public domain for the gateway. - Set these variables on the
hermesservice and redeploy it:
HERMES_SUPERMEMORY_ENABLED=true
SUPERMEMORY_API_KEY=
SUPERMEMORY_BASE_URL=https://
# Optional: isolate memories per Hermes profile.
SUPERMEMORY_CONTAINER_TAG=hermes-{identity}
- Check
hermes memory statusin the dashboard terminal. Hermes installs the pinned Supermemory SDK into its persistent safe package directory when the provider is first used.
Keep the runtime at one replica because its /data volume is its durable state. Back up that volume and never expose the runtime directly. The gateway only permits /healthz without a bearer token and replaces every client Authorization header before proxying to the runtime.
See the Hermes Supermemory provider guide for provider behavior and configuration.
The service starts the Hermes messaging gateway automatically. Configure WhatsApp in the dashboard, pair the account, then set the following Railway variables:
WHATSAPP_ENABLED=true
WHATSAPP_MODE=bot
WHATSAPP_ALLOWED_USERS=15551234567
Use a WhatsApp number with country code and no + in WHATSAPP_ALLOWED_USERS. Set it to * only when the bot should accept every sender. The dashboard's GET /api/status endpoint reports gateway_running and the whatsapp connector state for verification.
See the Hermes WhatsApp guide for pairing and re-pairing.
Persistence
The template attaches a Railway volume at /opt/data, which is the official Hermes Docker image's HERMES_HOME. Do not remove this volume unless you intentionally want to discard the agent's state.
Railway supports one volume per service and a volume-backed service must have a single replica. This template is configured accordingly.
Security
Hermes can run tools and terminal commands on the Railway service. Treat the dashboard as a sensitive administrative surface:
- Keep all provider and bot tokens in Railway Variables, never in the repository.
- Set a unique, high-entropy
HERMES_DASHBOARD_BASIC_AUTH_PASSWORDbefore first use. - Set
HERMES_DASHBOARD_BASIC_AUTH_SECRETto a stable, high-entropy value so active dashboard sessions survive restarts. - Use a distinct
SUPERMEMORY_GATEWAY_API_KEY; the runtimesm_...key stays only onsupermemory-gateway. - The upstream project recommends OAuth or OIDC, rather than shared password authentication, for public-internet deployments.
- Review Hermes's security guidance before enabling additional tools or messaging platforms.
Updating Hermes
The image is pinned to v2026.7.20 for repeatable deployments. To upgrade, change the FROM image in Dockerfile to a newer official release tag such as nousresearch/hermes-agent:vYYYY.M.D, then redeploy. The persistent volume preserves agent state across the upgrade.
Project Files
Dockerfilederives the pinned Hermes image and enables its Supermemory provider only whenHERMES_SUPERMEMORY_ENABLED=true.railway.jsonrecords the runtime settings used by the template. The start command launches Hermes's messaging gateway, while an s6 init hook binds the supervised dashboard to Railway's injected port.infra/supermemory-runtimecontains the private, persistent Supermemory service.infra/supermemory-gatewaycontains the authenticated public gateway.template-overview.mdis a short shareable template summary.
Hermes Agent is maintained by Nous Research and distributed under the MIT License. This is an independent Railway deployment template.
Template Content
Hermes Agent
nousresearch/hermes-agent:v2026.7.20HERMES_DASHBOARD_USER
HERMES_DASHBOARD_PASSWORD
