Skip to main content
Deploy the PraisonAI agents API together with a pgvector Postgres database to Kubernetes with the official Helm chart.
This chart ships in the git checkout, not in the PyPI wheel (MANIFEST.in excludes infra/). Run from a monorepo checkout, or set PRAISONAI_HELM_ROOT / PRAISONAI_INFRA_ROOT, or pass --chart-dir.

Quick Start

1

Create the auth Secrets

Pre-create the API token and Postgres password Secrets out-of-band.
2

Install the chart

Reference both Secrets so the chart’s fail-fast checks pass.
3

Verify with a port-forward

Forward the Service and hit the health endpoint.

How It Works

An initContainer generates the API server code from your agents.yaml, then the main container runs it against the in-cluster Postgres. The initContainer receives PRAISONAI_AGENTS_FILE, PRAISONAI_API_PORT, and PRAISONAI_SERVER_FILE as env, then calls generate_api_server_code.

Configuration Options

Every key below is from src/praisonai-deploy/infra/helm/praisonai-agents-api/values.yaml. Chart identity: version: 0.1.0, appVersion: "latest".

Security — Fail-Fast on Missing Secrets

The chart refuses to render without a token source and a database password.
With auth.enabled=true (default) you must set auth.existingSecret or auth.token. Otherwise the render fails:
auth.enabled is true but no auth.existingSecret or auth.token was provided.
With postgres.enabled=true (default) you must set postgres.auth.existingSecret or postgres.auth.password. Otherwise the render fails:
postgres.enabled is true but no postgres.auth.existingSecret or postgres.auth.password was provided.
Fix each by pre-creating the referenced Secret (preferred) or supplying the inline value. Disable a subsystem’s requirement only for trusted local testing by setting auth.enabled=false or postgres.enabled=false.

Passing LLM Keys via env

Pass provider keys with the valueFrom.secretKeyRef pattern.

Best Practices

Inline auth.token and postgres.auth.password end up in Git. Pre-create Secrets and reference them with existingSecret.
The default tag falls back to appVersion (latest), which drifts. Pin a released tag for reproducible deployments.
postgres.persistence.enabled=true binds an 8Gi PVC by default. Size it for your workload and set a storageClass where needed.
The chart ships resources: {}, so the pod has no guaranteed CPU/memory. Set requests and limits before production.

Install via the CLI

Skip the long helm invocation — the CLI wrapper injects both Secret references for you.

Helm CLI Wrapper

One command to install this chart.

Docker Compose Stack

The local equivalent of this chart.