Skip to content

hermes-operator

Kubernetes operator for Hermes, a stateful AI agent that talks to humans through messaging platforms and calls LLM providers.

What it does

Define an agent declaratively:

apiVersion: hermes.k8s.undermountain.cc/v1alpha1
kind: HermesAgent
metadata: { name: my-agent, namespace: hermes }
spec:
  image: docker.io/nousresearch/hermes-agent:v2026.4.30
  storage:
    persistentVolumeClaim:
      accessModes: [ReadWriteOnce]
      resources: { requests: { storage: 50Gi } }
  llmDefaultProvider: anthropic
  llmProviders:
    - name: anthropic
      env:
        - name: ANTHROPIC_API_KEY
          valueFrom:
            secretKeyRef: { name: creds, key: ANTHROPIC_API_KEY }
  gateways:
    - type: discord
      env:
        - name: DISCORD_BOT_TOKEN
          valueFrom:
            secretKeyRef: { name: creds, key: DISCORD_BOT_TOKEN }

kubectl apply and the operator creates Deployment, PVC, ServiceAccount, Service, optional RBAC bindings, and composes env vars from the spec layers. Status reports per-gateway connection state.

Where to start

How the docs are organised

  • Tutorials: step-by-step learning. Start here if it's your first day.
  • How-to guides: recipes for specific operational tasks (install, expose dashboard, change LLM provider, troubleshoot).
  • Concepts: explanations of how the system works (architecture, PVC sovereignty, RBAC, lifecycle, upstream behaviours).
  • Reference: exhaustive field, flag, metric, and Helm value documentation.
  • Project: what's new, contributing, license.

Status

v1alpha1. The CRD's apiVersion will change at each alpha/beta/stable transition. Track CHANGELOG.md.

Read more

Background reading on the Undermountain engineering blog: