Skip to content

OpenClaw - AI Agent Platform

This cluster runs OpenClaw 2026.5.4, deployed via the openclaw-operator (v0.30.0). A single OpenClawInstance custom resource manages the full deployment — StatefulSet, PVC, RBAC, service, and config — no custom Docker image required.

InterfaceURL
Web UIhttps://claw.k8s.sudhanva.me
Telegram@CoochiepieBot
flowchart TB
    subgraph Internet
        User((User))
        TG[Telegram]
        ChatGPT[ChatGPT Plus<br/>openai-codex/gpt-5.5]
        Gemini[Google Gemini<br/>gemini-3.1-flash-lite]
        DeepSeek[NVIDIA DeepSeek<br/>deepseek-v4-pro]
    end

    subgraph OKE["OKE Cluster"]
        Gateway[Envoy Gateway<br/>TLS Termination]

        subgraph OpenClawPod["openclaw-0 (StatefulSet)"]
            GW[OpenClaw Gateway<br/>:18789]
            Agent[AI Agent]
            TGChannel[Telegram Channel]
            Browser[Chromium Sidecar<br/>Headless CDP]
        end

        Operator[openclaw-operator<br/>v0.30.0]
        PVC[(PVC 180Gi<br/>openclaw-data)]
        ESO[External Secrets Operator]
    end

    subgraph OCI["OCI Vault"]
        Secrets[(API Keys + Tokens)]
    end

    User -->|HTTPS| Gateway
    Gateway --> GW
    User -->|DM| TG
    TG --> TGChannel
    TGChannel --> Agent
    Agent -->|Primary| ChatGPT
    Agent -->|Fallback 1| Gemini
    Agent -->|Fallback 2| DeepSeek
    Agent --> Browser
    Operator -->|Manages| OpenClawPod
    Operator -->|Manages| PVC
    Secrets --> ESO
    ESO -->|K8s Secrets| OpenClawPod
PriorityProviderModelAuth
PrimaryOpenAI Codexopenai-codex/gpt-5.5ChatGPT Plus OAuth (stored on PVC)
Fallback 1Googlegoogle/gemini-3.1-flash-lite-previewGEMINI_API_KEY env var
Fallback 2NVIDIAnvidia/deepseek-ai/deepseek-v4-proNVIDIA_API_KEY env var

After deployment, authenticate with your ChatGPT Plus subscription (requires a TTY):

Terminal window
kubectl exec -it -n default openclaw-0 -- openclaw models auth login --provider openai-codex

This opens an OAuth browser flow. The tokens are saved to the PVC and persist across restarts.

The operator is installed via ArgoCD as a Helm OCI chart:

# argocd/applications.yaml (sync-wave 4)
repoURL: ghcr.io/openclaw-rocks/charts
chart: openclaw-operator
targetRevision: "*"

The OpenClawInstance CR is deployed at sync-wave 5:

Terminal window
argocd/apps/openclaw/openclawinstance.yaml
argocd/apps/openclaw/httproute.yaml
argocd/apps/openclaw/kustomization.yaml

The full config lives in argocd/apps/openclaw/openclawinstance.yaml. Key sections:

spec:
image:
repository: ghcr.io/openclaw/openclaw
tag: "2026.5.4"
config:
raw:
gateway:
mode: local
bind: lan # required for 2026.5.4+; "0.0.0.0" no longer accepted
port: 18789
agents:
defaults:
model:
primary: openai-codex/gpt-5.5
fallbacks:
- google/gemini-3.1-flash-lite-preview
- nvidia/deepseek-ai/deepseek-v4-pro
channels:
telegram:
enabled: true
dmPolicy: pairing # no botToken needed; uses TELEGRAM_BOT_TOKEN env var
gateway:
enabled: false # Envoy Gateway handles TLS; operator's nginx proxy not needed
storage:
persistence:
size: 180Gi # 200Gi = 215GB exceeds OCI 200GB free tier
storageClass: oci-bv
FeatureDescription
Telegram Bot@CoochiepieBot — DM to chat, pairing-based access
Web UIclaw.k8s.sudhanva.me — gateway token auth
ChatGPT PlusGPT-5.5 via OAuth subscription (no per-token billing)
Multi-model fallbackAuto-falls back to Gemini then DeepSeek if primary unavailable
Browser ControlChromium sidecar via CDP for web automation
Memory + DreamingPersistent memory with background consolidation
Session IsolationPer-sender sessions, 30 min idle auto-reset
Pluginsbrowser, device-pair, file-transfer, memory-core, phone-control, talk-voice, telegram, codex
Toolsgws (Google Workspace), gh (GitHub), bw (Bitwarden), uv/Python 3.14, Alpha Vantage

All secrets are stored in OCI Vault and synced via External Secrets Operator.

Vault SecretK8s SecretPurpose
telegram-bot-tokentelegram-bot-tokenTelegram Bot API token
gemini-api-keygemini-api-keyGoogle Gemini API
nvidia-api-keynvidia-api-keyNVIDIA AI Catalog (DeepSeek)
github-patgithub-patGitHub CLI
google-places-api-keygoogle-places-api-keyGoogle Places API
alphavantage-api-keyalphavantage-api-keyStock/financial data
bw-credentialsbw-credentialsBitwarden CLI

The operator auto-generates the gateway token secret (openclaw-gateway-token) — no Vault entry needed.

Terminal window
kubectl get secret openclaw-gateway-token -o jsonpath='{.data.token}' | base64 -d
ResourceRequestLimit
Memory1 GB4 GB
CPU500m2000m
Storage180Gi PVC
  1. Create a bot via @BotFather
  2. Add the token to OCI Vault as telegram-bot-token
  3. Deploy via ArgoCD — the operator reads TELEGRAM_BOT_TOKEN env var automatically
  4. DM the bot, get the pairing code
  5. Approve it:
Terminal window
kubectl exec -n default openclaw-0 -- openclaw pairing approve telegram <CODE>
tf-oke/terraform.tfvars
telegram_bot_token = "your-botfather-token"
gemini_api_key = "your-google-api-key"
nvidia_api_key = "your-nvidia-api-key"
Terminal window
cd tf-oke
terraform apply -target=oci_vault_secret.telegram_bot_token \
-target=oci_vault_secret.gemini_api_key \
-target=oci_vault_secret.nvidia_api_key
git checkout -- ../argocd/
Terminal window
kubectl apply -f argocd/applications.yaml

Force sync (wave 4 → 5):

Terminal window
kubectl patch app openclaw-operator -n argocd --type merge \
-p '{"metadata":{"annotations":{"argocd.argoproj.io/refresh":"hard"}}}'
kubectl patch app openclaw-app -n argocd --type merge \
-p '{"metadata":{"annotations":{"argocd.argoproj.io/refresh":"hard"}}}'

3. Authenticate ChatGPT (optional, requires TTY)

Section titled “3. Authenticate ChatGPT (optional, requires TTY)”
Terminal window
kubectl exec -it -n default openclaw-0 -- openclaw models auth login --provider openai-codex
Terminal window
kubectl exec -n default openclaw-0 -- openclaw pairing approve telegram <CODE>

Update the image.tag in openclawinstance.yaml and push:

spec:
image:
tag: "2026.5.4" # change to new version

ArgoCD detects the change, the operator rolls the StatefulSet, and the pod restarts with the new image. Always trigger a sync after pushing:

Terminal window
kubectl patch app openclaw-app -n argocd --type merge \
-p '{"metadata":{"annotations":{"argocd.argoproj.io/refresh":"hard"}}}'
Terminal window
kubectl logs openclaw-0 | grep telegram
  • Pairing not approved: kubectl exec -n default openclaw-0 -- openclaw pairing approve telegram <CODE>
  • Invalid token: kubectl get secret telegram-bot-token -o jsonpath='{.data.telegram-bot-token}' | base64 -d
Terminal window
kubectl logs openclaw-0 --previous | head -20

Common causes in 2026.5.4:

  • Invalid --bind — add bind: lan to spec.config.raw.gateway (raw IP addresses no longer accepted)
  • Config auto-restored from backup loop — delete the PVC to clear stale backup state: kubectl delete pvc openclaw-data
  • Gateway proxy port conflict — ensure spec.gateway.enabled: false is set
Terminal window
kubectl exec -n default openclaw-0 -- openclaw models status

If config state is corrupted (repeated restarts, backup restore loops):

Terminal window
kubectl delete pvc openclaw-data -n default

The operator recreates the PVC fresh on the next reconcile. ChatGPT OAuth tokens will need to be re-authenticated.