Skip to main content
The MemMachine Helm chart provides a production-ready deployment including the core API, PostgreSQL (with pgvector), and Neo4j. This guide covers standard installation, external database integration, and resource optimization.
Prerequisites: You will need a Kubernetes cluster (v1.19+), Helm 3 installed, and a StorageClass that supports ReadWriteMany (RWX) (e.g., NFS-client).

High-Level Architecture

The chart exposes the MemMachine API via a NodePort (default 31001), while internal databases are kept private within the cluster using ClusterIP services.

Quick Start

Deploy MemMachine with default settings (in-cluster databases) using a single command:
1

Set Up Your Namespace

kubectl create namespace memmachine
2

Install the Chart

Provide your OpenAI API key to enable the default LLM and embedding providers.
helm upgrade --install memmachine . \
  --namespace memmachine \
  --set memmachine.openaiApiKey=sk-xxxx...
3

Verify the Pods

kubectl get pods -n memmachine

Configuration Reference

Persistent Storage

By default, the chart requests 5Gi per volume using the nfs-client storage class.
ParameterDefaultDescription
storageClassnfs-clientStorageClass for all PVCs.
accessModeReadWriteManyMust match your StorageClass capabilities.
pvcSize5GiStorage request for each component.

External Databases

If you prefer to use managed services (like RDS or Neo4j Aura), disable the in-cluster components: Bash
helm upgrade --install memmachine . \
  --set postgres.enabled=false --set postgres.host=pg.example.com \
  --set neo4j.enabled=false --set neo4j.host=neo4j.example.com

Resource Limits

Our QA team has verified these baseline limits for small-to-medium workloads:
ComponentCPU RequestMemory LimitNote
MemMachine200m2GiNo CPU limit to prevent inference throttling.
PostgreSQL250m2GiHeadroom for pgvector index builds.
Neo4j500m2GiCovers JVM heap + Page Cache.

Advanced Usage

Ollama Integration

Override model.base_url and model.provider in your values.yaml to point to a local Ollama instance.

NodePort Customization

Change the default port by setting nodePorts.http8080 to your desired range (30000-32767).

Example: Custom Values File

For production setups, we recommend using a values-override.yaml:
memmachine:
  resources:
    limits:
      memory: 4Gi
neo4j:
  heap:
    max: 4G
  resources:
    limits:
      memory: 8Gi

Cleanup: Helm does not delete PVCs by default to prevent accidental data loss. To fully wipe a deployment, run helm uninstall memmachine followed by kubectl delete pvc -l app=memmachine.