Installation Methods
Multiple ways to install KubeBolt, from Docker Compose to in-cluster Helm deployment.
Helm Chart (recommended for Kubernetes)
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