Packmind documentation is available here.
- Version Selection
- Quick Start
- Critical: Encryption Key
- Database Configuration
- Environment Variables
- Ingress Configuration
- Backup Considerations
- Additional Secrets
- Resource Configuration
Packmind supports two versions: OSS (default) and Enterprise.
No additional configuration required. Uses standard images:
packmind/api:X.X.Xpackmind/frontend:X.X.Xpackmind/mcp:X.X.X
Set global.version to enterprise:
global:
version: "enterprise"This automatically uses enterprise images:
packmind/api:X.X.X-enterprisepackmind/frontend:X.X.X-enterprisepackmind/mcp:X.X.X-enterprise
helm repo add packmind https://packmindHub.github.io/packmind-ai-helm-chart/
helm repo updateDeploy Packmind with default settings (internal PostgreSQL and Redis):
helm install packmind-ai packmind-ai/packmind-aiOr install from local chart directory:
helm install packmind packmind/Access at: http://packmind.local/ (update /etc/hosts for local testing)
By default, the chart auto-generates a secure 32-character encryption key that persists across upgrades:
secrets:
encryptionKeyGeneration: true # defaultImportant: Back up this secret immediately after first deployment to prevent data loss.
Provide your own encryption key:
secrets:
encryptionKeyGeneration: false
api:
encryptionKey: "your-secure-32-char-key-here"postgresql:
enabled: true
persistence:
size: 2Gipostgresql:
enabled: false
external:
databaseUrl: 'postgres://user:password@host:5432/packmind'postgresql:
enabled: false
external:
existingSecret: 'packmind-db-secret'
existingSecretKey: 'database-url'Create the secret:
kubectl create secret generic packmind-db-secret \
--from-literal=database-url="postgres://user:password@host:5432/packmind"✅ Recommended for production
All the environment variables are available here.
Override environment variables for the API service:
api:
env:
APP_WEB_URL: "https://local.packmind.acme"Override environment variables for the MCP server:
mcpServer:
env:
APP_WEB_URL: "https://local.packmind.acme"For production environments, use secretEnvVars to reference secrets managed by external systems (Vault, External Secrets Operator, etc.):
api:
secretEnvVars:
- name: THIRD_PARTY_API_KEY
secretName: vault-managed-secret
key: api-key
optional: false
- name: OPTIONAL_TOKEN
secretName: external-service-secret
key: token
optional: true
mcpServer:
secretEnvVars:
- name: MCP_EXTERNAL_TOKEN
secretName: vault-mcp-secret
key: external-token
optional: falseingress:
enabled: true
className: "nginx"
defaultHost: "app.example.com"
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "32m"
nginx.ingress.kubernetes.io/proxy-connect-timeout: "15"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
tls:
- secretName: packmind-tls
hosts:
- app.example.comPrerequisites:
- NGINX Ingress Controller installed
- cert-manager installed with Let's Encrypt ClusterIssuer configured
Routes: /api → API, /mcp → MCP Server, / → Frontend
When using internal PostgreSQL and Redis, ensure regular backups of:
packmind-postgresql-dataPVCpackmind-redis-dataPVC
Backups are managed by your external database provider.
secrets:
api:
jwtSecretKey: "your-api-jwt-secret"
openaiApiKey: "your-openai-api-key-here"
mcp:
jwtSecretKey: "your-mcp-jwt-secret"dockerRegistry:
enabled: true
existingSecret: "packmind-registry-secret"Or create inline:
kubectl create secret docker-registry packmind-registry-secret \
--docker-server=registry.example.com \
--docker-username=user \
--docker-password=password \
--docker-email=email@example.comTo inject an OpenAI API Key, you'll have to create the secret first
kubectl create secret generic my-openai-secret \
--from-literal=open-ai-key="your-openai-api-key-here"And then include in your values.yaml:
api:
secretEnvVars:
- name: OPEN_AI_KEY
secretName: my-openai-secret
key: open-ai-key
optional: false