Skip to content

Latest commit

 

History

History
279 lines (168 loc) · 16 KB

File metadata and controls

279 lines (168 loc) · 16 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.


0.1.20 (2026-07-28)

Bug Fixes

  • chart: stop rendering a doubled v in the operator image tag (#131) (7a724e5)

0.1.19 (2026-07-28)

Features

  • scheduling: add spec.scheduling.runtimeClassName (#123) (4462cb7)

Bug Fixes

  • chart: render pullable default image tags (#122) (88445b1)

0.1.18 (2026-06-19)

Features

  • runtime: run agents on the upstream s6 image — instance reaches Ready (gateway API + /health) (#90) (12dccb4)

Bug Fixes

  • agent-image: ship pyproject.toml + uv.lock at /opt/venv-template/ (#68) (#85) (39ef52c)
  • agent-image: ship the uv binary in the runtime stage (#68) (#88) (13fb1e5)
  • backup: bound the on-delete finalizer so a failing snapshot can't make an instance undeletable (#94) (40d6099)

0.1.17 (2026-06-16)

Bug Fixes

  • operatorhub: ship ci.yaml to redhat submission + add reviewers (#82) (9e9cafe)

0.1.16 (2026-06-16)

Bug Fixes

  • bundle: declare com.redhat.openshift.versions for OpenShift cert (#80) (47d5ff4)

0.1.15 (2026-06-16)

Features

  • chart: world-class Artifact Hub metadata + cosign chart signing (#78) (4e38216)

Bug Fixes

  • agent-image: broken runtime venv + invalid smoke workflow YAML (#66) (ec6016c)

0.1.14 (2026-06-10)

Features

  • spec.tailscale.mode=serve (private tailnet exposure) (#63) (da7c307)

0.1.13 (2026-06-04)

Bug Fixes

  • olm: use the official Hermes logo for the bundle icon (#60) (45c2f38)

0.1.12 (2026-06-03)

Features

  • optional Gateway API HTTPRoute for HermesInstance (#59) (ff5d781)
  • tier-1/2 parity (digest-pin, bench, image CEL, zombie reaping, Grafana, docs-site) (#56) (712ed2b)

Bug Fixes

  • olm: declare webhookDefinitions so OLM provisions the webhook cert (#57) (4420511)

0.1.11 (2026-06-03)

Bug Fixes

  • olm: correct CSV image refs so OperatorHub submission passes (#54) (edaa87d)

0.1.10 (2026-06-03)

Bug Fixes

  • agent-image: native pinned uv relock + bump uv to 0.11.7 (#48) (6e2615f)
  • agent-image: relock uses uv image entrypoint (unblocks hermes-agent publish) (#46) (9e456b1)
  • agent-image: verify uv.lock by git tag (unblocks publish) (#50) (3cbcc7f)

0.1.9 (2026-05-26)

Bug Fixes

  • ci: operatorhub-submit uses classic PAT with public_repo scope (#39) (33273ad)
  • ci: release-please auto-creates tag via commit-message detection (#38) (e36a8d4)

0.1.8 (2026-05-26)

Bug Fixes

  • rename stubbi → paperclipinc across chart, CI, docs, Go module (de3e0bd)

0.1.7 (2026-05-20)

Bug Fixes

  • ci: drop --remote from gh repo fork in operatorhub-submit (#29) (55bab59)

0.1.6 (2026-05-13)

Features

  • hermes-operator v1.0.0 — plans 1–7 implementation (#1) (a99ad5c)

Bug Fixes

  • ci: semantic Bundle RBAC sync check (was: file-diff flake) (#16) (3b3b5a6)
  • release: build container images via docker/build-push-action (#23) (d1b4862)
  • release: run make installer via goreleaser before:hooks (#25) (5bcd154)
  • release: trigger v0.1.2 (v0.1.1 tag has broken release.yaml) (#18) (e3f8289)
  • release: use --skip=validate instead of throw-away commit (#20) (61f2099)

0.1.5 (2026-05-13)

Bug Fixes

  • release: run make installer via goreleaser before:hooks (#25) (5bcd154)

0.1.4 (2026-05-13)

Bug Fixes

  • release: build container images via docker/build-push-action (#23) (d1b4862)

0.1.3 (2026-05-13)

Bug Fixes

  • release: use --skip=validate instead of throw-away commit (#20) (61f2099)

0.1.2 (2026-05-13)

Bug Fixes

  • ci: semantic Bundle RBAC sync check (was: file-diff flake) (#16) (3b3b5a6)
  • release: trigger v0.1.2 (v0.1.1 tag has broken release.yaml) (#18) (e3f8289)

0.1.1 (2026-05-13)

Features

  • hermes-operator v1.0.0: plans 1-7 implementation (#1) (a99ad5c)

1.0.0 (2026-05-12)

First public release. The Kubernetes operator for nousresearch/hermes-agent, shipping with full feature parity to openclaw-operator v0.32 adapted to hermes-agent's Python/uv runtime, plus hermes-specific surfaces: multi-platform gateways (Telegram/Discord/Slack/WhatsApp/Signal), a Honcho profile-store companion, an SSA-based HermesSelfConfig API for agent-initiated mutations, and a one-shot OpenClaw → Hermes migration path.

The v1 stability contract: API versioning policy, deprecation policy, exhaustive condition catalogue, conversion-webhook scaffolding: is in place from day one. See docs/api-versioning.md and docs/deprecations.md.

Inspired by openclaw-rocks/openclaw-operator. Concrete lessons baked in: SSA from day one on the SelfConfig path (openclaw #433), explicit Kubernetes defaults set in every builder (generation-thrash regressions never shipped), finalizer mutations via r.Patch rather than r.Update (openclaw #437), foreign-annotation preservation (openclaw #446), zombie-process reaper (openclaw #471), namespace-scoped RBAC opt-in (openclaw #469), ClusterRole aggregation labels (openclaw #479), and read-only root filesystem with explicit writable subPaths (openclaw #458).

Highlights

  • CRDs (hermes.agent/v1): HermesInstance (namespaced), HermesSelfConfig (namespaced, SSA-applied), HermesClusterDefaults (cluster-scoped singleton cluster).
  • Workload: StatefulSet (single replica by default; opt-in HPA), default-deny NetworkPolicy + per-gateway allow rules, PDB auto-managed when replicas > 1, read-only root filesystem with writable emptyDirs for /tmp and ~/.config.
  • Multi-platform gateways: Telegram, Discord, Slack, WhatsApp, Signal: each with its own Secret reference, rotatable independently.
  • Day-2 operations: S3-compatible backups (scheduled / on-delete / pre-update), declarative one-shot restore (spec.restoreFrom), OCI-registry-driven auto-update with probe-failure rollback, one-shot OpenClaw → Hermes migration (sibling or S3 source).
  • GitOps coexistence: SSA on the SelfConfig path under field manager hermes.agent/selfconfig; FluxCD/Argo own the same instance for other fields without flap.
  • Distribution: Helm chart, OLM bundle (OperatorHub submission), plain kustomize manifests, multi-arch (amd64+arm64) Cosign-signed images with SPDX SBOM attestation.
  • Testing: unit, envtest, e2e (kind), conformance (negative + idempotency + upgrade matrix + GitOps + failure injection), benchmarks, gosec + Trivy, Reconcile Guard CI, Helm RBAC sync check.
  • Documentation: design spec, API reference, condition catalogue, API versioning policy, deprecation policy, 9 worked examples, Grafana dashboard, public roadmap.

Supported Kubernetes versions

1.28, 1.29, 1.30, 1.31, 1.32.

Known limitations / deferred items

  • examples/ directory will be populated with 9 worked YAML recipes in v1.1. The directory structure and README index are committed; the individual example files are a follow-up cycle.
  • Grafana dashboard library (docs/grafana/) will expand to per- instance drilldown and per-gateway health dashboards in v1.1. The operator-overview dashboard is in v1.0.0.
  • OperatorHub submission requires manual steps (submission PR to OperatorHub community-operators repo). The OLM bundle is committed and tested; the actual submission is a human-in-the-loop step after this release.

Inspiration and prior art

This is a clean-room operator built specifically for hermes-agent. The openclaw-rocks/openclaw-operator project: which shipped a similar lifecycle operator for OpenClaw, evolving through v0.5 → v0.32 with substantial production feedback: served as the reference for the shape of this product: which surfaces matter, which lessons stick, and which guardrails are non-negotiable. The hermes-specific surfaces (Python/uv runtime, multi-platform gateways, Honcho, SSA-based SelfConfig with profiles action, declarative migration importer) are new. The v1 stability contract is also new; it is the single most important thing this operator does differently from the v0.x grind.

For the full list of openclaw lessons that informed v1, see docs/superpowers/specs/2026-05-12-hermes-operator-design.md §1.G3 and §7.2 ("Reconciliation rules").