KubeBolt / docs
GitHub

Installation Methods

Multiple ways to install KubeBolt, from Docker Compose to in-cluster Helm deployment.

Production deployment inside your cluster. OCI-based chart on GitHub Container Registry. Also listed on Artifact Hub.

helm install kubebolt oci://ghcr.io/clm-cloud-solutions/kubebolt/helm/kubebolt

kubectl port-forward svc/kubebolt 3000:80

# With Ingress and custom admin password
helm install kubebolt \
  oci://ghcr.io/clm-cloud-solutions/kubebolt/helm/kubebolt \
  --set auth.adminPassword=YourSecurePassword \
  --set ingress.enabled=true \
  --set ingress.host=kubebolt.example.com

The chart creates a ClusterRole with full read permissions, a ServiceAccount, and the KubeBolt deployment. Configurable values include image tags, resource limits, Ingress, auth, and RBAC settings.

Docker Compose

Full stack with separate API and web containers. Multi-arch images (amd64/arm64).

# Remote clusters (EKS, GKE, AKS)
kubectl config use-context my-cluster
cd deploy && docker compose up -d

# Docker Desktop K8s (needs kubeconfig rewrite)
./deploy/docker-kubeconfig.sh
cd deploy && docker compose up -d

Frontend at http://localhost:3000. Admin password printed to logs (docker compose logs api).

EKS note: The compose file mounts ~/.aws for AWS credential access. Ensure your AWS session is active.

Single Binary (macOS, Linux, Windows)

One executable with embedded frontend. API + UI in a single process on one port. Download from GitHub Releases.

# macOS Apple Silicon
curl -LO https://github.com/clm-cloud-solutions/kubebolt/releases/latest/download/kubebolt-darwin-arm64
chmod +x kubebolt-darwin-arm64 && mv kubebolt-darwin-arm64 /usr/local/bin/kubebolt

# Linux amd64
curl -LO https://github.com/clm-cloud-solutions/kubebolt/releases/latest/download/kubebolt-linux-amd64
chmod +x kubebolt-linux-amd64 && sudo mv kubebolt-linux-amd64 /usr/local/bin/kubebolt

# Run (auto-detects kubeconfig; admin password printed to logs)
kubebolt --kubeconfig ~/.kube/config

Available for darwin-arm64, darwin-amd64, linux-arm64, linux-amd64, and windows-amd64. Verify with sha256sum -c CHECKSUMS.txt.

.env support: The binary auto-loads a .env file from the current directory. Put KUBEBOLT_ADMIN_PASSWORD, KUBEBOLT_AI_API_KEY, etc. in a .env file next to the binary. System env vars and CLI flags take precedence.

Local Development

Requires Go 1.25+ and Node 20+.

# Backend (port 8080)
cd apps/api && go run cmd/server/main.go --kubeconfig ~/.kube/config

# Frontend (port 5173, proxies /api and /ws to backend)
cd apps/web && npm install && npm run dev

To build your own single binary:

make build-binary
# Produces apps/api/kubebolt (embedded frontend)

Homebrew (macOS, Linux)

Install and update via Homebrew. Automatic version management via brew upgrade. Available for macOS and Linux (amd64 + arm64).

# Add the CLM tap (one-time setup)
brew tap clm-cloud-solutions/tap

# Install
brew install kubebolt

# Run
kubebolt --kubeconfig ~/.kube/config

# Update to the latest version
brew upgrade kubebolt

Docker (single container)

Single image with embedded frontend. No nginx, no compose. Multi-arch (amd64/arm64). Runs as non-root.

docker run -p 3000:3000 \
  -v ~/.kube:/root/.kube:ro \
  ghcr.io/clm-cloud-solutions/kubebolt:latest

The image is signed with Cosign. Verify with:

cosign verify ghcr.io/clm-cloud-solutions/kubebolt:latest \
  --certificate-identity-regexp 'https://github.com/clm-cloud-solutions/kubebolt/.*' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

EKS note: For EKS clusters, mount ~/.aws and set AWS_PROFILE so the binary can obtain tokens. The image includes aws-cli.

kubectl Plugin (krew)

Run KubeBolt as a kubectl subcommand. Available via CLM’s custom krew index.

# Prerequisite: install krew (one-time)
# https://krew.sigs.k8s.io/docs/user-guide/setup/install/

# Add the CLM custom index
kubectl krew index add clm https://github.com/clm-cloud-solutions/krew-index.git

# Install
kubectl krew install clm/kubebolt

# Run (uses current kubectl context)
kubectl kubebolt

# Update
kubectl krew upgrade clm/kubebolt

Coming Soon

The following distribution methods are planned but require additional infrastructure.

Install Script

One-command install that auto-detects OS and architecture. Requires a custom domain (kubebolt.io) to host the script.

curl -fsSL https://get.kubebolt.dev | sh

Official krew-index

After upstream acceptance into kubernetes-sigs/krew-index, users will be able to install without adding the CLM custom index:

kubectl krew install kubebolt

Kubernetes Operator

Declarative lifecycle management via a KubeBolt CRD. Separate controller project with Kubebuilder, handles upgrades and self-healing.

kubectl apply -f https://get.kubebolt.dev/operator.yaml