openclaw helm

No introduction found. Create it?

Install

Install with:

helm repo add app-template oci://ghcr.io/bjw-s-labs/charts/
helm install openclaw app-template/app-template -f values.yaml

Examples

See examples from other people.

Top Repositories (3 out of 7)

NameRepoStarsVersionTimestamp
openclawmchestr/home-cluster1735.2.12 days ago
openclawJJGadgets/Biohazard915.0.12 days ago
openclawm00nwtchr/homelab-cluster395.1.02 months ago

Values

See the most popular values for this chart:

KeyTypes
route.app.hostnames[] (7)
- {{ .Release.Name }}.${SECRET_DOMAIN}
string
string
string
string
string, number
string
string
string
string
string
string
string
route.app.annotations."gatus.io/endpoint" (1)
conditions: - "[STATUS] == 403"
string
boolean
route.codeserver.hostnames[] (3)
- openclaw-code.cloudjur.com
string
string
string
string
number
string
string
route.imageui.hostnames[] (1)
- generate.cloudjur.com
string
string
string
string
number
route.opencode.hostnames[] (1)
- ${APP_DNS_OPENCODE:=opencode}
string
string
string
string
string
string
string
string
controllers.openclaw.containers.app.env.PATH (6)
/home/node/.local/bin:/home/node/.local/go/bin:/home/node/.local/homebrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
string
string
string
number
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
controllers.openclaw.containers.app.image.tag (6)
2026.9.9@sha256:7f10d5cc975a90b65192eaa099454fe33ce8ce2390806c61c65cd868e9ef730d
string
string
number, string
string, number
string
string
boolean
boolean
number
number
controllers.openclaw.containers.app.probes.liveness.spec.exec.command[] (1)
- node
- -e
- require('http').get('http://127.0.0.1:18789/healthz', r => process.exit(r.statusCode < 400 ? 0 : 1)).on('error', () => process.exit(1))
string
number
number
boolean
boolean
number
number
controllers.openclaw.containers.app.probes.readiness.spec.exec.command[] (1)
- node
- -e
- require('http').get('http://127.0.0.1:18789/readyz', r => process.exit(r.statusCode < 400 ? 0 : 1)).on('error', () => process.exit(1))
string
number
number
boolean
number
number
number
boolean
boolean
string
boolean
boolean
controllers.openclaw.containers.app.args[] (1)
- dist/index.js
- gateway
- --allow-unconfigured
string
number
string
string
controllers.openclaw.containers.codeserver.args[] (3)
- --auth
- none
- --user-data-dir
- /home/node/.vscode
- --extensions-dir
- /home/node/.vscode
- --port
- "12321"
- /config
string
string
string
string
string
string
controllers.openclaw.containers.codeserver.image.tag (3)
4.138.0@sha256:81706b71ace316157850cbcfb574714d1067249c107a415b3a03dc6b613ebfbc
string
string
string
string
string
string
controllers.openclaw.containers.kube-mcp.image.tag (1)
v0.0.67@sha256:e47f6ccc5347e1ea6be495d8d9ab55ac8a995fe87800fb984fa770cebe14ad44
string
string
string
string
boolean
string
boolean
string
string
controllers.openclaw.initContainers.init-config.image.tag (2)
2026.9.9@sha256:7f10d5cc975a90b65192eaa099454fe33ce8ce2390806c61c65cd868e9ef730d
string
controllers.openclaw.initContainers.init-config.args[] (1)
- set -e export HOME=/home/node mkdir -p /home/node/.openclaw /home/node/.local/bin /home/node/.local/go if [ ! -f /home/node/.openclaw/openclaw.json ]; then echo '{"gateway":{"mode":"local"}}' > /home/node/.openclaw/openclaw.json fi node /etc/openclaw/migrate-config.js /home/node/.openclaw/openclaw.json # Backup legacy agent dirs and unresolved credential files to prevent doctor migration refusals mkdir -p /home/node/.openclaw/legacy-agents-backup for d in BK bk bk_brand bk_content bk_radar tom_legal codex; do if [ -d "/home/node/.openclaw/agents/$d" ]; then mv "/home/node/.openclaw/agents/$d" /home/node/.openclaw/legacy-agents-backup/ 2>/dev/null || true fi done if [ -f /home/node/.openclaw/credentials/feishu-main-allowFrom.json ]; then mv /home/node/.openclaw/credentials/feishu-main-allowFrom.json /home/node/.openclaw/credentials/feishu-main-allowFrom.json.bak 2>/dev/null || true fi # Run official OpenClaw doctor to migrate database schema and legacy workspace setup files to SQLite openclaw doctor --fix --yes --non-interactive || true node /etc/openclaw/migrate-config.js /home/node/.openclaw/openclaw.json export PATH=/home/node/.local/bin:/home/node/.local/go/bin:$PATH # Install gh CLI if not present on PVC if [ ! -f /home/node/.local/bin/gh ]; then echo "Installing gh CLI..." cd /tmp curl -fsSL https://github.com/cli/cli/releases/download/v2.61.0/gh_2.61.0_linux_amd64.tar.gz -o gh.tar.gz tar xzf gh.tar.gz cp gh_2.61.0_linux_amd64/bin/gh /home/node/.local/bin/ rm -rf gh.tar.gz gh_2.61.0_linux_amd64 fi # Install Go if not present on PVC # Skipping go installation due to download issues # Install Homebrew if not present on PVC if [ ! -f /home/node/.local/homebrew/bin/brew ]; then echo "Installing Homebrew..." export HOMEBREW_PREFIX=/home/node/.local/homebrew export HOMEBREW_CELLAR=/home/node/.local/homebrew/Cellar export HOMEBREW_REPOSITORY=/home/node/.local/homebrew mkdir -p $HOMEBREW_PREFIX cd /tmp git clone --depth 1 https://github.com/Homebrew/brew $HOMEBREW_PREFIX fi # Check if pip is available set +e if command -v pip3 >/dev/null 2>&1 || command -v pip >/dev/null 2>&1 || python3 -m pip --version >/dev/null 2>&1; then echo "pip is available" else echo "Installing pip..." cd /tmp curl -fsSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py --user --no-warn-script-location --break-system-packages || \ python3 get-pip.py --user --no-warn-script-location || \ echo "pip install skipped (use python3 -m pip instead)" rm -f get-pip.py fi set -e echo "Init container completed successfully"
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
boolean
string
number
boolean
number
controllers.openclaw.initContainers.doctor.command[] (1)
- sh
- -c
- set -eu node dist/index.js doctor --fix --allow-exec || echo "WARNING: doctor --fix exited $?" >&2 node dist/index.js doctor --session-sqlite import --session-sqlite-all-agents || echo "WARNING: session-sqlite import exited $?" >&2
string
string
string
controllers.openclaw.initContainers.doctor.env.PATH (1)
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/node/.openclaw/bin/bin
string
string
string
string
string
string
string
boolean
string
boolean
controllers.openclaw.initContainers.init.command[] (1)
- sh
- -c
- set -euo pipefail chmod u+w /home/node/.openclaw || true rm -f /home/node/.openclaw/openclaw.json cp /tmp/openclaw.json /home/node/.openclaw/openclaw.json chown 1000:100 /home/node/.openclaw/openclaw.json chmod 400 /home/node/.openclaw/openclaw.json
string
string
string
boolean
string
number
number
controllers.openclaw.initContainers.install-gh.command[] (1)
- sh
- -c
- set -eu # renovate: datasource=github-releases depName=cli/cli GH_VERSION=2.102.0 BIN=/home/node/.local/bin mkdir -p "$BIN" if [ "$(cat "$BIN/.ghver" 2>/dev/null)" != "$GH_VERSION" ]; then wget -qO /tmp/gh.tar.gz "https://github.com/cli/cli/releases/download/v$GH_VERSION/gh_${GH_VERSION}_linux_amd64.tar.gz" tar -xzf /tmp/gh.tar.gz -C /tmp cp "/tmp/gh_${GH_VERSION}_linux_amd64/bin/gh" "$BIN/gh" chmod +x "$BIN/gh" printf '%s' "$GH_VERSION" > "$BIN/.ghver" rm -rf /tmp/gh.tar.gz "/tmp/gh_${GH_VERSION}_linux_amd64" fi
string
string
string
controllers.openclaw.initContainers.install-jq.command[] (1)
- sh
- -c
- set -eu # renovate: datasource=github-releases depName=jqlang/jq JQ_VERSION=1.8.1 BIN=/home/node/.local/bin mkdir -p "$BIN" if [ "$(cat "$BIN/.jqver" 2>/dev/null)" != "$JQ_VERSION" ]; then wget -qO "$BIN/jq" "https://github.com/jqlang/jq/releases/download/jq-$JQ_VERSION/jq-linux-amd64" chmod +x "$BIN/jq" printf '%s' "$JQ_VERSION" > "$BIN/.jqver" fi
string
string
string
controllers.openclaw.initContainers.install-signal-cli.command[] (1)
- sh
- -c
- set -eu # renovate: datasource=github-releases depName=AsamK/signal-cli SIGNAL_CLI_VERSION=0.14.8 BIN=/home/node/.openclaw/bin mkdir -p "$BIN" if [ ! -x "$BIN/signal-cli" ]; then wget -qO /tmp/signal-cli.tar.gz "https://github.com/AsamK/signal-cli/releases/download/v$SIGNAL_CLI_VERSION/signal-cli-$SIGNAL_CLI_VERSION-Linux-native.tar.gz" tar -xzf /tmp/signal-cli.tar.gz -C "$BIN" chmod +x "$BIN/signal-cli" fi
string
string
string
controllers.openclaw.initContainers.migrate.command[] (1)
- sh
- -c
- set -eu if [ -e /home/node/.openclaw/sessions ]; then mkdir -p /home/node/.openclaw/legacy-session-store-archive mv /home/node/.openclaw/sessions "/home/node/.openclaw/legacy-session-store-archive/sessions-$(date +%s)" fi mkdir -p /home/node/.openclaw/legacy-auth-backup for f in /home/node/.openclaw/agents/*/agent/auth.json /home/node/.openclaw/agents/*/agent/auth-profiles.json; do [ -e "$f" ] || continue agent=$(basename "$(dirname "$(dirname "$f")")") mv "$f" "/home/node/.openclaw/legacy-auth-backup/${agent}.$(basename "$f")" done node -e ' const fs = require("fs"); const path = "/home/node/.openclaw/openclaw.json"; let cfg = {}; if (fs.existsSync(path)) { try { cfg = JSON.parse(fs.readFileSync(path, "utf8")); } catch (e) { console.error("skip trustedProxies merge, could not parse existing config:", e.message); process.exit(0); } } cfg.gateway = cfg.gateway || {}; const cidr = "10.244.0.0/16"; const existing = Array.isArray(cfg.gateway.trustedProxies) ? cfg.gateway.trustedProxies : []; if (!existing.includes(cidr)) { cfg.gateway.trustedProxies = existing.concat([cidr]); fs.writeFileSync(path, JSON.stringify(cfg, null, 2)); } ' chown -R 1000:1000 /home/node/.openclaw if [ -d /home/node/.openclaw/extensions ]; then chown -R root:1000 /home/node/.openclaw/extensions chmod -R g+rX /home/node/.openclaw/extensions fi
string
string
string
string
controllers.openclaw.initContainers.migrate.env.PATH (1)
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/node/.openclaw/bin/bin
string
string
string
string
string
string
string
boolean
boolean
number
boolean
number
controllers.openclaw.initContainers.setup.command[] (1)
- sh
- -c
- done_file="$(AAA_HOME)/.openclaw/.setup-complete" while [ ! -f "${done_file}" ]; do echo 'OpenClaw setup is incomplete; exec to this container and run `openclaw setup && touch $(AAA_HOME)/.openclaw/.setup-complete`.'; sleep 5; done;
string
string
string
string
string
string
string
number
string
string
controllers.openclaw.initContainers.setup.env.PATH (1)
$(AAA_HOME)/.local/bin:$(AAA_HOME)/.local/share/mise/shims:$(AAA_HOME)/.local/go/bin:/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
string
string
string
string
string
controllers.openclaw.initContainers.setup.image.tag (1)
2026.9.6@sha256:0a5ff5e682e62afa19149df126aa50063bf65ef885b5c94713ce32dc0eb12e15
string
boolean
string
boolean
boolean
string
string
string
string
string
number
number
boolean
number
string
number
string
string
string
string
string
string
string
string
string
string
string
string
string
string
number
string
string
string
controllers.app.containers.app.env.PATH (1)
$(AAA_HOME)/.local/bin:$(AAA_HOME)/.local/share/mise/shims:$(AAA_HOME)/.local/go/bin:/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
string
string
string
string
string
string
controllers.app.containers.app.image.tag (1)
2026.9.5@sha256:ea298b62be8955d3ef750e2004a610dd90c3a30e5f9886e5d654d78a0c573218
string
boolean
boolean
boolean
number
number
boolean
string
boolean
controllers.app.containers.opencode.args[] (1)
- web
- --hostname
- "0.0.0.0"
- --port
- $(HTTP_PORT)
- --cors
- ${APP_DNS_OPENCODE:=opencode}
string
string
string
string
string
string
string
string
string
number
string
string
string
number
string
string
string
controllers.app.containers.opencode.env.PATH (1)
$(AAA_HOME)/.local/bin:$(AAA_HOME)/.local/share/mise/shims:$(AAA_HOME)/.local/go/bin:/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
string
string
string
string
string
string
controllers.app.containers.opencode.image.tag (1)
1.18.31@sha256:319e524999a8b7ff3c77af0555d9a2bc149c69ef687ca97c33d97e1a007d1b8c
string
boolean
boolean
boolean
number
number
boolean
string
boolean
string
controllers.app.initContainers.setup.command[] (1)
- sh
- -c
- while [ ! -z "$(pgrep node)" ] || [ ! -s $(AAA_HOME)/.openclaw/openclaw.json ]; do echo 'OpenClaw has not been setup, please exec to this container and run `openclaw setup` for the app to startup!'; sleep 60; done;
string
string
string
string
string
string
string
string
string
string
string
string
number
string
string
string
controllers.app.initContainers.setup.env.PATH (1)
$(AAA_HOME)/.local/bin:$(AAA_HOME)/.local/share/mise/shims:$(AAA_HOME)/.local/go/bin:/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
string
string
string
string
string
controllers.app.initContainers.setup.image.tag (1)
2026.9.5@sha256:ea298b62be8955d3ef750e2004a610dd90c3a30e5f9886e5d654d78a0c573218
string
boolean
string
boolean
string
string
string
string
string
string
string
string
string
string
string
string
string
string
number
string
string
number
string
number
number
boolean
string
boolean
string
string
string
string
defaultPodOptions.hostAliases[].hostnames[] (1)
- ${APP_DNS_NTFY:=ntfy}
- ${APP_DNS_CONTINUWUITY:=continuwuity}
- ${APP_DNS_CONTINUWUITY_SERVER:=continuwuity}
string
defaultPodOptions.hostAliases[].ip (1)
${APP_IP_NTFY_MX:=127.0.0.1}
${APP_IP_CONTINUWUITY:=127.0.0.1}
string
string
boolean
number
string
string
number
number
number
number
string
string
string
string
string
string
string
number
string
number
string
string
string
boolean
persistence.data.path (1)
/tank/Apps/openclaw
string
string
string
string
string
string
number
string
string
string
string
string
string
string
number
string
string
persistence.configmap.name (2)
{{ .Release.Name }}-config
string
string
string
persistence.misc.globalMounts[].path (2)
/home/linuxbrew
/nix
/home/openclaw/go
/home/openclaw/.local/go
/home/openclaw/.local/share/mise
/home/openclaw/.gradle
/home/openclaw/.cache
string
persistence.misc.globalMounts[].subPath (2)
brew
nix
go
go-local
mise
gradle
cache
string
string
boolean
string
string
string
string
string
string
string
string
string
persistence.downloads.path (1)
/tank/Storage/Downloads
string
string
string
string
string
string
string
persistence.images.globalMounts[].path (1)
/home/node/.openclaw/workspace/images
string
persistence.images.path (1)
/tank/Apps/comfyui/output
string
string
string
string
boolean
string
boolean
string
string
string
number
persistence.skills.globalMounts[].path (1)
/skills/prometheus/SKILL.md
/skills/victorialogs/SKILL.md
/skills/autobrr/SKILL.md
/skills/bazarr/SKILL.md
/skills/cross-seed/SKILL.md
/skills/jellyfin/SKILL.md
/skills/jellyseerr/SKILL.md
/skills/plex/SKILL.md
/skills/prowlarr/SKILL.md
/skills/qbittorrent/SKILL.md
/skills/sonarr/SKILL.md
/skills/radarr/SKILL.md
/skills/sabnzbd/SKILL.md
/skills/tautulli/SKILL.md
/skills/kubernetes-events/SKILL.md
/skills/flux/SKILL.md
string
persistence.skills.globalMounts[].subPath (1)
prometheus.md
victorialogs.md
autobrr.md
bazarr.md
cross-seed.md
jellyfin.md
jellyseerr.md
plex.md
prowlarr.md
qbittorrent.md
sonarr.md
radarr.md
sabnzbd.md
tautulli.md
kubernetes-events.md
flux.md
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
string
rbac.roles.openclaw-read-all.rules[].apiGroups[] (1)
-
- apps
- batch
- networking.k8s.io
- storage.k8s.io
- autoscaling
- policy
- coordination.k8s.io
- rbac.authorization.k8s.io
- apiextensions.k8s.io
- apiregistration.k8s.io
- metrics.k8s.io
- helm.toolkit.fluxcd.io
- kustomize.toolkit.fluxcd.io
- source.toolkit.fluxcd.io
- external-secrets.io
- monitoring.coreos.com
- snapshot.storage.k8s.io
string
rbac.roles.openclaw-read-all.rules[].resources[] (1)
- pods
- pods/log
- nodes
- services
- namespaces
- configmaps
- persistentvolumes
- persistentvolumeclaims
- endpoints
- resourcequotas
- limitranges
- serviceaccounts
- events
- deployments
- daemonsets
- statefulsets
- replicasets
- controllerrevisions
- jobs
- cronjobs
- ingresses
- ingressclasses
- networkpolicies
- storageclasses
- csinodes
- csidrivers
- volumeattachments
- horizontalpodautoscalers
- poddisruptionbudgets
- leases
- roles
- rolebindings
- clusterroles
- clusterrolebindings
- customresourcedefinitions
- apiservices
- nodes
- pods
- helmreleases
- kustomizations
- gitrepositories
- helmrepositories
- ocirepositories
- buckets
- helmcharts
- externalsecrets
- secretstores
- clustersecretstores
- prometheuses
- alertmanagers
- servicemonitors
- podmonitors
- prometheusrules
- thanosrulers
- probes
- volumesnapshots
- volumesnapshotcontents
- volumesnapshotclasses
string
rbac.roles.openclaw-read-all.rules[].verbs[] (1)
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
- get
- list
- watch
string
string
string
string
string
string