diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d4df1c8..734a833 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -25,3 +25,23 @@ jobs:
- name: Test
run: go test ./...
+
+ helm-lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Helm
+ uses: azure/setup-helm@v4
+
+ - name: Helm lint
+ run: helm lint chart/agentikube/
+
+ - name: Helm template
+ run: |
+ helm template agentikube chart/agentikube/ \
+ --namespace sandboxes \
+ --set storage.filesystemId=fs-test \
+ --set sandbox.image=test:latest \
+ --set compute.clusterName=test-cluster
diff --git a/Makefile b/Makefile
index 160de4a..f68ed93 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-.PHONY: build install clean fmt vet lint
+.PHONY: build install clean fmt vet lint crds helm-lint helm-template
build:
go build -o agentikube ./cmd/agentikube
@@ -16,3 +16,16 @@ vet:
go vet ./...
lint: fmt vet
+
+crds:
+ ./scripts/download-crds.sh
+
+helm-lint:
+ helm lint chart/agentikube/
+
+helm-template:
+ helm template agentikube chart/agentikube/ \
+ --namespace sandboxes \
+ --set storage.filesystemId=fs-test \
+ --set sandbox.image=test:latest \
+ --set compute.clusterName=test-cluster
diff --git a/README.md b/README.md
index 21ce483..598fa08 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
[](https://github.com/harivansh-afk/agentikube/blob/main/go.mod)
[](https://github.com/harivansh-afk/agentikube/releases/latest)
-A small Go CLI that spins up isolated agent sandboxes on Kubernetes.
+A Helm package used for spinning up isolated stateful agent sandboxes via k8 pods
@@ -20,6 +20,31 @@ A small Go CLI that spins up isolated agent sandboxes on Kubernetes.
## Quick start
+### Option A: Helm chart
+
+```bash
+# 1. Create your values file
+cat > my-values.yaml <
+agentikube ssh demo
+```
+
+### Option B: CLI only
+
```bash
# 1. Copy and fill in your config
cp agentikube.example.yaml agentikube.yaml
@@ -53,11 +78,13 @@ Running `create ` adds:
cmd/agentikube/main.go # entrypoint
internal/config/ # config structs + validation
internal/manifest/ # template rendering
-internal/manifest/templates/ # k8s YAML templates
+internal/manifest/templates/ # k8s YAML templates (used by CLI)
internal/kube/ # kube client helpers
internal/commands/ # command implementations
+chart/agentikube/ # Helm chart
+scripts/ # helper scripts (CRD download)
agentikube.example.yaml # example config
-Makefile # build/install/fmt/vet
+Makefile # build/install/fmt/vet/helm
```
## Build and test locally
diff --git a/scripts/download-crds.sh b/scripts/download-crds.sh
new file mode 100755
index 0000000..f4090be
--- /dev/null
+++ b/scripts/download-crds.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+# Download agent-sandbox CRDs into chart/agentikube/crds/
+# Run this before packaging the chart: make crds
+
+REPO="kubernetes-sigs/agent-sandbox"
+BRANCH="main"
+BASE_URL="https://raw.githubusercontent.com/${REPO}/${BRANCH}/k8s/crds"
+DEST="$(cd "$(dirname "$0")/.." && pwd)/chart/agentikube/crds"
+
+CRDS=(
+ sandboxtemplates.yaml
+ sandboxclaims.yaml
+ sandboxwarmpools.yaml
+)
+
+echo "Downloading CRDs from ${REPO}@${BRANCH} ..."
+mkdir -p "$DEST"
+
+for crd in "${CRDS[@]}"; do
+ echo " ${crd}"
+ curl -sSfL "${BASE_URL}/${crd}" -o "${DEST}/${crd}"
+done
+
+echo "CRDs written to ${DEST}"