Files
homelab/apps/harness/k8s/base/deployment.yaml
Julia McGhee 9830a1b742
Some checks failed
CI / lint-and-test (push) Successful in 38s
Deploy Production / deploy (push) Successful in 1m15s
CI / build (push) Has been cancelled
Add persistent knowledge volume and enhance chat UI
Infrastructure:
- Add Longhorn PVCs for knowledge store (1Gi) and workspace (10Gi),
  replacing ephemeral emptyDir for workspace
- Set HARNESS_KNOWLEDGE_DIR=/data/knowledge env var in deployment

Chat UI improvements:
- Thinking ticker: pulsing indicator while waiting for model response
  and between tool-use rounds
- Context bar: message count, estimated token usage, color-coded fill
  bar against model context window
- Multiple conversation tabs: independent state per conversation with
  create/close/switch, model selection inherited on new tabs
- Workspace binding: per-conversation repo search that injects project
  context into the system prompt
2026-03-22 11:17:37 +00:00

93 lines
2.6 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: harness
labels:
app: harness
spec:
replicas: 1
selector:
matchLabels:
app: harness
template:
metadata:
labels:
app: harness
spec:
serviceAccountName: harness
imagePullSecrets:
- name: gitea-pull-secret
containers:
- name: harness
image: gitea.coreworlds.io/lazorgurl/homelab-harness:latest
ports:
- containerPort: 3100
env:
- name: HARNESS_WORK_DIR
value: /data/harness
- name: HARNESS_KNOWLEDGE_DIR
value: /data/knowledge
- name: CLAUDE_CONFIG_DIR
value: /secrets/claude
- name: OPENCODE_CONFIG_DIR
value: /secrets/opencode
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: harness-db-credentials
key: database-url
- name: GITEA_TOKEN
valueFrom:
secretKeyRef:
name: harness-mcp-credentials
key: gitea-token
- name: GITEA_URL
value: "http://gitea-helm-http.platform.svc:3000"
- name: HARNESS_PG_MCP_URL
valueFrom:
secretKeyRef:
name: harness-mcp-credentials
key: postgres-mcp-url
volumeMounts:
- name: workspace
mountPath: /data/harness
- name: knowledge
mountPath: /data/knowledge
- name: claude-credentials
mountPath: /secrets/claude
readOnly: true
- name: opencode-credentials
mountPath: /secrets/opencode
readOnly: true
resources:
requests:
memory: 256Mi
cpu: 100m
limits:
memory: 2Gi
readinessProbe:
httpGet:
path: /api/health
port: 3100
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /api/health
port: 3100
initialDelaySeconds: 15
periodSeconds: 20
volumes:
- name: workspace
persistentVolumeClaim:
claimName: harness-workspace
- name: knowledge
persistentVolumeClaim:
claimName: harness-knowledge
- name: claude-credentials
secret:
secretName: harness-claude-credentials
- name: opencode-credentials
secret:
secretName: harness-opencode-credentials