Sizing and hardware
This page gives the resources the Navin Platform asks for, as written in the Helm chart, the data service manifests and the checks of the guided installer. Use it to size the nodes and the storage before the installation; measure then adjust with your own load (load testing plan).
OS packages (one server)
The guided installer navin-install refuses a host below these minimums (os/install/README.md):
| Role | CPU | Memory | Disk |
|---|---|---|---|
| standalone (Navin Manager, agent and platform on one server) | 2 | 4 GiB (8 GiB recommended) | 20 GiB free for /var, 4 GiB for /opt |
| Navin Manager (cluster mode) | 2 | 2 GiB (4 GiB recommended) | 10 GiB for /var, 2 GiB for /opt |
| node (cluster mode) | 1 | 1 GiB | 5 GiB for /var |
The PostgreSQL database of the platform is local by default; its size grows with the audit trail and the documents.
Plan its disk with your retention settings (EAI_AUDIT_WORM_RETENTION_DAYS, EAI_AUDIT_PAYLOAD_RETENTION_DAYS,
configuration reference).
Kubernetes: platform workloads
Requests and limits of deploy/helm/enterprise-ai/values.yaml, per pod:
| Workload | Requests | Limits | Replicas (default) | Replicas (values-prod.yaml) |
|---|---|---|---|---|
| Control Plane API | 250m CPU, 512 MiB | 2 CPU, 2 GiB | 2 to 10 (HPA) | 3 to 20 (HPA) |
| Portal | 100m CPU, 256 MiB | 1 CPU, 1 GiB | 2 to 6 (HPA) | 3 to 6 (HPA) |
| LiteLLM | 250m CPU, 512 MiB | 2 CPU, 2 GiB | 2 to 10 (HPA) | 3 to 30 (HPA) |
| Worker | 100m CPU, 256 MiB | 1 CPU, 1 GiB | 1 | 1 |
Worker planes audit, SOC, telemetry (worker.planes.enabled) | 100m CPU, 256 MiB each | 1 CPU, 1 GiB each | 1 each | 1 each |
Ollama (ollama.enabled) | 2 CPU, 8 GiB | 8 CPU, 32 GiB | 1 | 1 |
With the production profile, the platform itself needs at least 3 x (250m + 100m + 250m) CPU and
3 x (512 + 256 + 512) MiB of requests, spread over three nodes in distinct zones (required zone anti affinity of the
Control Plane in values-prod.yaml).
Kubernetes: data services
Volumes and replicas of deploy/data/*, all on the storage class fast-ssd:
| Service | Replicas | Volume per replica | Manifest |
|---|---|---|---|
| PostgreSQL (CloudNativePG 16.6) | 3 instances | 200 GiB data and 50 GiB WAL | deploy/data/postgres/cluster.yaml |
| Qdrant | 3 | 100 GiB | deploy/data/qdrant/values.yaml |
| NATS JetStream | 3 | 20 GiB | deploy/data/nats/values.yaml |
| Redis | replication (operator 2 replicas) | 20 GiB | deploy/data/redis/values.yaml |
| Redis for Opik | replication | 10 GiB | deploy/data/redis-opik/values.yaml |
| ClickHouse | operator managed | 200 GiB | deploy/data/clickhouse/k8s/clickhouse-installation.yaml |
| Temporal | 3 | database in PostgreSQL | deploy/data/temporal/values.yaml |
fast-ssd is the name the manifests use. Create a storage class with that name on your CSI driver, or replace the
name in the values files before the first synchronization.
GPU inference
vLLM runs one Deployment per model on NVIDIA nodes (label nvidia.com/gpu.present=true, toleration
nvidia.com/gpu). The profile values-onprem-gpu.yaml gives a sized example:
| Model | GPU per replica | Requests | Limits | Replicas |
|---|---|---|---|---|
meta-llama/Llama-3.1-8B-Instruct | 1 | 4 CPU, 32 GiB | 8 CPU, 48 GiB | 1 to 4 |
Qwen/Qwen2.5-72B-Instruct-AWQ | 4 (--tensor-parallel-size 4) | 16 CPU, 128 GiB | 32 CPU, 192 GiB | 1 to 2 |
BAAI/bge-m3 (embeddings) | 1 (--gpu-memory-utilization 0.30) | 2 CPU, 8 GiB | 4 CPU, 16 GiB | 1 to 3 |
| media workers STT, TTS (KEDA on the NATS lag) | 1 | chart default | chart default | 0 to 4 |
| media worker video generation | 1 | chart default | chart default | 0 to 2 |
The model cache is a volume of 200 GiB by default (vllm.modelCache.size), 500 GiB on the class local-nvme in the
on premises profile. With vllm.antiAffinity: required, a model needs as many GPU nodes as replicas.
CPU inference is possible for small models: accelerator: cpu on a vllm.models entry (image
vllm/vllm-openai-cpu, cpuKvCacheSpaceGb) or ollama.accelerator: cpu.
Docker Compose and local development
The full compose stack starts more than thirty containers (deploy/compose/docker-compose.yml). Plan a workstation
with at least 8 CPU, 16 GiB of memory and 40 GiB of free disk for the images and volumes; the profiles gpu
(vLLM, media worker) need an NVIDIA GPU and the NVIDIA container toolkit. make start without Docker runs only
PostgreSQL, Redis, Keycloak, the API, the worker and the portal.
The compose figures are a working estimate for the number of containers of the stack, not a measured minimum.