# Hermes — Self-Improving AI Agent Stack # # Hermes Agent is a self-improving AI agent by Nous Research. # Repo: https://github.com/NousResearch/hermes-agent # # The hermes container runs the agent runtime which provides: # - Dashboard web UI on port 9119 # - Messaging gateway for Telegram, Discord, Slack, etc. # - TUI and CLI chat interfaces # # The editor (VS Code, ttyd, etc.) is chosen separately in the dashboard # and injected into the tools container. # # First boot: run `hermes setup` in the terminal to configure # your API key and model. schemaVersion: 2.3.0 metadata: name: hermes displayName: Hermes AI Agent description: A self-improving AI agent with tool-calling, web dashboard, and 50+ integrations. By Nous Research. icon: https://raw.githubusercontent.com/NousResearch/hermes-agent/main/apps/desktop/assets/icon.png tags: - AI - Agent - Hermes - NousResearch projectType: AI language: Polyglot version: 1.0.0 attributes: controller.devfile.io/storage-type: per-workspace components: - name: tools container: image: quay.io/devfile/universal-developer-image:ubi9-latest memoryLimit: 1Gi memoryRequest: 256Mi mountSources: true # Hermes Agent container. # Runs the agent runtime with dashboard on port 9119. # The official image uses s6-overlay which requires root, so we # bypass it and run the setup + dashboard directly. # Config persists in the PVC at /opt/data (HERMES_HOME). - name: hermes container: image: docker.io/nousresearch/hermes-agent:v2026.6.5 mountSources: false memoryRequest: 512Mi memoryLimit: 2Gi command: ["/bin/bash", "-c"] args: - | if ! whoami &>/dev/null; then echo "user:x:$(id -u):0:user:/opt/data:/bin/bash" >> /etc/passwd fi export HOME=/opt/data cd /opt/data . /opt/hermes/.venv/bin/activate for d in cron sessions logs hooks memories skills skins plans workspace home; do mkdir -p /opt/data/$d done [ ! -f /opt/data/.env ] && cp /opt/hermes/.env.example /opt/data/.env 2>/dev/null && chmod 600 /opt/data/.env [ ! -f /opt/data/config.yaml ] && cp /opt/hermes/cli-config.yaml.example /opt/data/config.yaml 2>/dev/null [ ! -f /opt/data/SOUL.md ] && cp /opt/hermes/docker/SOUL.md /opt/data/SOUL.md 2>/dev/null python /opt/hermes/tools/skills_sync.py 2>/dev/null || true hermes dashboard --host 0.0.0.0 --no-open --insecure & exec tail -f /dev/null endpoints: - name: dashboard targetPort: 9119 exposure: public protocol: https attributes: cookiesAuthEnabled: true discoverable: false urlRewriteSupported: false volumeMounts: - name: hermes-data path: /opt/data - name: hermes-data volume: size: 10Gi commands: - id: setup exec: label: "Configure Hermes (setup wizard)" component: hermes commandLine: hermes setup workingDir: /opt/data - id: status exec: label: "Show Hermes status" component: hermes commandLine: hermes status workingDir: /opt/data - id: doctor exec: label: "Run diagnostics" component: hermes commandLine: hermes doctor workingDir: /opt/data - id: restart-dashboard exec: label: "Restart Hermes dashboard" component: hermes commandLine: hermes dashboard --stop 2>/dev/null; hermes dashboard --host 0.0.0.0 --no-open --insecure workingDir: /opt/data