From 41e21307d6224c3c3f1a4f5ee57dfdbe116b78ee Mon Sep 17 00:00:00 2001 From: chaodu-agent Date: Tue, 23 Jun 2026 20:52:36 +0000 Subject: [PATCH 1/6] feat(chart,docs): migrate to unified image tag format openab:- - Update _helpers.tpl agentImage to produce openab:- for non-kiro agents (kiro stays openab: as default) - Remove per-agent image overrides from values.yaml examples (chart auto-resolves now) - Rewrite docs/image-tags.md with unified tag convention and migration table - Update all agent docs to remove --set image lines (no longer needed) - Update docker pull examples to use openab:beta- format Part of #1175 follow-up. Backward-compatible: explicit image override still works for custom registries. --- charts/openab/templates/_helpers.tpl | 13 +++-- charts/openab/values.yaml | 12 ++--- docs/agentcore.md | 4 +- docs/antigravity.md | 2 +- docs/claude-code.md | 1 - docs/codex.md | 1 - docs/copilot.md | 2 - docs/cursor.md | 1 - docs/gemini.md | 1 - docs/grok.md | 1 - docs/hermes.md | 1 - docs/image-tags.md | 72 +++++++++++++++++++++------- docs/multi-agent.md | 4 -- docs/opencode.md | 1 - docs/openshell.md | 2 +- docs/pi.md | 2 +- docs/refarch/cronjob_k8s_refarch.md | 6 +-- docs/refarch/sidecar-proxy.md | 1 - 18 files changed, 80 insertions(+), 47 deletions(-) diff --git a/charts/openab/templates/_helpers.tpl b/charts/openab/templates/_helpers.tpl index dea2e17bf..7e10dcfaf 100644 --- a/charts/openab/templates/_helpers.tpl +++ b/charts/openab/templates/_helpers.tpl @@ -56,9 +56,12 @@ app.kubernetes.io/component: {{ .agent }} {{- end -}} {{- end }} -{{/* Resolve image: agent-level string override → global default (repository:tag, tag defaults to appVersion). - Caveat: "contains :" treats registry ports (e.g. my-registry:5000/img) as tagged. - Not an issue for ghcr.io / Docker Hub; revisit if custom registries with ports are needed. */}} +{{/* Resolve image: agent-level string override → unified default (repository:-). + When no per-agent image override is set, produces: + ghcr.io/openabdev/openab:- (e.g. openab:beta-claude) + ghcr.io/openabdev/openab: (for kiro, the default agent) + Per-agent image override (string with ":") is used verbatim for full backward compat. + Call with: dict "ctx" $ "agent" $name "cfg" $cfg */}} {{- define "openab.agentImage" -}} {{- if and .cfg.image (kindIs "string" .cfg.image) (ne .cfg.image "") }} {{- if contains ":" .cfg.image }} @@ -68,7 +71,11 @@ app.kubernetes.io/component: {{ .agent }} {{- end }} {{- else }} {{- $tag := default .ctx.Chart.AppVersion .ctx.Values.image.tag }} +{{- if eq .agent "kiro" }} {{- printf "%s:%s" .ctx.Values.image.repository $tag }} +{{- else }} +{{- printf "%s:%s-%s" .ctx.Values.image.repository $tag .agent }} +{{- end }} {{- end }} {{- end }} diff --git a/charts/openab/values.yaml b/charts/openab/values.yaml index 144e43bf7..62de0d8e7 100644 --- a/charts/openab/values.yaml +++ b/charts/openab/values.yaml @@ -95,7 +95,7 @@ agents: # nodeSelector: {} # tolerations: [] # affinity: {} - # image: "ghcr.io/openabdev/openab-claude" # tag omitted → auto-appends appVersion + # image: "" # leave empty → auto-resolves to openab:-claude (unified format) # opencode: # command: opencode # args: @@ -125,7 +125,7 @@ agents: # size: 1Gi # agentsMd: "" # resources: {} - # image: "ghcr.io/openabdev/openab-opencode:latest" + # image: "" # leave empty → auto-resolves to openab:-opencode # pi: # command: pi-acp # discord: @@ -152,7 +152,7 @@ agents: # enabled: true # storageClass: "" # size: 1Gi - # image: "ghcr.io/openabdev/openab-pi:latest" + # image: "" # leave empty → auto-resolves to openab:-pi # cursor: # command: cursor-agent # args: @@ -183,7 +183,7 @@ agents: # existingClaim: "" # set to reuse an existing PVC (skips PVC creation) # storageClass: "" # size: 1Gi - # image: "ghcr.io/openabdev/openab-cursor:latest" + # image: "" # leave empty → auto-resolves to openab:-cursor # hermes: # command: hermes-acp # discord: @@ -204,7 +204,7 @@ agents: # enabled: true # storageClass: "" # size: 1Gi - # image: "ghcr.io/openabdev/openab-hermes" + # image: "" # leave empty → auto-resolves to openab:-hermes # grok: # command: grok # args: @@ -232,7 +232,7 @@ agents: # enabled: true # storageClass: "" # size: 1Gi - # image: "ghcr.io/openabdev/openab-grok" + # image: "" # leave empty → auto-resolves to openab:-grok image: "" # configUrl: when set, openab uses `-c ` to fetch config remotely # instead of mounting the chart-generated ConfigMap. The ConfigMap and its diff --git a/docs/agentcore.md b/docs/agentcore.md index bfd0a0279..51870cbe3 100644 --- a/docs/agentcore.md +++ b/docs/agentcore.md @@ -84,10 +84,10 @@ args = ["agentcore-bridge", "--runtime-arn", "arn:aws:...", "--region", "us-east ## Docker Image -Use `ghcr.io/openabdev/openab-agentcore` — a minimal image (~20MB) with only the OAB binary. No Python, no coding CLI bundled. +Use `ghcr.io/openabdev/openab:beta-agentcore` — a minimal image (~20MB) with only the OAB binary. No Python, no coding CLI bundled. ```bash -docker pull ghcr.io/openabdev/openab-agentcore:latest +docker pull ghcr.io/openabdev/openab:beta-agentcore ``` ## Deploying a Kiro Runtime diff --git a/docs/antigravity.md b/docs/antigravity.md index 3feeb1db2..287c5bbca 100644 --- a/docs/antigravity.md +++ b/docs/antigravity.md @@ -69,7 +69,7 @@ agents: args: [] workingDir: "/home/agent" image: - repository: ghcr.io/openabdev/openab-antigravity + repository: ghcr.io/openabdev/openab:beta-antigravity tag: "latest" ``` diff --git a/docs/claude-code.md b/docs/claude-code.md index 2c237fadd..03a9b96d2 100644 --- a/docs/claude-code.md +++ b/docs/claude-code.md @@ -17,7 +17,6 @@ helm install openab openab/openab \ --set agents.kiro.enabled=false \ --set agents.claude.discord.botToken="$DISCORD_BOT_TOKEN" \ --set-string 'agents.claude.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \ - --set agents.claude.image=ghcr.io/openabdev/openab-claude:latest \ --set agents.claude.command=claude-agent-acp \ --set agents.claude.workingDir=/home/node ``` diff --git a/docs/codex.md b/docs/codex.md index ac3682f06..bf14434a3 100644 --- a/docs/codex.md +++ b/docs/codex.md @@ -21,7 +21,6 @@ helm install openab openab/openab \ --set agents.codex.discord.enabled=true \ --set agents.codex.discord.botToken="$DISCORD_BOT_TOKEN" \ --set-string 'agents.codex.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \ - --set agents.codex.image=ghcr.io/openabdev/openab-codex:latest \ --set agents.codex.command=codex-acp \ --set agents.codex.workingDir=/home/node ``` diff --git a/docs/copilot.md b/docs/copilot.md index 349fb9e32..ced050320 100644 --- a/docs/copilot.md +++ b/docs/copilot.md @@ -59,7 +59,6 @@ helm install openab-copilot openab/openab \ --set agents.copilot.discord.botToken="$DISCORD_BOT_TOKEN" \ --set-string 'agents.copilot.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \ --set agents.copilot.discord.enabled=true \ - --set agents.copilot.image=ghcr.io/openabdev/openab-copilot \ --set agents.copilot.command=copilot \ --set 'agents.copilot.args={--acp,--stdio}' \ --set agents.copilot.persistence.enabled=true \ @@ -129,7 +128,6 @@ helm install openab-copilot openab/openab \ --set agents.copilot.discord.enabled=true \ --set agents.copilot.discord.botToken="$DISCORD_BOT_TOKEN" \ --set-string 'agents.copilot.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \ - --set agents.copilot.image=ghcr.io/openabdev/openab-copilot \ --set agents.copilot.command=copilot \ --set 'agents.copilot.args={--acp,--stdio}' \ --set agents.copilot.persistence.enabled=true \ diff --git a/docs/cursor.md b/docs/cursor.md index 842206e0a..05529fd34 100644 --- a/docs/cursor.md +++ b/docs/cursor.md @@ -63,7 +63,6 @@ helm install openab openab/openab \ --set agents.kiro.enabled=false \ --set agents.cursor.discord.botToken="$DISCORD_BOT_TOKEN" \ --set-string 'agents.cursor.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \ - --set agents.cursor.image=ghcr.io/openabdev/openab-cursor:latest \ --set agents.cursor.command=cursor-agent \ --set 'agents.cursor.args={acp}' \ --set agents.cursor.persistence.enabled=true \ diff --git a/docs/gemini.md b/docs/gemini.md index 355db7cb4..9c4320e4d 100644 --- a/docs/gemini.md +++ b/docs/gemini.md @@ -18,7 +18,6 @@ helm install openab openab/openab \ --set agents.gemini.discord.enabled=true \ --set agents.gemini.discord.botToken="$DISCORD_BOT_TOKEN" \ --set-string 'agents.gemini.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \ - --set agents.gemini.image=ghcr.io/openabdev/openab-gemini:latest \ --set agents.gemini.command=gemini \ --set agents.gemini.args='{--acp}' \ --set agents.gemini.workingDir=/home/node diff --git a/docs/grok.md b/docs/grok.md index 8bbb07cd2..d31dfb5d0 100644 --- a/docs/grok.md +++ b/docs/grok.md @@ -18,7 +18,6 @@ helm install openab openab/openab \ --set agents.grok.discord.enabled=true \ --set agents.grok.discord.botToken="$DISCORD_BOT_TOKEN" \ --set-string 'agents.grok.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \ - --set agents.grok.image=ghcr.io/openabdev/openab-grok:latest \ --set agents.grok.command=grok \ --set-string 'agents.grok.args[0]=agent' \ --set-string 'agents.grok.args[1]=stdio' \ diff --git a/docs/hermes.md b/docs/hermes.md index e250d2df6..764a3660b 100644 --- a/docs/hermes.md +++ b/docs/hermes.md @@ -20,7 +20,6 @@ helm install openab openab/openab \ --set agents.hermes.discord.enabled=true \ --set agents.hermes.discord.botToken="$DISCORD_BOT_TOKEN" \ --set-string 'agents.hermes.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \ - --set agents.hermes.image=ghcr.io/openabdev/openab-hermes:latest \ --set agents.hermes.command=hermes-acp \ --set agents.hermes.workingDir=/home/agent ``` diff --git a/docs/image-tags.md b/docs/image-tags.md index ab533dc18..7428e3511 100644 --- a/docs/image-tags.md +++ b/docs/image-tags.md @@ -1,17 +1,48 @@ # Docker Image Tagging Convention -## Core (`ghcr.io/openabdev/openab`) +## Unified Image Repository (`ghcr.io/openabdev/openab`) + +All agent variants are published under a single image repository using tag-based variants: + +``` +ghcr.io/openabdev/openab:- # per-agent variant +ghcr.io/openabdev/openab: # default (kiro) +``` + +### Default (kiro) tags | Tag | Points to | Updated when | |-----|-----------|--------------| -| `0.8.3-beta.12` | Exact pre-release build | Pre-release tag pushed | +| `0.9.0-beta.1` | Exact pre-release build | Pre-release tag pushed | | `beta` | Latest pre-release | Every pre-release build | -| `0.8.3` | Promoted stable build | Stable tag pushed | -| `0.8` | Latest patch in minor | Stable promotion | +| `0.9.0` | Promoted stable build | Stable tag pushed | +| `0.9` | Latest patch in minor | Stable promotion | | `stable` | Latest stable | Stable promotion | | `latest` | Latest stable (= `stable`) | Stable promotion | -Variant images (e.g. `-codex`, `-claude`, `-gemini`) follow the same convention with a suffix: `ghcr.io/openabdev/openab-codex:beta`. +### Per-agent variant tags + +Agent variants use the format `-`: + +| Tag | Example | Points to | +|-----|---------|-----------| +| `-` | `0.9.0-beta.1-claude` | Exact pre-release build for claude | +| `beta-` | `beta-codex` | Latest pre-release for codex | +| `-` | `0.9.0-gemini` | Promoted stable for gemini | +| `stable-` | `stable-grok` | Latest stable for grok | + +Available agents: `kiro`, `claude`, `codex`, `copilot`, `cursor`, `gemini`, `grok`, `hermes`, `mimocode`, `opencode`, `antigravity`, `pi`, `native`, `agentcore` + +### Migration from per-repo images (deprecated) + +Previously, each agent had its own image repository (`ghcr.io/openabdev/openab-codex:beta`). +These are now replaced by the unified tag format (`ghcr.io/openabdev/openab:beta-codex`). + +| Old (deprecated) | New | +|------------------|-----| +| `ghcr.io/openabdev/openab-claude:beta` | `ghcr.io/openabdev/openab:beta-claude` | +| `ghcr.io/openabdev/openab-codex:0.8.5-beta.13` | `ghcr.io/openabdev/openab:0.8.5-beta.13-codex` | +| `ghcr.io/openabdev/openab:beta` | `ghcr.io/openabdev/openab:beta` (unchanged, kiro is default) | ## Gateway (`ghcr.io/openabdev/openab-gateway`) @@ -25,15 +56,15 @@ Variant images (e.g. `-codex`, `-claude`, `-gemini`) follow the same convention | Use case | Recommended tag | |----------|----------------| -| Production (pinned) | Exact version (`0.8.3-beta.12`) | -| Helm chart default | `stable` or `beta` (channel-based) | -| Local dev / quick test | `beta` | +| Production (pinned) | Exact version (`0.9.0-beta.1-claude`) | +| Helm chart default | `stable` or `beta` (channel-based) — chart auto-appends `-` | +| Local dev / quick test | `beta` or `beta-` | | CI | Exact version or SHA | ## Release flow ``` -release PR merged → tag-on-merge → v0.8.3-beta.12 +release PR merged → tag-on-merge → v0.9.0-beta.1 │ ▼ build-operator.yml @@ -41,15 +72,24 @@ release PR merged → tag-on-merge → v0.8.3-beta.12 ┌──────────┴──────────┐ │ is_prerelease=true │ ▼ │ - tag: 0.8.3-beta.12 │ - tag: beta │ + openab:0.9.0-beta.1 │ + openab:0.9.0-beta.1-claude │ + openab:0.9.0-beta.1-codex │ + openab:beta │ + openab:beta-claude │ + openab:beta-codex │ + ... (all agents) │ │ ┌──────────────────────┘ │ is_prerelease=false (stable) ▼ - promote latest beta image → - tag: 0.8.3 - tag: 0.8 - tag: stable - tag: latest + promote latest beta images → + openab:0.9.0 + openab:0.9.0-claude + openab:0.9 + openab:0.9-claude + openab:stable + openab:stable-claude + openab:latest + ... (all agents) ``` diff --git a/docs/multi-agent.md b/docs/multi-agent.md index 6fcb6d112..e04b22089 100644 --- a/docs/multi-agent.md +++ b/docs/multi-agent.md @@ -10,7 +10,6 @@ helm install openab openab/openab \ --set-string 'agents.kiro.discord.allowedChannels[0]=KIRO_CHANNEL_ID' \ --set agents.claude.discord.botToken="$CLAUDE_BOT_TOKEN" \ --set-string 'agents.claude.discord.allowedChannels[0]=CLAUDE_CHANNEL_ID' \ - --set agents.claude.image=ghcr.io/openabdev/openab-claude:latest \ --set agents.claude.command=claude-agent-acp \ --set agents.claude.workingDir=/home/node ``` @@ -30,17 +29,14 @@ helm install openab openab/openab \ --set-string 'agents.kiro.discord.allowedChannels[0]=KIRO_CHANNEL_ID' \ --set agents.claude.discord.botToken="$CLAUDE_BOT_TOKEN" \ --set-string 'agents.claude.discord.allowedChannels[0]=CLAUDE_CHANNEL_ID' \ - --set agents.claude.image=ghcr.io/openabdev/openab-claude:latest \ --set agents.claude.command=claude-agent-acp \ --set agents.claude.workingDir=/home/node \ --set agents.codex.discord.botToken="$CODEX_BOT_TOKEN" \ --set-string 'agents.codex.discord.allowedChannels[0]=CODEX_CHANNEL_ID' \ - --set agents.codex.image=ghcr.io/openabdev/openab-codex:latest \ --set agents.codex.command=codex-acp \ --set agents.codex.workingDir=/home/node \ --set agents.gemini.discord.botToken="$GEMINI_BOT_TOKEN" \ --set-string 'agents.gemini.discord.allowedChannels[0]=GEMINI_CHANNEL_ID' \ - --set agents.gemini.image=ghcr.io/openabdev/openab-gemini:latest \ --set agents.gemini.command=gemini \ --set agents.gemini.args='{--acp}' \ --set agents.gemini.workingDir=/home/node diff --git a/docs/opencode.md b/docs/opencode.md index 58169df0e..71ff99f76 100644 --- a/docs/opencode.md +++ b/docs/opencode.md @@ -38,7 +38,6 @@ helm install openab openab/openab \ --set agents.opencode.enabled=true \ --set agents.opencode.command=opencode \ --set 'agents.opencode.args={acp}' \ - --set agents.opencode.image=ghcr.io/openabdev/openab-opencode:latest \ --set agents.opencode.discord.botToken="$DISCORD_BOT_TOKEN" \ --set-string 'agents.opencode.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \ --set agents.opencode.workingDir=/home/node \ diff --git a/docs/openshell.md b/docs/openshell.md index 5a0c8449a..d64ee7b7d 100644 --- a/docs/openshell.md +++ b/docs/openshell.md @@ -75,7 +75,7 @@ Using the pre-built image: ```bash openshell sandbox create --name oab \ - --from ghcr.io/openabdev/openab-native-sandbox:latest \ + --from ghcr.io/openabdev/openab:beta-native-sandbox \ --provider discord \ -- bash ``` diff --git a/docs/pi.md b/docs/pi.md index c4b723472..392d2fd22 100644 --- a/docs/pi.md +++ b/docs/pi.md @@ -68,7 +68,7 @@ agents: - "YOUR_CHANNEL_ID" command: pi-acp workingDir: /home/node - image: "ghcr.io/openabdev/openab-pi:latest" + image: "ghcr.io/openabdev/openab:beta-pi" ``` ## Authentication diff --git a/docs/refarch/cronjob_k8s_refarch.md b/docs/refarch/cronjob_k8s_refarch.md index 566e833f0..22c6fa22f 100644 --- a/docs/refarch/cronjob_k8s_refarch.md +++ b/docs/refarch/cronjob_k8s_refarch.md @@ -17,7 +17,7 @@ Kubernetes CronJob | v Ephemeral Job Pod - image: ghcr.io/openabdev/openab-codex:latest + image: ghcr.io/openabdev/openab:beta-codex command: bash /opt/openab-project-screening/screen_once.sh | +--> read GitHub Project state via gh @@ -91,7 +91,7 @@ spec: - name: project-screening # Pin to a specific tag in production (e.g. :0.8.0) to ensure # reproducible runs. :latest is used here for illustration only. - image: ghcr.io/openabdev/openab-codex:latest + image: ghcr.io/openabdev/openab:beta-codex command: - bash - /opt/openab-project-screening/screen_once.sh @@ -308,7 +308,7 @@ projectScreening: enabled: true schedule: "*/30 * * * *" # Pin to a specific tag in production (e.g. :0.8.0) - image: ghcr.io/openabdev/openab-codex:latest + image: ghcr.io/openabdev/openab:beta-codex githubToken: "" codexAuthJson: | diff --git a/docs/refarch/sidecar-proxy.md b/docs/refarch/sidecar-proxy.md index ca85e2771..887e3a6db 100644 --- a/docs/refarch/sidecar-proxy.md +++ b/docs/refarch/sidecar-proxy.md @@ -64,7 +64,6 @@ kubectl create secret generic auth-proxy-tokens \ helm install openab openab/openab \ --set agents.mybot.command=opencode \ --set-json 'agents.mybot.args=["acp"]' \ - --set agents.mybot.image=ghcr.io/openabdev/openab-opencode \ --set-json 'agents.mybot.extraContainers=[{"name":"auth-proxy","image":"ghcr.io/openabdev/openab-auth-proxy:latest","args":["serve","--bind","0.0.0.0"],"ports":[{"containerPort":9090}],"volumeMounts":[{"name":"data","mountPath":"/home/agent"}]}]' \ --set-json 'agents.mybot.extraInitContainers=[{"name":"copy-tokens","image":"busybox","command":["sh","-c","mkdir -p /dest/.openab-auth-proxy/xai && cp /src/tokens.json /dest/.openab-auth-proxy/xai/tokens.json"],"volumeMounts":[{"name":"tokens-src","mountPath":"/src","readOnly":true},{"name":"data","mountPath":"/dest"}]}]' \ --set-json 'agents.mybot.extraVolumes=[{"name":"tokens-src","secret":{"secretName":"auth-proxy-tokens"}}]' From be5eeaf9b4b7ac08f9d2c76caafe680c76d0912d Mon Sep 17 00:00:00 2001 From: chaodu-agent Date: Tue, 23 Jun 2026 21:19:51 +0000 Subject: [PATCH 2/6] fix: address review findings for PR A MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix docs/antigravity.md: remove broken repository object format, use comment noting chart auto-resolves (覺渡+普渡+口渡 finding) - Add helm unit test for agentImage unified tag format (Z渡+口渡 finding): kiro default, non-kiro suffix, tag override, explicit image override --- charts/openab/tests/agent-image_test.yaml | 53 +++++++++++++++++++++++ docs/antigravity.md | 4 +- 2 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 charts/openab/tests/agent-image_test.yaml diff --git a/charts/openab/tests/agent-image_test.yaml b/charts/openab/tests/agent-image_test.yaml new file mode 100644 index 000000000..2926561c1 --- /dev/null +++ b/charts/openab/tests/agent-image_test.yaml @@ -0,0 +1,53 @@ +suite: agentImage unified tag format +templates: + - templates/deployment.yaml + +tests: + - it: kiro (default) resolves to openab: with no agent suffix + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: "ghcr.io/openabdev/openab:0.9.0-beta.1" + + - it: non-kiro agent resolves to openab:- + set: + agents.claude.command: claude-agent-acp + documentIndex: 1 + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: "ghcr.io/openabdev/openab:0.9.0-beta.1-claude" + + - it: image.tag override applies to kiro + set: + image.tag: "beta" + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: "ghcr.io/openabdev/openab:beta" + + - it: image.tag override applies to non-kiro agent with suffix + set: + image.tag: "beta" + agents.codex.command: codex-acp + documentIndex: 1 + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: "ghcr.io/openabdev/openab:beta-codex" + + - it: explicit per-agent image string with tag is used verbatim + set: + agents.kiro.image: "ghcr.io/custom/image:v1.0" + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: "ghcr.io/custom/image:v1.0" + + - it: explicit per-agent image string without tag gets appVersion appended + set: + agents.kiro.image: "ghcr.io/custom/image" + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: "ghcr.io/custom/image:0.9.0-beta.1" diff --git a/docs/antigravity.md b/docs/antigravity.md index 287c5bbca..225cd31f4 100644 --- a/docs/antigravity.md +++ b/docs/antigravity.md @@ -68,9 +68,7 @@ agents: command: "agy-acp" args: [] workingDir: "/home/agent" - image: - repository: ghcr.io/openabdev/openab:beta-antigravity - tag: "latest" + # image: leave empty — chart auto-resolves to openab:-antigravity ``` ## Limitations From 8bfbb3d07ca5b480739ed4021fd1062b1092ff9e Mon Sep 17 00:00:00 2001 From: chaodu-agent Date: Tue, 23 Jun 2026 21:22:14 +0000 Subject: [PATCH 3/6] =?UTF-8?q?fix:=20revert=20openshell.md=20=E2=80=94=20?= =?UTF-8?q?native-sandbox=20stays=20on=20separate=20Dockerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit native-sandbox is not included in the unified Dockerfile migration for now. Keep the original openab-native-sandbox image reference. --- docs/openshell.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/openshell.md b/docs/openshell.md index d64ee7b7d..5a0c8449a 100644 --- a/docs/openshell.md +++ b/docs/openshell.md @@ -75,7 +75,7 @@ Using the pre-built image: ```bash openshell sandbox create --name oab \ - --from ghcr.io/openabdev/openab:beta-native-sandbox \ + --from ghcr.io/openabdev/openab-native-sandbox:latest \ --provider discord \ -- bash ``` From 37a0451c6fbabeb651906049856d034cca7f3402 Mon Sep 17 00:00:00 2001 From: chaodu-agent Date: Tue, 23 Jun 2026 21:23:45 +0000 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20helm=20unittest=20documentIndex=20?= =?UTF-8?q?=E2=80=94=20disable=20kiro=20when=20testing=20non-kiro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Range over map is alphabetical, so documentIndex was wrong. Use agents.kiro.enabled=false to isolate non-kiro test cases. --- charts/openab/tests/agent-image_test.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/charts/openab/tests/agent-image_test.yaml b/charts/openab/tests/agent-image_test.yaml index 2926561c1..b1d9f0d57 100644 --- a/charts/openab/tests/agent-image_test.yaml +++ b/charts/openab/tests/agent-image_test.yaml @@ -11,8 +11,8 @@ tests: - it: non-kiro agent resolves to openab:- set: + agents.kiro.enabled: false agents.claude.command: claude-agent-acp - documentIndex: 1 asserts: - equal: path: spec.template.spec.containers[0].image @@ -29,8 +29,8 @@ tests: - it: image.tag override applies to non-kiro agent with suffix set: image.tag: "beta" + agents.kiro.enabled: false agents.codex.command: codex-acp - documentIndex: 1 asserts: - equal: path: spec.template.spec.containers[0].image From 49e578afd734d2585192a7909ad9eecc75d8cc1f Mon Sep 17 00:00:00 2001 From: chaodu-agent Date: Tue, 23 Jun 2026 21:27:06 +0000 Subject: [PATCH 5/6] =?UTF-8?q?feat:=20no=20default=20agent,=20no=20latest?= =?UTF-8?q?=20tag=20=E2=80=94=20all=20images=20require=20explicit=20agent?= =?UTF-8?q?=20suffix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - _helpers.tpl: remove kiro special case, all agents use - - image-tags.md: document no-default, no-latest policy - helm unittest: update expected values (kiro → openab:-kiro) Migration: openab:beta → openab:beta-kiro --- charts/openab/templates/_helpers.tpl | 9 +--- charts/openab/tests/agent-image_test.yaml | 10 ++-- docs/image-tags.md | 59 ++++++++++------------- 3 files changed, 32 insertions(+), 46 deletions(-) diff --git a/charts/openab/templates/_helpers.tpl b/charts/openab/templates/_helpers.tpl index 7e10dcfaf..5cd7252fd 100644 --- a/charts/openab/templates/_helpers.tpl +++ b/charts/openab/templates/_helpers.tpl @@ -57,9 +57,8 @@ app.kubernetes.io/component: {{ .agent }} {{- end }} {{/* Resolve image: agent-level string override → unified default (repository:-). - When no per-agent image override is set, produces: - ghcr.io/openabdev/openab:- (e.g. openab:beta-claude) - ghcr.io/openabdev/openab: (for kiro, the default agent) + All agents use the same format: ghcr.io/openabdev/openab:- + There is no "default" agent — every agent must be explicitly identified in the tag. Per-agent image override (string with ":") is used verbatim for full backward compat. Call with: dict "ctx" $ "agent" $name "cfg" $cfg */}} {{- define "openab.agentImage" -}} @@ -71,13 +70,9 @@ app.kubernetes.io/component: {{ .agent }} {{- end }} {{- else }} {{- $tag := default .ctx.Chart.AppVersion .ctx.Values.image.tag }} -{{- if eq .agent "kiro" }} -{{- printf "%s:%s" .ctx.Values.image.repository $tag }} -{{- else }} {{- printf "%s:%s-%s" .ctx.Values.image.repository $tag .agent }} {{- end }} {{- end }} -{{- end }} {{/* Resolve imagePullPolicy: global default (per-agent image string has no pullPolicy) */}} {{- define "openab.agentImagePullPolicy" -}} diff --git a/charts/openab/tests/agent-image_test.yaml b/charts/openab/tests/agent-image_test.yaml index b1d9f0d57..5844a9491 100644 --- a/charts/openab/tests/agent-image_test.yaml +++ b/charts/openab/tests/agent-image_test.yaml @@ -1,13 +1,13 @@ -suite: agentImage unified tag format +suite: agentImage unified tag format (no default agent) templates: - templates/deployment.yaml tests: - - it: kiro (default) resolves to openab: with no agent suffix + - it: kiro resolves to openab:-kiro (no bare tag) asserts: - equal: path: spec.template.spec.containers[0].image - value: "ghcr.io/openabdev/openab:0.9.0-beta.1" + value: "ghcr.io/openabdev/openab:0.9.0-beta.1-kiro" - it: non-kiro agent resolves to openab:- set: @@ -18,13 +18,13 @@ tests: path: spec.template.spec.containers[0].image value: "ghcr.io/openabdev/openab:0.9.0-beta.1-claude" - - it: image.tag override applies to kiro + - it: image.tag override applies to kiro with suffix set: image.tag: "beta" asserts: - equal: path: spec.template.spec.containers[0].image - value: "ghcr.io/openabdev/openab:beta" + value: "ghcr.io/openabdev/openab:beta-kiro" - it: image.tag override applies to non-kiro agent with suffix set: diff --git a/docs/image-tags.md b/docs/image-tags.md index 7428e3511..a2fc2442a 100644 --- a/docs/image-tags.md +++ b/docs/image-tags.md @@ -2,47 +2,39 @@ ## Unified Image Repository (`ghcr.io/openabdev/openab`) -All agent variants are published under a single image repository using tag-based variants: +All agent variants are published under a single image repository using tag-based variants. +**There is no default agent** — every image tag must explicitly specify the agent: ``` -ghcr.io/openabdev/openab:- # per-agent variant -ghcr.io/openabdev/openab: # default (kiro) +ghcr.io/openabdev/openab:- ``` -### Default (kiro) tags +### Tag format -| Tag | Points to | Updated when | -|-----|-----------|--------------| -| `0.9.0-beta.1` | Exact pre-release build | Pre-release tag pushed | -| `beta` | Latest pre-release | Every pre-release build | -| `0.9.0` | Promoted stable build | Stable tag pushed | -| `0.9` | Latest patch in minor | Stable promotion | -| `stable` | Latest stable | Stable promotion | -| `latest` | Latest stable (= `stable`) | Stable promotion | - -### Per-agent variant tags - -Agent variants use the format `-`: +| Tag | Example | Points to | Updated when | +|-----|---------|-----------|--------------| +| `-` | `0.9.0-beta.1-kiro` | Exact pre-release build | Pre-release tag pushed | +| `beta-` | `beta-claude` | Latest pre-release | Every pre-release build | +| `-` | `0.9.0-codex` | Promoted stable build | Stable tag pushed | +| `-` | `0.9-gemini` | Latest patch in minor | Stable promotion | +| `stable-` | `stable-grok` | Latest stable | Stable promotion | -| Tag | Example | Points to | -|-----|---------|-----------| -| `-` | `0.9.0-beta.1-claude` | Exact pre-release build for claude | -| `beta-` | `beta-codex` | Latest pre-release for codex | -| `-` | `0.9.0-gemini` | Promoted stable for gemini | -| `stable-` | `stable-grok` | Latest stable for grok | +> **No `latest` tag.** Use `beta-` or `stable-` for floating tags, +> or pin to an exact version like `0.9.0-beta.1-kiro`. Available agents: `kiro`, `claude`, `codex`, `copilot`, `cursor`, `gemini`, `grok`, `hermes`, `mimocode`, `opencode`, `antigravity`, `pi`, `native`, `agentcore` ### Migration from per-repo images (deprecated) Previously, each agent had its own image repository (`ghcr.io/openabdev/openab-codex:beta`). -These are now replaced by the unified tag format (`ghcr.io/openabdev/openab:beta-codex`). +These are now replaced by the unified tag format. | Old (deprecated) | New | |------------------|-----| +| `ghcr.io/openabdev/openab:beta` | `ghcr.io/openabdev/openab:beta-kiro` | +| `ghcr.io/openabdev/openab:latest` | `ghcr.io/openabdev/openab:stable-kiro` (no more `latest`) | | `ghcr.io/openabdev/openab-claude:beta` | `ghcr.io/openabdev/openab:beta-claude` | | `ghcr.io/openabdev/openab-codex:0.8.5-beta.13` | `ghcr.io/openabdev/openab:0.8.5-beta.13-codex` | -| `ghcr.io/openabdev/openab:beta` | `ghcr.io/openabdev/openab:beta` (unchanged, kiro is default) | ## Gateway (`ghcr.io/openabdev/openab-gateway`) @@ -57,9 +49,9 @@ These are now replaced by the unified tag format (`ghcr.io/openabdev/openab:beta | Use case | Recommended tag | |----------|----------------| | Production (pinned) | Exact version (`0.9.0-beta.1-claude`) | -| Helm chart default | `stable` or `beta` (channel-based) — chart auto-appends `-` | -| Local dev / quick test | `beta` or `beta-` | -| CI | Exact version or SHA | +| Helm chart default | `beta` or `stable` — chart auto-appends `-` | +| Local dev / quick test | `beta-` | +| CI | Exact version or `-` | ## Release flow @@ -72,10 +64,10 @@ release PR merged → tag-on-merge → v0.9.0-beta.1 ┌──────────┴──────────┐ │ is_prerelease=true │ ▼ │ - openab:0.9.0-beta.1 │ + openab:0.9.0-beta.1-kiro │ openab:0.9.0-beta.1-claude │ openab:0.9.0-beta.1-codex │ - openab:beta │ + openab:beta-kiro │ openab:beta-claude │ openab:beta-codex │ ... (all agents) │ @@ -84,12 +76,11 @@ release PR merged → tag-on-merge → v0.9.0-beta.1 │ is_prerelease=false (stable) ▼ promote latest beta images → - openab:0.9.0 + openab:0.9.0-kiro openab:0.9.0-claude - openab:0.9 + openab:0.9-kiro openab:0.9-claude - openab:stable + openab:stable-kiro openab:stable-claude - openab:latest - ... (all agents) + ... (all agents, no `latest`) ``` From efef9ab42e8eb13e05ec0db1014cff8f19b738e1 Mon Sep 17 00:00:00 2001 From: chaodu-agent Date: Tue, 23 Jun 2026 21:31:56 +0000 Subject: [PATCH 6/6] fix: clarify release flow diagram wording (no 'latest' ambiguity) --- docs/image-tags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/image-tags.md b/docs/image-tags.md index a2fc2442a..dcb1a4a36 100644 --- a/docs/image-tags.md +++ b/docs/image-tags.md @@ -75,7 +75,7 @@ release PR merged → tag-on-merge → v0.9.0-beta.1 ┌──────────────────────┘ │ is_prerelease=false (stable) ▼ - promote latest beta images → + promote most recent beta images → openab:0.9.0-kiro openab:0.9.0-claude openab:0.9-kiro