33 Commits

Author SHA1 Message Date
Hermes Agent
94106bf252 refactor(hermes): rename the owner agent host to worker.bstein.dev
Introduce worker.bstein.dev as the canonical hostname for the owner-only
Hermes coordinator, previously agent.hermes.bstein.dev.

The rename is additive, matching the shape #38 restored for chat and triage.
CoreDNS, both agent Ingresses and the hermes-sites certificate now serve BOTH
names, so merging this cannot take away the endpoint the operator uses to
reach the coordinator. Retiring agent.hermes.bstein.dev is a separate,
separately scheduled change. No redirect middleware is added.

What switches to the new host:
- HERMES_DASHBOARD_PUBLIC_URL and the oauth2-proxy --redirect-url
- the Keycloak agent proxy rootUrl
- operator docs, skills, the ZAP baseline target and the triage monitor default

What stays dual-homed until retirement:
- CoreDNS hosts entry, both agent Ingress rules, certificate SANs
- API_SERVER_CORS_ORIGINS (now a comma-separated pair)
- the Keycloak redirect URIs, web origins and post-logout origins, so a
  rollback only needs the oauth2-proxy --redirect-url reverted and does not
  require re-running the ensure job

The agent client passes its legacy origin through the optional fourth argument
#38 added to ensure_proxy_client, so no second mechanism is introduced. The
immutable ensure Job goes -11 -> -12 because #38 already consumed -11 and that
run has completed; without a further bump this change would never be applied.
Login on the new host fails until the -12 Job completes.

Because the session and CSRF cookies use the __Host- prefix they are bound to
one origin, so a fresh login must start on worker.bstein.dev and existing
sessions do not carry over -- re-login is required after rollout.

#38's public-host continuity test now covers the agent proxy's dual origins
rather than asserting the agent surface was untouched by the rename.

Knowledge catalogs and diagrams regenerated with `make knowledge`.
2026-08-21 10:29:46 +00:00
Hermes Agent
f4f51323f6 hermes: restore legacy chat/triage hosts alongside the renamed ones
PR #34 renamed the public chat/triage hosts in place rather than adding
the new names, so chat.hermes.bstein.dev and triage.hermes.bstein.dev
were dropped from the certificate SANs, the hermes-sites Ingress rules
and the CoreDNS overrides at once. Both legacy hosts now answer 404 with
Traefik's default self-signed certificate, and the renamed hosts cannot
complete a login because the Keycloak clients still carry the old
redirect URIs, so chat and triage are unreachable on every hostname.

Make the rename additive, which is the rollback path the post-merge
runbook asks for when the OIDC step fails:

- put the legacy names back on hermes-sites-tls and on the Ingress,
  pointing at the same oauth2-proxy backends
- restore both CoreDNS host overrides for in-cluster resolution
- teach ensure_proxy_client to register an optional legacy origin, so
  hermes-chat-proxy and hermes-triage-proxy accept the old and new
  redirect URIs, web origins and post-logout origins at the same time
  while rootUrl stays on the canonical new host
- bump the immutable ensure Job so Flux reruns the script

Serving both names is deliberate: oauth2-proxy cookies are host-bound,
so redirecting the legacy hosts would silently drop live sessions.
Retiring them stays a separate, explicit change.

Supersedes #36, which only bumped the Job and would have left the
legacy hosts dark.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 08:49:09 +00:00
Hermes Agent
79be4d1c71 refactor(hermes): rename chat and triage public hosts 2026-08-21 06:43:19 +00:00
jenkins
d4776556b4 keycloak: add Hermes automation identity 2026-08-13 17:45:09 -03:00
jenkins
c817f3cef7 hermes(agent): replace HERDR with native CLI lanes 2026-08-10 16:31:06 -03:00
jenkins
bb73efb285 feat(hermes): split chat agent and triage surfaces 2026-08-08 17:59:57 -03:00
jenkins
cfe70c8f5b fix(hermes): stabilize consumer chat transport 2026-08-02 15:25:22 -03:00
jenkins
5f4bdc6e7e ai(hermes): add isolated user chat instance 2026-08-02 02:31:01 -03:00
jenkins
880736b4ff agent: replace OpenClaw with Hermes 2026-07-21 21:02:44 -03:00
jenkins
6ef4ef161e Add Veles deployment IaC 2026-06-27 07:37:42 -03:00
jenkins
4a9ac01273 gitea: constrain Veles tester feedback access 2026-06-20 15:12:51 -03:00
jenkins
b6fc9dfe54 keycloak: allow groups scope for Veles Gitea 2026-06-20 14:50:16 -03:00
jenkins
db7ecfb16d keycloak: clear Gitea Veles OIDC PKCE flag 2026-06-20 14:23:46 -03:00
jenkins
6dd6356433 keycloak: disable PKCE for Gitea Veles OIDC 2026-06-20 14:20:15 -03:00
jenkins
74ab9bc78b gitea: wire Veles OIDC login 2026-06-20 14:08:18 -03:00
jenkins
712b97f64b agent(openclaw): expose oauth protected UI 2026-05-20 17:22:12 -03:00
jenkins
2c37ee4f84 recovery: keep storage nodes as spillover only 2026-05-15 11:52:26 -03:00
c985a45113 keycloak: allow harbor direct grants 2026-01-22 12:41:58 -03:00
382557253a sso: retry keycloak secret jobs 2026-01-17 03:24:30 -03:00
9493ede273 sso: harden keycloak jobs and rerun 2026-01-17 01:41:39 -03:00
e8ccfa6207 jobs: drop apk installs and prefer arm64 2026-01-17 01:02:58 -03:00
05cdf75dc6 finance: add actual budget and firefly 2026-01-16 23:52:56 -03:00
d957e7e7f7 vault: read oidc config from vault 2026-01-14 23:20:04 -03:00
4f99000aab vault: inject remaining services with wrappers 2026-01-14 17:29:09 -03:00
4279db1619 vault: stabilize injector templates and add health apps 2026-01-14 13:40:29 -03:00
1c3cb83b0a keycloak: switch jobs to vault injector 2026-01-14 13:20:57 -03:00
c9483b2d80 vault: sync harbor pulls 2026-01-14 10:07:31 -03:00
bdc32b7a36 vault(consumption): sync secrets via CSI 2026-01-14 05:07:23 -03:00
3c65695dfc vault: wire more services to CSI 2026-01-14 02:54:59 -03:00
0d9291da7e vault: align oidc roles with keycloak 2026-01-14 02:24:32 -03:00
023032fd76 keycloak: fix harbor oidc job 2026-01-14 01:24:18 -03:00
6779e99617 keycloak: ensure harbor oidc scope 2026-01-14 01:21:08 -03:00
e576daf98b iac: localize configmap scripts 2026-01-13 12:07:03 -03:00