apiVersion: apps/v1 kind: Deployment metadata: name: agent-pod namespace: agent-pod spec: replicas: 1 selector: matchLabels: app: agent-pod template: metadata: labels: app: agent-pod spec: # api.riotpiao.com has no in-cluster DNS record (only resolves from the # home network's own resolver) -- pin it to ingress-nginx-controller's # ClusterIP so pi's models.json baseUrl works unchanged. TLS still # terminates correctly since SNI/Host still say api.riotpiao.com. hostAliases: - ip: "10.101.128.185" hostnames: - "api.riotpiao.com" containers: - name: pi image: node:22-slim command: - sh - -c - "npm install -g @earendil-works/pi-coding-agent@0.84.2 && sleep infinity" resources: requests: cpu: "2" memory: 4Gi limits: cpu: "4" memory: 8Gi volumeMounts: - name: pi-config mountPath: /root/.pi/config.json subPath: config.json - name: pi-config mountPath: /root/.pi/agent/settings.json subPath: settings.json - name: pi-models mountPath: /root/.pi/agent/models.json subPath: models.json - name: agent-run-script mountPath: /root/agent-run.js subPath: agent-run.js # Sidecar: relays pi's --mode json session events to agent-console. # Runs via `go run` on mounted source rather than a prebuilt image -- # same "no registry yet" tradeoff as the pi container's npm install. - name: hub image: golang:1.25-alpine workingDir: /hub command: - sh - -c - "go run ." env: - name: HUB_ADDR value: ":9090" ports: - containerPort: 9090 resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 256Mi volumeMounts: - name: hub-src mountPath: /hub volumes: - name: pi-config configMap: name: pi-config - name: pi-models secret: secretName: pi-models - name: agent-run-script configMap: name: agent-run-script - name: hub-src configMap: name: hub-src