2026-07-21 21:02:06 -03:00
# services/hermes/deployment.yaml
2026-05-19 19:17:14 -03:00
apiVersion : apps/v1
kind : Deployment
metadata :
2026-07-21 21:02:06 -03:00
name : hermes
namespace : hermes
2026-05-19 19:17:14 -03:00
labels :
2026-07-21 21:02:06 -03:00
app : hermes
2026-05-19 19:17:14 -03:00
spec :
replicas : 1
revisionHistoryLimit : 2
2026-07-21 21:29:46 -03:00
progressDeadlineSeconds : 2700
2026-05-19 19:17:14 -03:00
strategy :
type : Recreate
selector :
matchLabels :
2026-07-21 21:02:06 -03:00
app : hermes
2026-05-19 19:17:14 -03:00
template :
metadata :
labels :
2026-07-21 21:02:06 -03:00
app : hermes
2026-05-19 19:17:14 -03:00
annotations :
2026-08-02 16:46:21 -03:00
ai.bstein.dev/frontend-fix : scope PTY attachment by selected conversation
2026-08-11 16:33:53 -03:00
ai.bstein.dev/router-wire-contract : ollama-numeric-keepalive
2026-08-11 05:20:18 -03:00
ai.bstein.dev/model : anthropic/claude-opus-5, falling back to openai-codex/gpt-5.6-terra then titan-20 Qwen 14B
2026-05-19 19:17:14 -03:00
ai.bstein.dev/role : testing-triage
2026-08-08 17:59:45 -03:00
ai.bstein.dev/placement : titan-21 preferred, Jetson preferred, arm64 fallback
2026-08-15 17:58:47 -03:00
ai.bstein.dev/config-rev : "20260815-runtime-access-boundary"
2026-08-06 12:14:47 -03:00
vault.hashicorp.com/agent-inject : "true"
vault.hashicorp.com/role : hermes
2026-08-15 17:58:47 -03:00
vault.hashicorp.com/agent-inject-secret-triage-api-key : kv/data/atlas/hermes/triage-api
vault.hashicorp.com/agent-inject-template-triage-api-key : |
{{- with secret "kv/data/atlas/hermes/triage-api" -}}
{{ .Data.data.api_key }}
2026-08-06 12:14:47 -03:00
{{- end }}
vault.hashicorp.com/agent-pre-populate-only : "true"
2026-08-06 12:20:53 -03:00
# Without this the agent init container is appended after the
# pod's own init containers, so init-config runs before the
# secret file exists and silently falls back to the Secret -
# the migration looks complete while Vault is never read.
vault.hashicorp.com/agent-init-first : "true"
2026-08-06 12:14:47 -03:00
vault.hashicorp.com/agent-requests-cpu : 25m
vault.hashicorp.com/agent-requests-mem : 32Mi
vault.hashicorp.com/agent-limits-cpu : 100m
vault.hashicorp.com/agent-limits-mem : 128Mi
2026-05-19 19:17:14 -03:00
spec :
2026-07-21 21:02:06 -03:00
serviceAccountName : hermes-triage
2026-05-19 19:17:14 -03:00
automountServiceAccountToken : true
securityContext :
2026-07-21 21:02:06 -03:00
fsGroup : 10000
2026-05-19 19:17:14 -03:00
seccompProfile :
type : RuntimeDefault
affinity :
nodeAffinity :
requiredDuringSchedulingIgnoredDuringExecution :
nodeSelectorTerms :
- matchExpressions :
2026-05-19 23:30:29 -03:00
- key : kubernetes.io/arch
2026-05-19 19:17:14 -03:00
operator : In
values :
2026-05-19 23:30:29 -03:00
- arm64
- key : node-role.kubernetes.io/worker
operator : In
values :
2026-05-19 23:37:16 -03:00
- "true"
2026-05-22 15:33:28 -03:00
- key : kubernetes.io/hostname
operator : NotIn
values :
2026-08-08 18:42:13 -03:00
- titan-08
2026-05-22 15:33:28 -03:00
- titan-13
2026-08-08 18:42:13 -03:00
- titan-14
2026-05-22 15:33:28 -03:00
- titan-17
2026-08-08 19:23:58 -03:00
- titan-18
2026-05-19 23:30:29 -03:00
preferredDuringSchedulingIgnoredDuringExecution :
2026-08-08 17:59:45 -03:00
- weight : 80
2026-05-19 23:30:29 -03:00
preference :
matchExpressions :
- key : atlas.bstein.dev/spillover
operator : DoesNotExist
2026-08-08 17:59:45 -03:00
- weight : 60
2026-05-19 23:30:29 -03:00
preference :
matchExpressions :
- key : hardware
operator : In
values :
- rpi5
2026-05-21 02:42:53 -03:00
- weight : 50
2026-05-19 23:30:29 -03:00
preference :
matchExpressions :
- key : hardware
operator : In
values :
- rpi4
2026-05-19 19:17:14 -03:00
initContainers :
2026-07-21 21:02:06 -03:00
- name : init-config
2026-05-19 20:37:50 -03:00
image : busybox:1.37
imagePullPolicy : IfNotPresent
command :
- sh
- -c
- |
2026-07-21 21:02:06 -03:00
set -eu
2026-08-02 17:26:58 -03:00
mkdir -p /opt/data/workspace/triage-proof /opt/data/home/.local/bin /opt/data/logs
2026-07-21 21:02:06 -03:00
cp /config/config.yaml /opt/data/config.yaml
cp /config/SOUL.md /opt/data/SOUL.md
cp /config/AGENTS.md /opt/data/workspace/AGENTS.md
2026-08-02 17:26:58 -03:00
cp /config/START-HERE.md /opt/data/workspace/START-HERE.md
2026-08-03 03:58:37 -03:00
cp /config/HERMES-CAPABILITIES.md /opt/data/workspace/HERMES-CAPABILITIES.md
2026-08-03 23:28:36 -03:00
cp /guide/OPERATOR-RUNBOOK.md /opt/data/workspace/HERMES-OPERATOR-RUNBOOK.md
2026-08-03 04:30:16 -03:00
cp /config/ATLAS-TRIAGE-PROOFS.md /opt/data/workspace/triage-proof/ATLAS-TRIAGE-PROOFS.md
2026-08-04 13:22:18 -03:00
cp /config/START-HERE.md /opt/data/START-HERE.md
cp /config/HERMES-CAPABILITIES.md /opt/data/HERMES-CAPABILITIES.md
cp /guide/OPERATOR-RUNBOOK.md /opt/data/HERMES-OPERATOR-RUNBOOK.md
cp /config/ATLAS-TRIAGE-PROOFS.md /opt/data/ATLAS-TRIAGE-PROOFS.md
2026-07-21 21:02:06 -03:00
touch /opt/data/.env
2026-08-15 17:58:47 -03:00
for key in ANTHROPIC_API_KEY API_SERVER_KEY CLAUDE_API_KEY CLAUDE_CODE_OAUTH_TOKEN GITEA_TOKEN GITEA_USERNAME HERMES_IMAGE_BROKER_KEY OPENAI_API_KEY; do
grep -v "^${key}=" /opt/data/.env > /opt/data/.env.tmp || true
2026-08-06 12:14:47 -03:00
mv /opt/data/.env.tmp /opt/data/.env
2026-08-15 17:58:47 -03:00
done
rm -f /opt/data/auth.json
2026-07-21 21:02:06 -03:00
chmod 0600 /opt/data/.env
chown -R 10000:10000 /opt/data
2026-05-19 20:37:50 -03:00
securityContext :
runAsUser : 0
runAsGroup : 0
volumeMounts :
- name : home
2026-07-21 21:02:06 -03:00
mountPath : /opt/data
2026-05-19 19:17:14 -03:00
- name : config
mountPath : /config
2026-08-03 23:28:36 -03:00
- name : operator-guide
mountPath : /guide
2026-05-19 19:17:14 -03:00
resources :
requests :
cpu : 25m
memory : 32Mi
limits :
cpu : 100m
memory : 64Mi
2026-08-15 17:58:47 -03:00
- name : stage-runtime-access
image : registry.bstein.dev/bstein/hermes-agent@sha256:81970563e542f0720773e72297810b3a844b83e381e278f25c0916c78d930107
imagePullPolicy : IfNotPresent
command :
- /opt/hermes/.venv/bin/python
- /opt/coordinator/stage_runtime_access.py
- triage
securityContext :
allowPrivilegeEscalation : false
runAsUser : 0
runAsGroup : 0
seccompProfile :
type : RuntimeDefault
volumeMounts :
- {name: coordinator, mountPath: /opt/coordinator, readOnly : true }
- {name: runtime-access, mountPath : /runtime-access}
resources :
requests : {cpu: 25m, memory : 32Mi}
limits : {cpu: 100m, memory : 64Mi}
2026-08-08 17:59:45 -03:00
- name : patch-auth
2026-08-11 20:22:26 -03:00
image : registry.bstein.dev/bstein/hermes-agent@sha256:81970563e542f0720773e72297810b3a844b83e381e278f25c0916c78d930107
2026-08-08 17:59:45 -03:00
imagePullPolicy : IfNotPresent
command :
- /opt/hermes/.venv/bin/python
- /opt/coordinator/patch_hermes_auth.py
- /opt/hermes/hermes_cli/auth.py
- /patched/auth.py
securityContext :
allowPrivilegeEscalation : false
runAsUser : 10000
runAsGroup : 10000
seccompProfile :
type : RuntimeDefault
volumeMounts :
- name : coordinator
mountPath : /opt/coordinator
readOnly : true
- name : auth-patch
mountPath : /patched
resources :
requests :
cpu : 25m
memory : 64Mi
limits :
cpu : 100m
memory : 128Mi
2026-08-13 00:50:34 -03:00
- name : patch-api-server-sessions
image : registry.bstein.dev/bstein/hermes-agent@sha256:81970563e542f0720773e72297810b3a844b83e381e278f25c0916c78d930107
imagePullPolicy : IfNotPresent
command :
- /bin/sh
- -ec
- |
/opt/hermes/.venv/bin/python /opt/coordinator/patch_api_server_sessions.py \
/opt/hermes/gateway/platforms/api_server.py /patched/api_server.py
/opt/hermes/.venv/bin/python /opt/coordinator/migrate_api_session_lineage.py
env :
- {name: HERMES_API_DEFAULT_PARENT_SESSION_ID, value : automated-triage}
2026-08-13 01:14:31 -03:00
- name : HERMES_API_DEFAULT_PARENT_MATCH_PREFIXES
value : "A static-analysis finding, not a build failure.||Use $triage-titan-test-failures."
2026-08-13 00:50:34 -03:00
securityContext :
allowPrivilegeEscalation : false
runAsUser : 10000
runAsGroup : 10000
seccompProfile :
type : RuntimeDefault
volumeMounts :
- {name: home, mountPath : /opt/data}
- {name: coordinator, mountPath: /opt/coordinator, readOnly : true }
- {name: api-server-patch, mountPath : /patched}
resources :
requests : {cpu: 25m, memory : 64Mi}
limits : {cpu: 100m, memory : 128Mi}
2026-08-15 17:58:47 -03:00
- name : patch-subprocess-secret-boundary
image : registry.bstein.dev/bstein/hermes-agent@sha256:81970563e542f0720773e72297810b3a844b83e381e278f25c0916c78d930107
imagePullPolicy : IfNotPresent
command :
- /bin/sh
- -ec
- |
/opt/hermes/.venv/bin/python /opt/coordinator/patch_subprocess_secret_boundary.py \
/opt/hermes/tools/environments/local.py /patched/local.py
/opt/hermes/.venv/bin/python /opt/coordinator/patch_process_output_redaction.py \
/opt/hermes/tools/process_registry.py /patched/process_registry.py
securityContext :
allowPrivilegeEscalation : false
runAsUser : 10000
runAsGroup : 10000
seccompProfile :
type : RuntimeDefault
volumeMounts :
- {name: coordinator, mountPath: /opt/coordinator, readOnly : true }
- {name: subprocess-secret-patch, mountPath : /patched}
resources :
requests : {cpu: 25m, memory : 64Mi}
limits : {cpu: 100m, memory : 128Mi}
2026-05-19 19:17:14 -03:00
- name : install-kubectl
image : bitnami/kubectl@sha256:554ab88b1858e8424c55de37ad417b16f2a0e65d1607aa0f3fe3ce9b9f10b131
imagePullPolicy : IfNotPresent
command :
- /bin/sh
- -c
- |
set -e
cp "$(command -v kubectl)" /tools/kubectl
chmod 0755 /tools/kubectl
2026-07-21 21:02:06 -03:00
chown 10000:10000 /tools/kubectl
2026-07-21 21:08:11 -03:00
securityContext :
runAsUser : 0
runAsGroup : 0
2026-05-19 19:17:14 -03:00
volumeMounts :
- name : tools
mountPath : /tools
resources :
requests :
cpu : 25m
memory : 32Mi
limits :
cpu : 100m
memory : 64Mi
containers :
2026-07-21 21:02:06 -03:00
- name : hermes
2026-08-11 20:22:26 -03:00
image : registry.bstein.dev/bstein/hermes-agent@sha256:81970563e542f0720773e72297810b3a844b83e381e278f25c0916c78d930107
2026-05-19 19:17:14 -03:00
imagePullPolicy : IfNotPresent
2026-08-15 17:58:47 -03:00
command : [ /bin/sh, -ec]
2026-07-21 21:02:06 -03:00
args :
2026-08-15 17:58:47 -03:00
- |
API_SERVER_KEY="$(tr -d '\r\n' < /runtime-access/triage-api-key)"
test -n "${API_SERVER_KEY}"
export API_SERVER_KEY
exec /opt/hermes/.venv/bin/hermes gateway run --no-supervise
2026-05-19 19:17:14 -03:00
ports :
2026-07-21 21:02:06 -03:00
- name : api
containerPort : 8642
protocol : TCP
2026-05-19 19:17:14 -03:00
env :
2026-07-21 21:02:06 -03:00
- name : HERMES_HOME
value : /opt/data
2026-08-08 17:59:45 -03:00
- name : HERMES_AUTH_FILE
2026-08-15 17:58:47 -03:00
value : /runtime-access/hermes-auth.json
2026-05-19 19:17:14 -03:00
- name : HOME
2026-07-21 21:02:06 -03:00
value : /opt/data/home
2026-05-19 19:17:14 -03:00
- name : PATH
2026-07-21 21:02:06 -03:00
value : /opt/data/home/.local/bin:/opt/hermes/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- name : HERMES_DASHBOARD
2026-08-08 19:18:33 -03:00
value : "0"
2026-07-21 21:02:06 -03:00
- name : HERMES_DASHBOARD_PUBLIC_URL
refactor(hermes): rename chat and triage public hostnames
Rename two public Hermes hostnames across the repo:
chat.hermes.bstein.dev -> hermes.bstein.dev
triage.hermes.bstein.dev -> triage.bstein.dev
agent.hermes.bstein.dev is left untouched. That rename ships separately and
must merge last, because it is the coordinator's own access point.
Covers CoreDNS host entries, the shared hermes-sites certificate SANs and
the ingress rules, Keycloak OIDC redirect/origin/post-logout URLs,
oauth2-proxy redirect URLs, CORS and allowed-origin settings, dashboard
public URLs, the Ariadne proposal UI link, ZAP baseline scan targets, the
operator and agent instruction text, the Telegram sign-in prompts, and the
Docker/UI references.
Knowledge catalogs and the HTTP diagram were regenerated with
scripts/render/knowledge_render_atlas.py rather than hand-edited. Only the
rename delta is carried here: the committed catalogs on main are already
stale by roughly 1650 lines, and that drift is left for a separate cleanup.
Repo-only change. After merge it needs the Keycloak ensure script re-run and
certificate reissuance; existing oauth2-proxy sessions are invalidated.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 21:57:07 +00:00
value : https://triage.bstein.dev
2026-07-21 21:02:06 -03:00
- name : API_SERVER_ENABLED
value : "true"
- name : API_SERVER_HOST
value : 0.0 .0 .0
- name : API_SERVER_PORT
value : "8642"
- name : API_SERVER_CORS_ORIGINS
refactor(hermes): rename chat and triage public hostnames
Rename two public Hermes hostnames across the repo:
chat.hermes.bstein.dev -> hermes.bstein.dev
triage.hermes.bstein.dev -> triage.bstein.dev
agent.hermes.bstein.dev is left untouched. That rename ships separately and
must merge last, because it is the coordinator's own access point.
Covers CoreDNS host entries, the shared hermes-sites certificate SANs and
the ingress rules, Keycloak OIDC redirect/origin/post-logout URLs,
oauth2-proxy redirect URLs, CORS and allowed-origin settings, dashboard
public URLs, the Ariadne proposal UI link, ZAP baseline scan targets, the
operator and agent instruction text, the Telegram sign-in prompts, and the
Docker/UI references.
Knowledge catalogs and the HTTP diagram were regenerated with
scripts/render/knowledge_render_atlas.py rather than hand-edited. Only the
rename delta is carried here: the committed catalogs on main are already
stale by roughly 1650 lines, and that drift is left for a separate cleanup.
Repo-only change. After merge it needs the Keycloak ensure script re-run and
certificate reissuance; existing oauth2-proxy sessions are invalidated.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 21:57:07 +00:00
value : https://triage.bstein.dev
2026-05-19 19:17:14 -03:00
- name : VICTORIA_METRICS_URL
value : http://victoria-metrics-single-server.monitoring.svc.cluster.local:8428
2026-05-19 23:30:29 -03:00
- name : ARIADNE_BASE_URL
value : http://ariadne.maintenance.svc.cluster.local
2026-05-19 19:17:14 -03:00
- name : JENKINS_BASE_URL
value : http://jenkins.jenkins.svc.cluster.local:8080
- name : GITEA_BASE_URL
value : https://scm.bstein.dev
- name : GRAFANA_BASE_URL
value : https://metrics.bstein.dev
2026-08-11 16:22:19 -03:00
- name : HERMES_AUTO_ROUTER_PROFILE
value : triage
2026-08-13 00:50:34 -03:00
- name : HERMES_API_DEFAULT_PARENT_SESSION_ID
value : automated-triage
2026-08-13 01:14:31 -03:00
- name : HERMES_API_DEFAULT_PARENT_MATCH_PREFIXES
value : "A static-analysis finding, not a build failure.||Use $triage-titan-test-failures."
2026-08-08 19:01:14 -03:00
securityContext :
allowPrivilegeEscalation : false
runAsNonRoot : true
runAsUser : 10000
runAsGroup : 10000
capabilities :
drop : [ ALL]
seccompProfile :
type : RuntimeDefault
2026-05-19 19:17:14 -03:00
volumeMounts :
- name : home
2026-07-21 21:02:06 -03:00
mountPath : /opt/data
2026-08-15 17:58:47 -03:00
- name : runtime-access
mountPath : /runtime-access
2026-08-08 17:59:45 -03:00
- name : auth-patch
mountPath : /opt/hermes/hermes_cli/auth.py
subPath : auth.py
2026-08-13 00:50:34 -03:00
- name : api-server-patch
mountPath : /opt/hermes/gateway/platforms/api_server.py
subPath : api_server.py
2026-08-15 17:58:47 -03:00
- name : subprocess-secret-patch
mountPath : /opt/hermes/tools/environments/local.py
subPath : local.py
- name : subprocess-secret-patch
mountPath : /opt/hermes/tools/process_registry.py
subPath : process_registry.py
2026-05-19 19:17:14 -03:00
- name : tools
2026-08-02 08:54:01 -03:00
mountPath : /usr/local/bin/kubectl
subPath : kubectl
2026-08-01 22:38:07 -03:00
- name : triage-skill
mountPath : /opt/data/workspace/skills/triage-titan-test-failures
readOnly : true
2026-08-02 02:47:43 -03:00
- name : mastery-skill
mountPath : /opt/data/workspace/skills/master-hermes-on-atlas
readOnly : true
2026-08-03 03:58:37 -03:00
- name : service-health-skill
mountPath : /opt/data/workspace/skills/triage-atlas-service-health
readOnly : true
- name : alert-tuning-skill
mountPath : /opt/data/workspace/skills/tune-atlas-alerts
readOnly : true
2026-08-11 16:22:19 -03:00
- name : auto-router-plugin
mountPath : /opt/data/plugins/auto-router
readOnly : true
2026-08-08 19:05:17 -03:00
startupProbe :
2026-08-08 19:18:33 -03:00
tcpSocket :
port : api
2026-08-08 19:05:17 -03:00
periodSeconds : 10
timeoutSeconds : 5
failureThreshold : 60
2026-05-19 19:17:14 -03:00
readinessProbe :
2026-08-08 19:18:33 -03:00
tcpSocket :
port : api
2026-07-21 21:02:06 -03:00
initialDelaySeconds : 30
2026-05-19 19:17:14 -03:00
periodSeconds : 10
timeoutSeconds : 5
livenessProbe :
2026-08-08 19:18:33 -03:00
tcpSocket :
port : api
2026-07-21 21:02:06 -03:00
initialDelaySeconds : 90
2026-05-19 19:17:14 -03:00
periodSeconds : 30
timeoutSeconds : 10
resources :
requests :
2026-07-21 21:02:06 -03:00
cpu : 500m
memory : 1Gi
2026-05-19 19:17:14 -03:00
limits :
2026-07-21 21:02:06 -03:00
cpu : "2"
memory : 4Gi
2026-08-08 19:18:33 -03:00
- name : webui
2026-08-16 15:59:09 -03:00
image : registry.bstein.dev/bstein/hermes-webui@sha256:ac6ba7bfd8a86227f31a9a96ebea41227ccf70391f7dcf34206f4d58e835e50e
2026-08-08 19:18:33 -03:00
imagePullPolicy : IfNotPresent
command : [ /bin/sh, -ec]
args :
- |
2026-08-15 17:58:47 -03:00
api_key="$(tr -d '\r\n' < /runtime-access/triage-api-key)"
2026-08-08 19:18:33 -03:00
test -n "${api_key}"
export API_SERVER_KEY="${api_key}"
export HERMES_WEBUI_GATEWAY_API_KEY="${api_key}"
exec /opt/hermes/.venv/bin/python /opt/hermes-webui/server.py
ports :
- {name: dashboard, containerPort: 8787, protocol : TCP}
env :
- {name: HERMES_HOME, value : /opt/data}
2026-08-15 17:58:47 -03:00
- {name: HERMES_AUTH_FILE, value : /runtime-access/hermes-auth.json}
2026-08-08 19:18:33 -03:00
- {name: HOME, value : /opt/data/home}
- {name: HERMES_WEBUI_AGENT_DIR, value : /opt/hermes}
- {name: HERMES_WEBUI_HOST, value : 0.0 .0 .0 }
- {name: HERMES_WEBUI_PORT, value : "8787" }
- {name: HERMES_WEBUI_STATE_DIR, value : /opt/data/webui}
- {name: HERMES_WEBUI_DEFAULT_WORKSPACE, value : /opt/data/workspace}
- {name: HERMES_WEBUI_CHAT_BACKEND, value : gateway}
- {name: HERMES_WEBUI_GATEWAY_BASE_URL, value : http://127.0.0.1:8642}
- {name: HERMES_WEBUI_GATEWAY_USE_RUNS_API, value : "true" }
- {name: HERMES_WEBUI_SKIP_ONBOARDING, value : "1" }
- {name: HERMES_WEBUI_SECURE, value : "1" }
refactor(hermes): rename chat and triage public hostnames
Rename two public Hermes hostnames across the repo:
chat.hermes.bstein.dev -> hermes.bstein.dev
triage.hermes.bstein.dev -> triage.bstein.dev
agent.hermes.bstein.dev is left untouched. That rename ships separately and
must merge last, because it is the coordinator's own access point.
Covers CoreDNS host entries, the shared hermes-sites certificate SANs and
the ingress rules, Keycloak OIDC redirect/origin/post-logout URLs,
oauth2-proxy redirect URLs, CORS and allowed-origin settings, dashboard
public URLs, the Ariadne proposal UI link, ZAP baseline scan targets, the
operator and agent instruction text, the Telegram sign-in prompts, and the
Docker/UI references.
Knowledge catalogs and the HTTP diagram were regenerated with
scripts/render/knowledge_render_atlas.py rather than hand-edited. Only the
rename delta is carried here: the committed catalogs on main are already
stale by roughly 1650 lines, and that drift is left for a separate cleanup.
Repo-only change. After merge it needs the Keycloak ensure script re-run and
certificate reissuance; existing oauth2-proxy sessions are invalidated.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 21:57:07 +00:00
- {name: HERMES_WEBUI_ALLOWED_ORIGINS, value : https://triage.bstein.dev}
2026-08-08 19:18:33 -03:00
- {name: HERMES_WEBUI_TRUST_FORWARDED_HOST, value : "1" }
- {name: HERMES_WEBUI_TRUST_FORWARDED_PROTO, value : "1" }
2026-08-11 16:22:19 -03:00
- {name: HERMES_ROUTER_PROFILE, value : triage}
2026-08-08 19:18:33 -03:00
volumeMounts :
- {name: home, mountPath : /opt/data}
2026-08-15 17:58:47 -03:00
- {name: runtime-access, mountPath: /runtime-access, readOnly : true }
2026-08-08 19:18:33 -03:00
- {name: tmp, mountPath : /tmp}
readinessProbe :
httpGet : {path: /health, port : dashboard}
initialDelaySeconds : 10
periodSeconds : 10
timeoutSeconds : 5
livenessProbe :
httpGet : {path: /health, port : dashboard}
initialDelaySeconds : 30
periodSeconds : 30
timeoutSeconds : 10
securityContext :
allowPrivilegeEscalation : false
capabilities :
drop : [ ALL]
readOnlyRootFilesystem : true
runAsNonRoot : true
runAsUser : 10000
runAsGroup : 10000
seccompProfile :
type : RuntimeDefault
resources :
requests : {cpu: 50m, memory : 128Mi}
limits : {cpu: 750m, memory : 1Gi}
2026-05-19 19:17:14 -03:00
volumes :
- name : home
2026-05-21 02:39:53 -03:00
persistentVolumeClaim :
2026-07-21 21:02:06 -03:00
claimName : hermes-home
2026-08-15 17:58:47 -03:00
- name : runtime-access
emptyDir :
medium : Memory
sizeLimit : 2Mi
2026-05-19 19:17:14 -03:00
- name : config
configMap :
2026-07-21 21:02:06 -03:00
name : hermes-config
2026-08-03 23:28:36 -03:00
- name : operator-guide
configMap :
name : hermes-operator-guide
2026-05-19 19:17:14 -03:00
- name : tools
emptyDir : {}
2026-08-08 17:59:45 -03:00
- name : coordinator
configMap :
name : hermes-coordinator
defaultMode : 0555
2026-08-11 16:22:19 -03:00
- name : auto-router-plugin
configMap :
name : hermes-auto-router-plugin
2026-08-08 17:59:45 -03:00
- name : auth-patch
emptyDir : {}
2026-08-13 00:50:34 -03:00
- name : api-server-patch
emptyDir : {}
2026-08-15 17:58:47 -03:00
- name : subprocess-secret-patch
emptyDir : {}
2026-08-08 19:18:33 -03:00
- name : tmp
emptyDir :
sizeLimit : 256Mi
2026-08-01 22:38:07 -03:00
- name : triage-skill
configMap :
name : hermes-triage-skill
items :
- key : SKILL.md
path : SKILL.md
- key : openai.yaml
path : agents/openai.yaml
2026-08-02 02:47:43 -03:00
- name : mastery-skill
configMap :
name : hermes-mastery-skill
items :
- key : SKILL.md
path : SKILL.md
- key : openai.yaml
path : agents/openai.yaml
- key : architecture.md
path : references/architecture.md
- key : curriculum.md
path : references/curriculum.md
- key : incident-drills.md
path : references/incident-drills.md
- key : mastery-rubric.md
path : references/mastery-rubric.md
2026-08-02 03:59:32 -03:00
- key : two-hour-proof-sprint.md
path : references/two-hour-proof-sprint.md
2026-08-03 03:58:37 -03:00
- name : service-health-skill
configMap :
name : hermes-service-health-skill
items :
- key : SKILL.md
path : SKILL.md
- key : openai.yaml
path : agents/openai.yaml
- key : service-map.md
path : references/service-map.md
- name : alert-tuning-skill
configMap :
name : hermes-alert-tuning-skill
items :
- key : SKILL.md
path : SKILL.md
- key : openai.yaml
path : agents/openai.yaml
- key : alert-review.md
path : references/alert-review.md