Wexa is an enterprise-grade Agentic SaaS platform that enables organizations to build, deploy, and manage AI-powered workflows and automation at scale.
Before installing, you must install the MongoDB Community Operator CRDs:
kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-kubernetes-operator/master/config/crd/bases/mongodbcommunity.mongodb.com_mongodbcommunity.yaml
helm repo add wexa https://wexahq.github.io/wexa-studio-helm
helm repo update
# Create namespace
kubectl create namespace wexa
# Install with default values
helm install wexa wexa/wexa-studio -n wexa
# Or install with custom values
helm install wexa wexa/wexa-studio -n wexa -f my-values.yaml
helm install wexa oci://ghcr.io/wexahq/wexa-studio-helm/wexa-studio -n wexa --create-namespace
git clone https://github.com/wexahq/wexa-studio-helm.git
cd wexa-studio-helm/charts/wexa-studio
helm dependency update
helm install wexa . -n wexa --create-namespace
# dev-values.yaml
global:
storageClass: "standard"
mongodb:
auth:
rootPassword: "dev-password"
redis:
auth:
password: "dev-password"
vault:
dev:
enabled: true # Use dev mode (no persistence)
# prod-values.yaml
global:
storageClass: "your-storage-class"
environment: production
# Security
networkPolicies:
enabled: true
# MongoDB - Change password!
mongodb:
auth:
rootPassword: "your-secure-password"
replicaSet:
replicas: 3
persistence:
size: 100Gi
# Redis - Change password!
redis:
auth:
password: "your-secure-password"
persistence:
size: 20Gi
# Vault - Production mode with persistence
vault:
dev:
enabled: false
auth:
rootToken: "your-vault-token"
persistence:
size: 10Gi
# MinIO - Change credentials!
minio:
auth:
rootUser: "admin"
rootPassword: "your-secure-password"
persistence:
size: 100Gi
# Qdrant - Vector database
qdrant:
enabled: true
persistence:
size: 20Gi
# PostgreSQL (for Temporal)
postgresql:
auth:
password: "your-secure-password"
persistence:
size: 50Gi
# Application secrets - Change all!
appConfig:
webServerKey: "your-web-server-key"
llmServiceServerKey: "your-llm-service-key"
licenseKey: "your-license-key"
# GHCR authentication for private images
ghcrSecret:
dockerConfigJson: "base64-encoded-docker-config"
| Parameter | Description | Default |
|---|---|---|
global.namespace |
Namespace for deployment | wexa |
global.environment |
Environment (production/staging/dev) | production |
global.storageClass |
Storage class for PVCs | "" |
global.imagePullSecrets |
Image pull secrets | [{name: ghcr-secret}] |
| Parameter | Description | Default |
|---|---|---|
mongodb.enabled |
Enable MongoDB | true |
mongodb.replicaSet.replicas |
Number of replicas | 3 |
mongodb.auth.rootPassword |
Root password | "" |
mongodb.persistence.size |
PVC size | 5Gi |
| Parameter | Description | Default |
|---|---|---|
redis.enabled |
Enable Redis | true |
redis.auth.password |
Redis password | "" |
redis.persistence.size |
PVC size | 5Gi |
| Parameter | Description | Default |
|---|---|---|
vault.enabled |
Enable Vault | true |
vault.dev.enabled |
Enable dev mode | false |
vault.auth.rootToken |
Root token | "" |
vault.persistence.size |
PVC size | 5Gi |
| Parameter | Description | Default |
|---|---|---|
minio.enabled |
Enable MinIO | true |
minio.auth.rootUser |
Root user | minioadmin |
minio.auth.rootPassword |
Root password | "" |
minio.persistence.size |
PVC size | 10Gi |
| Parameter | Description | Default |
|---|---|---|
qdrant.enabled |
Enable Qdrant | true |
qdrant.image.repository |
Image repository | qdrant/qdrant |
qdrant.image.tag |
Image tag | v1.7.4 |
qdrant.auth.apiKey |
API key (optional) | "" |
qdrant.persistence.size |
PVC size | 10Gi |
qdrant.service.httpPort |
HTTP port | 6333 |
qdrant.service.grpcPort |
gRPC port | 6334 |
| Parameter | Description | Default |
|---|---|---|
dataService.enabled |
Enable Data Service | true |
dataService.replicas |
Number of replicas | 2 |
dataService.hpa.enabled |
Enable HPA | false |
worker.enabled |
Enable Worker | true |
worker.replicas |
Number of replicas | 2 |
scheduleWorker.enabled |
Enable Schedule Worker | true |
identityService.enabled |
Enable Identity Service | true |
wexaWeb.enabled |
Enable Web Frontend | true |
For a complete list of parameters, see values.yaml.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Wexa Platform β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
β β Wexa Web β β Identity β β Data Service β β
β β (Frontend) β β Service β β (API + Migrations) β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
β β β β β
β ββββββββββββββββββΌβββββββββββββββββββββββ β
β β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
β β Worker β β Schedule β β LLM Calls Service β β
β β β β Worker β β β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Infrastructure β
β βββββββββ βββββββββ ββββββββββ βββββββββ βββββββββ βββββββββ β
β βMongoDBβ β Redis β βTemporalβ β Vault β β MinIO β βQdrant β β
β β(3node)β β β β β β β β β β β β
β βββββββββ βββββββββ ββββββββββ βββββββββ βββββββββ βββββββββ β
β β β
β βββββββββββββββββββ β
β β PostgreSQL β β
β β (for Temporal) β β
β βββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
helm repo update
helm upgrade wexa wexa/wexa-studio -n wexa
helm uninstall wexa -n wexa
# Optional: Delete PVCs
kubectl delete pvc -l app.kubernetes.io/instance=wexa -n wexa
# Optional: Delete namespace
kubectl delete namespace wexa
Check pod events:
kubectl describe pod <pod-name> -n wexa
Verify replica set status:
kubectl exec -it wexa-mongodb-0 -n wexa -- mongosh -u admin -p <password> --authenticationDatabase admin --eval "rs.status()"
The chart automatically creates the default namespace in Temporal. Check the job:
kubectl logs job/wexa-temporal-namespace-setup -n wexa
If Vault is sealed after restart:
# Get unseal key (if stored in secret)
kubectl get secret wexa-vault-keys -n wexa -o jsonpath='{.data.unseal-key}' | base64 -d
# Unseal
kubectl exec -it wexa-vault-0 -n wexa -- vault operator unseal <unseal-key>
Check Qdrant status:
kubectl exec -it wexa-qdrant-0 -n wexa -- curl http://localhost:6333/healthz
We welcome contributions! Please see our Contributing Guide for details.
This Helm chart is licensed under the Apache License 2.0. See LICENSE for details.