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.39.0 (2026-08-12)
- mesh: add a mesh provider abstraction and NetBird support (#594) (56824b3)
- workspace: add a configurable file update policy (#593) (83e9dfd)
- complete the metrics pipeline (OTel endpoint, ServiceMonitor lifecycle, metrics ingress isolation) (#590) (2b79d1e)
- scope the operator-namespace cache entry to Secrets in namespaced mode (#591) (a74bab1)
0.38.3 (2026-07-28)
0.38.2 (2026-07-28)
- service: expose the managed metrics port alongside custom Service ports (#583) (6e22165)
- statefulset: hash rendered ConfigMap data so config changes roll the pod (#579) (5082152)
0.38.1 (2026-07-20)
- gate PhaseRunning on StatefulSetReady so consumers don't route to a not-ready instance (#572) (2a1820c)
0.38.0 (2026-07-19)
0.37.0 (2026-07-18)
- probes: compare disk readiness free space as integer KiB (#569) (3f5dd83)
- skills: converge PVC-seeded skill pack files to the declared revision (#566) (35d2987)
- skills: preserve owner-qualified ClawHub refs for disambiguation (#559) (bb2f3aa)
0.36.5 (2026-06-20)
0.36.4 (2026-06-16)
0.36.3 (2026-06-16)
- bundle: declare com.redhat.openshift.versions for OpenShift cert (#549) (9a66a7f)
- ci: sync OperatorHub fork to avoid workflow-scope push rejection (#547) (4adde0e)
0.36.2 (2026-06-15)
0.36.1 (2026-06-08)
0.36.0 (2026-06-03)
- add optional Gateway API HTTPRoute support (#535) (e56d4bb)
- tier-1/2 parity (operatorhub digest pin, verify-signing, image CEL, conformance) (#533) (3787dd0)
- helm: grant cluster-scoped OpenClawClusterDefaults RBAC under watchNamespaces (#531) (7c176eb)
- idempotent plugin install in init-plugins container (#528) (58280c8)
0.35.0 (2026-06-02)
- check skip-backup annotation before setting BackingUp phase (#524) (b24b403)
- parsePluginEntry drops npm: prefix, all plugins route through clawhub (#518) (50e75a9)
0.34.8 (2026-06-02)
- replace operator logo sunglasses with open eyes (eb61231)
0.34.7 (2026-06-01)
- olm: ship all three CRDs in the OperatorHub bundle (842f736)
- complete openclaw-rocks -> paperclipinc migration (60d9f9e)
0.34.6 (2026-05-26)
0.34.5 (2026-05-26)
- rename openclaw-rocks → paperclipinc across chart, CI, docs, Go module (2de5f6b)
0.34.4 (2026-05-21)
0.34.3 (2026-05-20)
0.34.2 (2026-05-20)
0.34.1 (2026-05-12)
0.34.0 (2026-05-12)
0.33.0 (2026-05-12)
0.32.1 (2026-05-11)
0.32.0 (2026-05-10)
0.31.1 (2026-05-08)
0.31.0 (2026-05-05)
0.30.0 (2026-04-24)
0.29.0 (2026-04-23)
0.28.1 (2026-04-21)
0.28.0 (2026-04-17)
0.27.1 (2026-04-17)
0.27.0 (2026-04-14)
0.26.2 (2026-04-09)
0.26.1 (2026-04-09)
0.26.0 (2026-04-09)
0.25.2 (2026-04-06)
0.25.1 (2026-04-01)
0.25.0 (2026-03-31)
0.24.2 (2026-03-30)
0.24.1 (2026-03-26)
0.24.0 (2026-03-25)
0.23.2 (2026-03-25)
0.23.1 (2026-03-25)
0.23.0 (2026-03-24)
- backup: add --copy-links to rclone to include symlinks (#400) (8ffb8e8)
- chromium: use run.sh entrypoint and migrate deprecated image (#397) (e74dffd)
- controller: normalize UpdateStrategy.RollingUpdate to stop continuous reconcile loop (#403) (0df4bcb)
- e2e: stabilize flaky CDP integration screenshot test (#405) (2b441af)
- preserve user-set gateway auth mode in config enrichment (#404) (337eb72)
0.11.0 (2026-03-10)
- add chromium CDP proxy to inject anti-bot Chrome launch args (1e30d22), closes #270
- chromium CDP proxy for anti-bot launch args (e7d9d86)
- resources: add logging and validation for resource quantities (0dc3508)
- validate existing PVC and improve resource parsing (351c87a)
- handle merge commits in release tag creation step (370edf6)
- handle merge commits in release tag creation step (07b45bf)
- resolve chromium sidecar startup race and NetworkPolicy gaps (8579946)
- resolve chromium sidecar startup race and NetworkPolicy gaps (8e7fc99), closes #270
0.10.30 (2026-03-10)
- idempotent ClawHub skill installs for persistent storage (b02c5f2)
- add activeDeadlineSeconds and startingDeadlineSeconds to backup CronJob (d5a5a0a), closes #286
- add deadline safeguards to backup CronJob (5f3715d)
- add K8s API port 6443 egress when tailscale is enabled (5968cc1)
- inject POD_NAMESPACE env via Downward API (b793c0f)
- inject POD_NAMESPACE env via Downward API in operator deployment (8b5ae53), closes #281
0.10.29 (2026-03-09)
0.10.28 (2026-03-09)
- auto-inject 127.0.0.0/8 into gateway.trustedProxies (#276) (e7ecc5c), closes #274
- handle OCI pagination in registry tag resolver (#275) (2fcf3dd)
0.10.27 (2026-03-09)
0.10.26 (2026-03-09)
- remove invalid llmConfig from webhook validation and docs (#261) (e8f7399)
- respect pod-level runAsNonRoot in container security contexts (#266) (ad21b4c), closes #263
0.10.25 (2026-03-07)
0.10.24 (2026-03-06)
0.10.23 (2026-03-06)
0.10.22 (2026-03-05)
0.10.21 (2026-03-05)
- disable device auth for Control UI in K8s environments (#238) (c5c420c), closes #233
- propagate nodeSelector and tolerations to backup CronJob pods (#245) (98ef456), closes #244
- use localhost for Chromium CDP URL to support IPv6 clusters (#243) (08dc2c2), closes #228
0.10.20 (2026-03-04)
0.10.19 (2026-03-04)
0.10.18 (2026-03-03)
0.10.17 (2026-03-02)
- add configurable timeout for BackingUp phase to prevent stuck instances (#226) (778a642), closes #224
- make skill pack resolution non-blocking to prevent provisioning failures (#227) (ffb2485), closes #225
0.10.16 (2026-03-01)
0.10.15 (2026-02-27)
0.10.14 (2026-02-27)
0.10.13 (2026-02-27)
0.10.12 (2026-02-26)
- add optional S3_REGION support for MinIO backups (#212) (c5e96c8), closes #205
- chromium: pass extraArgs via DEFAULT_LAUNCH_ARGS env instead of container Args (#211) (ec79758), closes #209
0.10.11 (2026-02-26)
- store plaintext username and password in auto-generated basic auth secret (#208) (179b4a6), closes #201
0.10.10 (2026-02-26)
0.10.9 (2026-02-26)
- add Operator SDK scorecard testing (#198) (3b44d9a)
- add topology spread constraints support (#196) (98ba176)
0.10.8 (2026-02-26)
- chromium: add extraArgs and extraEnv fields to ChromiumSpec (#187) (2878482)
- chromium: add extraArgs/extraEnv to ChromiumSpec, fix issues #189-#193 (#194) (cba8d1a)
0.10.7 (2026-02-25)
0.10.6 (2026-02-24)
0.10.5 (2026-02-24)
0.10.4 (2026-02-24)
0.10.3 (2026-02-23)
- auto-set gateway.bind=loopback and use exec probes for Tailscale serve/funnel (#170) (e26694b), closes #167
- expose metrics port in Service, StatefulSet, and ServiceMonitor (#169) (049d097), closes #166
- move CRDs from Helm crds/ to templates/ for upgrade support (#173) (599b394), closes #168
0.10.2 (2026-02-23)
- break reconciliation tight loop caused by unconditional status writes (#163) (88921b7), closes #161
- use single-quoted node -e argument in merge mode scripts (#164) (a661ed8), closes #162
0.10.1 (2026-02-22)
0.10.0 (2026-02-22)
- The backup credentials Secret name changes from
b2-backup-credentialstos3-backup-credentials, and the expected keys change from B2_BUCKET/B2_KEY_ID/B2_APP_KEY/B2_ENDPOINT to S3_BUCKET/S3_ACCESS_KEY_ID/S3_SECRET_ACCESS_KEY/S3_ENDPOINT.
0.9.23 (2026-02-22)
0.9.22 (2026-02-22)
0.9.21 (2026-02-21)
0.9.20 (2026-02-21)
0.9.19 (2026-02-21)
0.9.18 (2026-02-20)
0.9.17 (2026-02-20)
0.9.16 (2026-02-20)
- support npm packages in skills field and disable lifecycle scripts (#137) (a9db9d0), closes #131 #91
0.9.15 (2026-02-19)
0.9.14 (2026-02-19)
0.9.13 (2026-02-19)
- inject browser config for Chromium sidecar (#126) (570344e)
- use copyFileSync instead of renameSync in merge mode init container (#121) (72bd962), closes #120
0.9.12 (2026-02-18)
- add first-class Ollama sidecar support (860225e)
- add native Tailscale integration via CRD fields (#115) (c3a2ae4)
0.9.11 (2026-02-18)
0.9.10 (2026-02-18)
- emit provider-aware ingress annotations based on className (#109) (#110) (c040df6)
- graceful deletion when B2 backup credentials are not configured (#112) (10b59be), closes #111
- use shell-capable images for distroless init containers (#108) (2c87e68)
0.9.9 (2026-02-17)
0.9.8 (2026-02-17)
0.9.7 (2026-02-17)
0.9.6 (2026-02-16)
0.9.5 (2026-02-16)
- add Phase 2+3 features and CVE-2025-22868 fix (#84) (94d4273)
- add read-only rootfs, config merge mode, skill installation, and secret rotation detection (#82) (abd7911)
- auto-generate gateway token auth for OpenClaw instances (#85) (6ee7eca), closes #83
0.9.4 (2026-02-16)
0.9.3 (2026-02-16)
0.9.2 (2026-02-16)
- add opt-in auto-update for OCI registry version tracking (#71) (5ce624e)
- add webhook warning for latest image tag (#67) (6791624)
- add skip-backup annotation to E2E test instance (#69) (33ab056)
- extract imageTagLatest constant to satisfy goconst linter (#68) (fc14d1a)
- suppress gosec false positive and handle existing releases (aef5468)
- suppress gosec G101 false positive and handle existing releases (182fafb)
- sync release-please manifest to v0.9.1 (#72) (88f50a9)
0.6.0 (2026-02-13)
- CRD API group changed from
openclaw.openclaw.iotoopenclaw.openclaw.rocks. Existing CRDs must be deleted and re-created. This is acceptable at v1alpha1 stability level.
- Add nautical banner image with crab captain at Kubernetes helm (84d1854)
- Add observability, testing, docs, and dev tooling (5af27e1)
- Add observability, testing, docs, and dev tooling for production readiness (a8c063b)
- Add support for custom sidecar containers (#27) (f0071f7), closes #24
- Initial OpenClaw Kubernetes Operator implementation (6d873ff)
- Inject CHROMIUM_URL env var into main container when sidecar is enabled (8553cc7)
- Inject CHROMIUM_URL env var when sidecar is enabled (b80dabe)
- Replace manual release steps with GoReleaser (#2) (fedc497)
- Support custom egress rules in NetworkPolicy (#15) (#16) (c62dc09)
- update banner with real OpenClaw logo and Kubernetes logo (#37) (840adb9)
- Add leader election RBAC and E2E test infrastructure (4eb6019)
- Apply same CreateOrUpdate pattern to ServiceMonitor reconciler (#30) (c1aaa36)
- Bump chromium /dev/shm from 256Mi to 1Gi (925d7b8)
- Bump chromium /dev/shm sizeLimit from 256Mi to 1Gi (a4b3fbb)
- change CRD API group domain from openclaw.io to openclaw.rocks (#41) (5bae852)
- Chromium sidecar crash (UID mismatch + read-only rootfs) and lint (#14) (febe1d3)
- Disable SBOM upload-release-assets to avoid race condition (d909808)
- Downgrade to Go 1.23 for golangci-lint compatibility (dd33c08)
- Increase golangci-lint timeout and update to v1.63.4 (1d982ca)
- Link OpenClaw to openclaw.ai, not openclaw.rocks (679b043)
- Link OpenClaw to openclaw.ai, not openclaw.rocks (#22) (9bfdbd8)
- Polish README copy and diagram alignment (#19) (ef6a8d1)
- Pre-enable channel modules in config to prevent EBUSY on startup (#13) (21ee585), closes #11
- Prevent endless Deployment reconciliation loop (#29) (db942b9), closes #28
- Remove chart-releaser, keep OCI-only Helm distribution (#3) (99e3cdb)
- Replace config subPath mount with init container to avoid EBUSY (#10) (38b60d3), closes #9
- Resolve variable shadowing of err in PVC reconciliation (a9ea85b)
- Set HOME env var to match config mount path (#5) (175ff92), closes #4
- skip GitHub release creation in release-please (#47) (96a5be9)
- Specify kind cluster name for image loading (7ac2116)
- update banner alt text (#38) (d00dc23)
- Update Chart.yaml version/appVersion to match latest release v0.2.4 (#26) (c475ffc)
- Update copyright to 2026 Paperclip Inc. (bca1f0f)
- Update copyright to 2026 Paperclip Inc. (4d462f9)
- Update Go version to 1.24 for CI compatibility (5c13d06)
- Use correct GitHub org name (OpenClaw-rocks) in all references (#20) (c157899)
- Use direct append instead of loop for image pull secrets (187477c)
- Use Go 1.24 with goinstall mode for golangci-lint (3dd40c8)
- Use govet enable list for shadow analyzer (3f04b1b)
- Use lowercase image names for OCI registry compatibility (2d3c87e)
- Use lowercase owner name for Helm OCI registry (67bc33e)
- use PAT for release-please to trigger downstream workflows (#45) (21191ed)
0.5.0 (2026-02-13)
- CRD API group changed from
openclaw.openclaw.iotoopenclaw.openclaw.rocks. Existing CRDs must be deleted and re-created. This is acceptable at v1alpha1 stability level.
- Add nautical banner image with crab captain at Kubernetes helm (84d1854)
- Add observability, testing, docs, and dev tooling (5af27e1)
- Add observability, testing, docs, and dev tooling for production readiness (a8c063b)
- Add support for custom sidecar containers (#27) (f0071f7), closes #24
- Initial OpenClaw Kubernetes Operator implementation (6d873ff)
- Inject CHROMIUM_URL env var into main container when sidecar is enabled (8553cc7)
- Inject CHROMIUM_URL env var when sidecar is enabled (b80dabe)
- Replace manual release steps with GoReleaser (#2) (fedc497)
- Support custom egress rules in NetworkPolicy (#15) (#16) (c62dc09)
- update banner with real OpenClaw logo and Kubernetes logo (#37) (840adb9)
- Add leader election RBAC and E2E test infrastructure (4eb6019)
- Apply same CreateOrUpdate pattern to ServiceMonitor reconciler (#30) (c1aaa36)
- Bump chromium /dev/shm from 256Mi to 1Gi (925d7b8)
- Bump chromium /dev/shm sizeLimit from 256Mi to 1Gi (a4b3fbb)
- change CRD API group domain from openclaw.io to openclaw.rocks (#41) (5bae852)
- Chromium sidecar crash (UID mismatch + read-only rootfs) and lint (#14) (febe1d3)
- Disable SBOM upload-release-assets to avoid race condition (d909808)
- Downgrade to Go 1.23 for golangci-lint compatibility (dd33c08)
- Increase golangci-lint timeout and update to v1.63.4 (1d982ca)
- Link OpenClaw to openclaw.ai, not openclaw.rocks (679b043)
- Link OpenClaw to openclaw.ai, not openclaw.rocks (#22) (9bfdbd8)
- Polish README copy and diagram alignment (#19) (ef6a8d1)
- Pre-enable channel modules in config to prevent EBUSY on startup (#13) (21ee585), closes #11
- Prevent endless Deployment reconciliation loop (#29) (db942b9), closes #28
- Remove chart-releaser, keep OCI-only Helm distribution (#3) (99e3cdb)
- Replace config subPath mount with init container to avoid EBUSY (#10) (38b60d3), closes #9
- Resolve variable shadowing of err in PVC reconciliation (a9ea85b)
- Set HOME env var to match config mount path (#5) (175ff92), closes #4
- Specify kind cluster name for image loading (7ac2116)
- update banner alt text (#38) (d00dc23)
- Update Chart.yaml version/appVersion to match latest release v0.2.4 (#26) (c475ffc)
- Update copyright to 2026 Paperclip Inc. (bca1f0f)
- Update copyright to 2026 Paperclip Inc. (4d462f9)
- Update Go version to 1.24 for CI compatibility (5c13d06)
- Use correct GitHub org name (OpenClaw-rocks) in all references (#20) (c157899)
- Use direct append instead of loop for image pull secrets (187477c)
- Use Go 1.24 with goinstall mode for golangci-lint (3dd40c8)
- Use govet enable list for shadow analyzer (3f04b1b)
- Use lowercase image names for OCI registry compatibility (2d3c87e)
- Use lowercase owner name for Helm OCI registry (67bc33e)
- use PAT for release-please to trigger downstream workflows (#45) (21191ed)
0.4.0 (2026-02-13)
- CRD API group changed from
openclaw.openclaw.iotoopenclaw.openclaw.rocks. Existing CRDs must be deleted and re-created. This is acceptable at v1alpha1 stability level.
- Add nautical banner image with crab captain at Kubernetes helm (84d1854)
- update banner with real OpenClaw logo and Kubernetes logo (#37) (840adb9)
- Apply same CreateOrUpdate pattern to ServiceMonitor reconciler (#30) (c1aaa36)
- change CRD API group domain from openclaw.io to openclaw.rocks (#41) (5bae852)
- Prevent endless Deployment reconciliation loop (#29) (db942b9), closes #28
- update banner alt text (#38) (d00dc23)
- Custom Prometheus metrics (reconciliation duration, instance phases, resource failures)
- ServiceMonitor resource creation for Prometheus Operator integration
- Defaulting webhook for setting sensible defaults
- Comprehensive resource builder unit tests
- Webhook validation unit tests
.golangci.yamllinter configuration.dockerignorefor optimized Docker builds- Architecture documentation
- API reference documentation
- Troubleshooting guide
- Deployment guides for EKS, GKE, AKS
- Grafana dashboard example
- PrometheusRule alert examples
- Initial release of OpenClaw Kubernetes Operator
- OpenClawInstance CRD (v1alpha1)
- Controller with full reconciliation lifecycle
- Security-first design (non-root, dropped capabilities, seccomp, NetworkPolicy)
- Validating webhook (blocks root, warns on insecure config)
- Managed resources: Deployment, Service, ServiceAccount, Role, RoleBinding, NetworkPolicy, PDB, ConfigMap, PVC, Ingress
- Chromium sidecar support for browser automation
- Helm chart for installation
- CI/CD with GitHub Actions (lint, test, security scan, multi-arch build)
- Container image signing with Cosign
- SBOM generation
- E2E test infrastructure