diff --git a/llamacpp/deployment-wakeword.yaml b/llamacpp/deployment-wakeword.yaml new file mode 100644 index 0000000..4e7662e --- /dev/null +++ b/llamacpp/deployment-wakeword.yaml @@ -0,0 +1,91 @@ +# Wyoming Wake Word (rhasspy/wyoming-openwakeword). +# +# Exposes the Wyoming protocol over TCP on port 10400 so Home Assistant's +# Wyoming wake word integration can stream microphone audio and receive wake +# word detections. Uses openWakeWord under the hood with ONNX models. +# +# Lightweight CPU-only pod (no GPU), not pinned to the NUCBox. Models are +# cached in a local-path PVC (`/data`) so they don't re-download on restart. +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: wyoming-openwakeword-data + namespace: llamacpp + labels: + app: llamacpp + component: wakeword +spec: + storageClassName: local-path + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: wyoming-openwakeword + namespace: llamacpp + labels: + app: llamacpp + component: wakeword +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: llamacpp + component: wakeword + template: + metadata: + labels: + app: llamacpp + component: wakeword + spec: + nodeSelector: + kubernetes.io/arch: amd64 + containers: + - name: wyoming-openwakeword + image: rhasspy/wyoming-openwakeword + imagePullPolicy: IfNotPresent + args: + - --uri + - tcp://0.0.0.0:10400 + ports: + - name: wyoming + containerPort: 10400 + resources: + requests: + cpu: "100m" + memory: "128Mi" + limits: + cpu: "500m" + memory: "512Mi" + volumeMounts: + - name: data + mountPath: /data + volumes: + - name: data + persistentVolumeClaim: + claimName: wyoming-openwakeword-data +--- +apiVersion: v1 +kind: Service +metadata: + name: wyoming-openwakeword + namespace: llamacpp + labels: + app: llamacpp + component: wakeword +spec: + type: ClusterIP + selector: + app: llamacpp + component: wakeword + ports: + - name: wyoming + port: 10400 + targetPort: 10400