tool-containers
Menu
GitHub (opens in new tab)

Run agentbloat with Helm

The chart/ installs an agentbloat Deployment, named after the release, whose pod runs sleep infinity so you can open shells in it.

Images
  • GHCRghcr.io/hambn/agentbloat
  • Docker Hubdocker.io/hambn/agentbloat
Use case
Long-lived cluster workspace from a Helm chart
Source
tools/ai/agentbloat/docs/helm (opens in new tab)
On this page

Prerequisites

  • Helm 3 and a Kubernetes cluster.

Open a shell

Shell
helm install agentbloat ./chart
kubectl exec -it deploy/agentbloat -- zsh -l

Run cd /workspace, then any agent, and sign in from its prompt.

Values

Value Default Purpose
image.repository ghcr.io/hambn/agentbloat Image repository.
image.tag ubuntu-browser Image tag. Set ubuntu-browser@sha256:<digest> to pin one build.
image.pullPolicy Always Pull policy.
replicaCount 1 Number of pods. Each has its own /workspace.
command ["sleep", "infinity"] Keeps the pod running for kubectl exec.
resources 250m CPU and 512Mi requested; 2 CPU and 4Gi limit Container resources.

Workspace

/workspace is an emptyDir that is removed with the pod, and agent logins reset whenever the container restarts. Edit chart/templates/deployment.yaml to mount persistent volumes.

Files

Cleanup

Shell
helm uninstall agentbloat

File contents

chart/Chart.yaml6 lines
apiVersion: v2
name: agentbloat
description: Current AI coding agent CLIs on devbox
type: application
version: 0.2.0
appVersion: "ubuntu-browser"
chart/values.yaml15 lines
image:
  repository: ghcr.io/hambn/agentbloat
  tag: ubuntu-browser
  pullPolicy: Always

replicaCount: 1
command: ["sleep", "infinity"]

resources:
  requests:
    cpu: 250m
    memory: 512Mi
  limits:
    cpu: "2"
    memory: 4Gi
chart/templates/deployment.yaml43 lines
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}
  labels:
    app.kubernetes.io/name: agentbloat
    app.kubernetes.io/instance: {{ .Release.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app.kubernetes.io/name: agentbloat
      app.kubernetes.io/instance: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app.kubernetes.io/name: agentbloat
        app.kubernetes.io/instance: {{ .Release.Name }}
    spec:
      securityContext:
        runAsNonRoot: true
        runAsUser: 1000
        runAsGroup: 1000
        fsGroup: 1000
        seccompProfile:
          type: RuntimeDefault
      containers:
        - name: agentbloat
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          command: {{ .Values.command | toJson }}
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: ["ALL"]
          resources:
            {{- toYaml .Values.resources | nindent 12 }}
          volumeMounts:
            - name: workspace
              mountPath: /workspace
      volumes:
        - name: workspace
          emptyDir: {}

Topics