Deploy Hermes Agent Template

Deploy Hermes Agent as a secure web dashboard with persistent storage.

Deploy Hermes Agent Template

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.20 Docker image.
  • A Railway volume mounted at /opt/data for 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:

VariableRequiredPurpose
HERMES_DASHBOARD_BASIC_AUTH_USERNAMEYesDashboard username.
HERMES_DASHBOARD_BASIC_AUTH_PASSWORDYesStrong dashboard password.
HERMES_DASHBOARD_BASIC_AUTH_SECRETRecommendedStable 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:

ServiceSource rootNetwork exposurePurpose
hermesrepository rootPublicAuthenticated Hermes dashboard and agent.
supermemory-runtimeinfra/supermemory-runtimePrivate onlyVolume-backed Supermemory server.
supermemory-gatewayinfra/supermemory-gatewayPublicAuthenticated proxy from Hermes to the private runtime.

Provisioning

  1. Create the supermemory-runtime service from infra/supermemory-runtime, attach a volume at /data, and do not create a public domain. Set SUPERMEMORY_DATA_DIR=/data, SUPERMEMORY_DISABLE_TELEMETRY=1, and one extraction-model credential: OPENAI_API_KEY, ANTHROPIC_API_KEY, or GEMINI_API_KEY.
  2. After its first successful boot, copy the generated sm_... key from the runtime logs. Create supermemory-gateway from infra/supermemory-gateway, then set SUPERMEMORY_RUNTIME_API_KEY to that key, SUPERMEMORY_RUNTIME_URL=http://supermemory-runtime.railway.internal:8080, and a high-entropy SUPERMEMORY_GATEWAY_API_KEY. Create a public domain for the gateway.
  3. Set these variables on the hermes service 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}
  1. Check hermes memory status in 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.

WhatsApp

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_PASSWORD before first use.
  • Set HERMES_DASHBOARD_BASIC_AUTH_SECRET to a stable, high-entropy value so active dashboard sessions survive restarts.
  • Use a distinct SUPERMEMORY_GATEWAY_API_KEY; the runtime sm_... key stays only on supermemory-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

  • Dockerfile derives the pinned Hermes image and enables its Supermemory provider only when HERMES_SUPERMEMORY_ENABLED=true.
  • railway.json records 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-runtime contains the private, persistent Supermemory service.
  • infra/supermemory-gateway contains the authenticated public gateway.
  • template-overview.md is 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

More templates in this category

View Template
Chat Chat
Chat Chat, your own unified chat and search to AI platform.

okisdev
116
View Template
stella
Self-host stella with web, API, Postgres, Redis, and object storage.

Jan Kubica
5
View Template
Hermes Agent | OpenClaw Alternative with Dashboard
Self-Hosted Hermes AI Agent for Telegram, Discord & Slack

codestorm
67