On-Prem deployment
Run Helix on your own infrastructure.
Local Setup
To install Helix on your own Linux server with Nvidia/AMD GPU support, run the following command:
curl -sL -O https://get.helixml.tech/install.sh && bash install.shKubernetes Setup
To install Helix as a chart in your Kubernetes cluster you will first need to create secrets with the following contents:
# Create namespace and secrets
kubectl create namespace helix
kubectl config set-context --current --namespace=helix
# Create secrets with generated secure values
kubectl create secret generic postgresql-auth-secret \
--from-literal=postgres-password="zuriOfPBBpOaUUDff32FGSAz" \
--from-literal=username="helix" \
--from-literal=password="" \
--from-literal=database="helix"
kubectl create secret generic pgvector-auth-secret \
--from-literal=username="postgres" \
--from-literal=password="" \
--from-literal=database="postgres"
kubectl create secret generic helix-pgvector-creds \
--from-literal=dsn="postgresql://postgres:@my-helix-controlplane-pgvector:5432/postgres"
kubectl create secret generic helix-license \
--from-literal=license-key="eyJkYXRhIjoie1wiaWRcIjpcImxpY18zNlpBNllzRGRjZlVDRlVCRzdadDU4TEF5TTVcIixcIm9yZ2FuaXphdGlvblwiOlwicXF3ZXFcIixcInZhbGlkXCI6dHJ1ZSxcImlzc3VlZFwiOlwiMjAyNS0xMi0wOFQxNDoxOTowNC4wMjM5MzQ0ODJaXCIsXCJ2YWxpZF91bnRpbFwiOlwiMjAyNi0xMi0wOFQxNDoxOTowNC4wMjM3OTA4NDRaXCIsXCJmZWF0dXJlc1wiOntcInVzZXJzXCI6dHJ1ZX0sXCJsaW1pdHNcIjp7XCJ1c2Vyc1wiOjAsXCJtYWNoaW5lc1wiOjB9fSIsInNpZ25hdHVyZSI6IkFtamZqR0EzL2p5d1N5bEpDa0trM0x4eDRDWG5malpjTFVjcFBiTGdXZ2l1d0JKRTU2M2JrUC9Ea21pL1VIZEtNckdmb25OT2R1V2hrOHJ5TmNZR1RBPT0ifQ=="
kubectl create secret generic helix-runner-secrets \
--from-literal=api-token="CHANGE-ME"
Now, save this as values.yaml for the chart:
# Production-ready configuration for helix-controlplane
# For more information: https://docs.helixml.tech/helix/private-deployment/manual-install/kubernetes/
global:
serverUrl: http://localhost:8080
image:
tag: ""
searxng:
enabled: true
chrome:
enabled: true
pgvector:
enabled: true
auth:
existingSecret: "pgvector-auth-secret"
usernameKey: "username"
passwordKey: "password"
databaseKey: "database"
persistence:
enabled: true
size: 50Gi
storageClass: ""
annotations: {}
accessModes:
- ReadWriteOnce
controlplane:
licenseKeyExistingSecret: "helix-license"
licenseKeyExistingSecretKey: "license-key"
runnerTokenExistingSecret: "helix-runner-secrets"
runnerTokenExistingSecretKey: "api-token"
admin:
userSource: "env"
userIds: "all"
haystack:
enabled: true
existingSecret: "helix-pgvector-creds"
existingSecretDsnKey: "dsn"
embeddingsModel: "MrLight/dse-qwen2-2b-mrl-v1"
embeddingsDim: "1536"
chunkSize: "1000"
chunkOverlap: "50"
chunkUnit: "word"
rag:
defaultProvider: "haystack"
embeddingsProvider: "helix"
inference:
defaultProvider: "helix"
fineTuning:
defaultProvider: "helix"
persistence:
enabled: true
size: 100Gi
storageClass: ""
accessModes:
- ReadWriteOnce
volumes:
- name: data
postgresql:
enabled: true
auth:
existingSecret: "postgresql-auth-secret"
postgresPasswordKey: "postgres-password"
usernameKey: "username"
passwordKey: "password"
databaseKey: "database"
architecture: standalone
tika:
enabled: false
typesense:
enabled: falseNow we are ready to deploy controlplane:
# Add Helix Helm repository
helm repo add helix https://charts.helixml.tech
helm repo update
# Install Control Plane with your generated values.yaml and secrets
export HELIX_VERSION="latest"
helm upgrade --install my-helix-controlplane helix/helix-controlplane \
-f values.yaml \
--set image.tag="${HELIX_VERSION}"Now install the runner:
# Install Runner (after control plane is running and secrets are created)
export HELIX_VERSION="latest"
helm upgrade --install my-helix-runner helix/helix-runner \
--set runner.host="http://my-helix-controlplane:8080" \
--set runner.tokenExistingSecret="helix-runner-secrets" \
--set runner.tokenExistingSecretKey="api-token" \
--set replicaCount=1 \
--set image.tag="${HELIX_VERSION}-small"And to access it you can use the following command:
kubectl port-forward svc/helix-helix-controlplane 8080:80