Skip to content

feat: expose runtime image digest overrides for private registries - #2347

Open
acherifi wants to merge 1 commit into
kagent-dev:mainfrom
acherifi:runtime-image-overrides
Open

feat: expose runtime image digest overrides for private registries#2347
acherifi wants to merge 1 commit into
kagent-dev:mainfrom
acherifi:runtime-image-overrides

Conversation

@acherifi

Copy link
Copy Markdown

What

Follow-up to #2242 (refs #2055): adds digest overrides for the Substrate ACP sandbox workload images, and Helm values plumbing for all six runtime-image digest overrides.

#2242 made regular declarative agents resolve runtime images by tag and added --app-image-digest / --app-full-image-digest / --golang-adk-image-digest / --golang-adk-full-image-digest controller flags — but the ACP sandbox workload images (acp-sandbox-hermes, acp-sandbox-openclaw) are still composed with digests baked into the controller binary at link time, with no override. Operators mirroring images into a private/air-gapped registry cannot serve them: any mirror produced by a rebuild (or any registry that rewrites manifests) has a different digest, so the digest-pinned pull can never hit the mirror.

Changes

  • New controller flags --acp-sandbox-hermes-image-digest and --acp-sandbox-openclaw-image-digest (env ACP_SANDBOX_HERMES_IMAGE_DIGEST / ACP_SANDBOX_OPENCLAW_IMAGE_DIGEST), consumed in substrate/constants.go where the sandbox image refs are composed.
  • Helm values for all six digest overrides — controller.agentImage.digest / .fullDigest, controller.goAgentImage.digest / .fullDigest, controller.acpSandboxImages.hermesDigest / .openclawDigest — rendered into the controller ConfigMap only when set; defaults are unchanged (link-time digests still apply when no override is given).
  • Helm unittest suite image-digest-overrides_test.yaml: no digest keys emitted by default, all six emitted when set.

Testing

  • go build ./core/... clean; go test green on the touched packages (substrate/app/translator).
  • helm unittest: 272 tests / 21 suites pass, including the new suite.
  • helm template verified with and without the new values.

Backwards compatible; no behavior change unless an override is explicitly set.

🤖 Generated with Claude Code

Complete the private-registry story started in kagent-dev#2242: regular declarative
agents already reference runtime images by tag, but sandbox agents and the
Substrate acp-sandbox workload images remain digest-pinned (Substrate
admission rejects tag refs), using digests baked into the controller binary
at link time. Mirrors that re-assign manifest digests (e.g. registries that
re-push rather than proxy) therefore cannot serve those images
(kagent-dev#2055).

- Add --acp-sandbox-openclaw-image-digest / --acp-sandbox-hermes-image-digest
  controller flags (env ACP_SANDBOX_OPENCLAW_IMAGE_DIGEST /
  ACP_SANDBOX_HERMES_IMAGE_DIGEST) to override the link-time acp-sandbox
  workload image digests, mirroring the runtime digest flags from kagent-dev#2242.
- Point the missing-digest error at the new flags.
- Plumb all six digest overrides through the Helm chart:
  controller.agentImage.digest/fullDigest, controller.goAgentImage.digest/
  fullDigest, and controller.acpSandboxImages.openclawDigest/hermesDigest,
  emitted into the controller ConfigMap only when set.

Defaults are unchanged: with no overrides set, the ConfigMap emits no digest
keys and the link-time digests are used as before.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: acherifi <ali.cherifi@homagames.com>
@acherifi
acherifi requested a review from a team as a code owner July 28, 2026 08:51
@acherifi
acherifi marked this pull request as draft July 28, 2026 10:00
@github-actions github-actions Bot added the enhancement New feature or request label Jul 28, 2026
@acherifi
acherifi marked this pull request as ready for review July 28, 2026 13:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant