57dc91585d
Internal SmartGift build of a Claude Code monitoring dashboard. Lanes: a durable unit of parallel agent work, one per working directory, tracked across session restarts. Managed lanes are git worktrees the dashboard provisions and can reset or remove behind a three-check destroy guard and a counted preflight; adopted lanes are directories you already own and are never destroyable. Pipelines: a lane moves through pipeline stages. A stage the agent declares with evidence renders green; a stage inferred from the tool-event stream renders dashed amber and never counts as done. Detection is forward-only within a 30-minute window, and never writes the declared stage. Workspace: one page at /run with a lane grid, the selected lane's pipeline, and a full Claude console behind a disclosure.
80 lines
3.6 KiB
Plaintext
80 lines
3.6 KiB
Plaintext
╔══════════════════════════════════════════════════════════════════════╗
|
|
║ Claude Code Agent Monitor - Deployment Notes ║
|
|
╚══════════════════════════════════════════════════════════════════════╝
|
|
|
|
{{- $fullName := include "agent-monitor.fullname" . -}}
|
|
|
|
🎉 {{ $fullName }} has been deployed to namespace "{{ .Release.Namespace }}"!
|
|
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
|
|
📡 Accessing the Dashboard:
|
|
{{- if .Values.ingress.enabled }}
|
|
{{- range $host := .Values.ingress.hosts }}
|
|
{{- range .paths }}
|
|
|
|
URL: http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- else if contains "NodePort" .Values.service.type }}
|
|
|
|
export NODE_PORT=$(kubectl get -n {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ $fullName }})
|
|
export NODE_IP=$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}")
|
|
echo "Dashboard URL: http://$NODE_IP:$NODE_PORT"
|
|
|
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
|
|
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
|
Watch status with:
|
|
kubectl get -n {{ .Release.Namespace }} svc {{ $fullName }} -w
|
|
|
|
export SERVICE_IP=$(kubectl get svc -n {{ .Release.Namespace }} {{ $fullName }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
|
echo "Dashboard URL: http://$SERVICE_IP:{{ .Values.service.port }}"
|
|
|
|
{{- else }}
|
|
|
|
Port-forward to access locally:
|
|
kubectl port-forward -n {{ .Release.Namespace }} svc/{{ $fullName }} 4820:{{ .Values.service.port }}
|
|
|
|
Then open: http://localhost:4820
|
|
|
|
{{- end }}
|
|
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
|
|
🔍 Health Check:
|
|
kubectl exec -n {{ .Release.Namespace }} deploy/{{ $fullName }} -- wget -qO- http://localhost:{{ .Values.service.targetPort }}/api/health
|
|
|
|
🧪 Run Tests:
|
|
helm test {{ .Release.Name }} -n {{ .Release.Namespace }}
|
|
|
|
📊 View Logs:
|
|
kubectl logs -n {{ .Release.Namespace }} -l app.kubernetes.io/name={{ include "agent-monitor.name" . }} -f
|
|
|
|
📈 Check Pods:
|
|
kubectl get pods -n {{ .Release.Namespace }} -l app.kubernetes.io/name={{ include "agent-monitor.name" . }}
|
|
|
|
{{- if .Values.persistence.enabled }}
|
|
|
|
💾 Persistent Storage:
|
|
SQLite data is stored on PVC: {{ $fullName }}-data ({{ .Values.persistence.size }})
|
|
{{- end }}
|
|
|
|
{{- if .Values.mcp.enabled }}
|
|
|
|
🔌 MCP Sidecar:
|
|
MCP server is running on port {{ .Values.mcp.port }}
|
|
Access via: kubectl port-forward -n {{ .Release.Namespace }} svc/{{ $fullName }} {{ .Values.mcp.port }}:{{ .Values.mcp.port }}
|
|
{{- end }}
|
|
|
|
{{- if .Values.autoscaling.enabled }}
|
|
|
|
📐 Autoscaling:
|
|
Min replicas: {{ .Values.autoscaling.minReplicas }}
|
|
Max replicas: {{ .Values.autoscaling.maxReplicas }}
|
|
CPU target: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}%
|
|
Memory target: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}%
|
|
{{- end }}
|
|
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|