Skip to main content
Version: main 🚧

Deploy CAIPE with Helm

Use the Helm chart to run CAIPE on any Kubernetes cluster — EKS, GKE, AKS, KinD, or self-managed.

Need a cluster first?

If you don't have a Kubernetes cluster yet, see Cluster Setup for KinD (local, no cloud account needed) and AWS EKS instructions. Return here once kubectl get nodes shows nodes in Ready state.

Prerequisites

RequirementNotes
Kubernetes 1.28+Set one up if needed
kubectlConfigured against your cluster
Helm 3helm version to verify
LLM credentialsOpenAI, Azure OpenAI, or AWS Bedrock

Configure Secrets

Create the namespace and secrets before running the Helm install.

kubectl create namespace ai-platform-engineering

LLM credentials

Pick the provider you're using:

OpenAI

kubectl create secret generic llm-secret \
-n ai-platform-engineering \
--from-literal=LLM_PROVIDER=openai \
--from-literal=OPENAI_API_KEY=<token> \
--from-literal=OPENAI_MODEL_NAME=gpt-4o

Azure OpenAI

kubectl create secret generic llm-secret \
-n ai-platform-engineering \
--from-literal=LLM_PROVIDER=azure-openai \
--from-literal=AZURE_OPENAI_API_KEY=<token> \
--from-literal=AZURE_OPENAI_ENDPOINT=https://example.openai.azure.com \
--from-literal=AZURE_OPENAI_API_VERSION=2025-03-01-preview \
--from-literal=AZURE_OPENAI_DEPLOYMENT=gpt-4o

AWS Bedrock

kubectl create secret generic llm-secret \
-n ai-platform-engineering \
--from-literal=LLM_PROVIDER=aws-bedrock \
--from-literal=AWS_ACCESS_KEY_ID=<access-key> \
--from-literal=AWS_SECRET_ACCESS_KEY=<secret-key> \
--from-literal=AWS_REGION=us-east-1 \
--from-literal=AWS_BEDROCK_MODEL_ID=us.amazon.nova-pro-v1:0 \
--from-literal=AWS_BEDROCK_PROVIDER=amazon

MCP server credentials

Create only the secrets for MCP servers you plan to enable:

kubectl create secret generic github-secret \
-n ai-platform-engineering \
--from-literal=GITHUB_PERSONAL_ACCESS_TOKEN=<token>

kubectl create secret generic argocd-secret \
-n ai-platform-engineering \
--from-literal=ARGOCD_TOKEN=<token> \
--from-literal=ARGOCD_API_URL=https://argocd.example.com \
--from-literal=ARGOCD_VERIFY_SSL=true

Install from OCI

Set the chart version:

export CAIPE_VERSION=<release-version>

Minimal install — UI, Dynamic Agents, MongoDB, and a starter MCP server:

helm install ai-platform-engineering oci://ghcr.io/cnoe-io/charts/ai-platform-engineering \
--version "${CAIPE_VERSION}" \
--namespace ai-platform-engineering \
--create-namespace \
--set-string tags.caipe-ui=true \
--set-string tags.dynamic-agents=true \
--set-string tags.mcp-netutils=true

With GitHub, ArgoCD, and RAG:

helm upgrade --install ai-platform-engineering oci://ghcr.io/cnoe-io/charts/ai-platform-engineering \
--version "${CAIPE_VERSION}" \
--namespace ai-platform-engineering \
--create-namespace \
--set-string tags.caipe-ui=true \
--set-string tags.dynamic-agents=true \
--set-string tags.mcp-github=true \
--set-string tags.mcp-argocd=true \
--set-string tags.rag-stack=true

Values file

tags:
caipe-ui: true
dynamic-agents: true
mcp-github: true
rag-stack: true

global:
llmSecrets:
secretName: llm-secret

mcp-github:
agentSecrets:
secretName: github-secret

# Optional: pre-seed model choices in the UI
caipe-ui:
appConfig:
models:
- model_id: gpt-4o
name: GPT-4o
provider: openai
enabled: true
helm upgrade --install ai-platform-engineering oci://ghcr.io/cnoe-io/charts/ai-platform-engineering \
--version "${CAIPE_VERSION}" \
--namespace ai-platform-engineering \
--create-namespace \
--values values.yaml

Chart Components

ComponentTagPurpose
CAIPE UItags.caipe-ui=trueWeb UI and BFF API
Dynamic Agentstags.dynamic-agents=trueChat, custom agents, workflows, checkpointed state
MCP serverstags.mcp-<name>=trueTool integrations exposed to agents
RAG stacktags.rag-stack=trueKnowledge base and embeddings
Slack bottags.slack-bot=trueSlack integration
Webex bottags.webex-bot=trueWebex integration

Available MCP tags: mcp-argocd, mcp-aws, mcp-backstage, mcp-confluence, mcp-github, mcp-gitlab, mcp-jira, mcp-komodor, mcp-pagerduty, mcp-slack, mcp-splunk, mcp-victorops, mcp-webex, mcp-netutils.


Verify

helm list -n ai-platform-engineering
kubectl get pods -n ai-platform-engineering
kubectl logs -n ai-platform-engineering -l app.kubernetes.io/name=dynamic-agents

Troubleshooting

  • Pods not starting: kubectl describe pod <pod> -n ai-platform-engineering
  • Check rendered manifests: helm template ai-platform-engineering charts/ai-platform-engineering --values values.yaml
  • Ensure tags.dynamic-agents=true is set when Dynamic Agents should run
  • MCP tag names use mcp-* prefix (e.g. tags.mcp-github=true)