# Poimen Memory API Server # Serves 7 HTTP endpoints for memory ingest, query, and management. # Connects to memory-db (pgvector) for persistent storage. apiVersion: apps/v1 kind: Deployment metadata: name: poimen-memory namespace: poimen labels: app.kubernetes.io/name: poimen-memory app.kubernetes.io/component: api-server spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: poimen-memory template: metadata: labels: app.kubernetes.io/name: poimen-memory spec: containers: - name: memory image: forgejo.riotpiao.com/rock/poimen-memory:latest imagePullPolicy: Always ports: - containerPort: 8080 name: http env: # Database connection (from CNPG auto-generated secret) - name: DATABASE_HOST value: "memory-db-rw.poimen.svc.cluster.local" - name: DATABASE_PORT value: "5432" - name: DATABASE_NAME value: "memory" - name: DATABASE_USER valueFrom: secretKeyRef: name: memory-db-app key: username - name: DATABASE_PASSWORD valueFrom: secretKeyRef: name: memory-db-app key: password - name: DATABASE_URL value: "postgresql://$(DATABASE_USER):$(DATABASE_PASSWORD)@$(DATABASE_HOST):$(DATABASE_PORT)/$(DATABASE_NAME)?sslmode=disable" # LLM Gateway API key - name: MEM_API_KEY valueFrom: secretKeyRef: name: poimen-memory-secrets key: llm-api-key # Server config - name: MEM_PORT value: "8080" - name: MEM_HOME value: "/data" args: - serve - --port - "8080" - --api-key - "$(MEM_API_KEY)" resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi livenessProbe: httpGet: path: /health port: http initialDelaySeconds: 10 periodSeconds: 30 readinessProbe: httpGet: path: /health port: http initialDelaySeconds: 5 periodSeconds: 10 volumeMounts: - name: data mountPath: /data volumes: - name: data persistentVolumeClaim: claimName: poimen-memory-vault # Tolerate control-plane nodes tolerations: - key: node-role.kubernetes.io/control-plane operator: Exists effect: NoSchedule