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.
313 lines
8.9 KiB
YAML
313 lines
8.9 KiB
YAML
# =============================================================================
|
|
# Claude Code Agent Monitor - Default Helm Values
|
|
# =============================================================================
|
|
# Override these values per environment using values-dev.yaml, values-staging.yaml,
|
|
# or values-production.yaml.
|
|
|
|
# -- Number of pod replicas
|
|
replicaCount: 2
|
|
|
|
# -- Container image configuration
|
|
image:
|
|
registry: ghcr.io
|
|
repository: smartgift/claude-code-monitor
|
|
tag: "" # Defaults to .Chart.AppVersion if empty
|
|
pullPolicy: IfNotPresent
|
|
|
|
# -- Image pull secrets for private registries
|
|
imagePullSecrets: []
|
|
|
|
# -- Override the release name
|
|
nameOverride: ""
|
|
# -- Override the full release name
|
|
fullnameOverride: ""
|
|
|
|
# =============================================================================
|
|
# Service Account
|
|
# =============================================================================
|
|
serviceAccount:
|
|
# -- Whether to create a ServiceAccount
|
|
create: true
|
|
# -- Annotations to add to the ServiceAccount
|
|
annotations: {}
|
|
# -- The name of the ServiceAccount (auto-generated if empty)
|
|
name: ""
|
|
# -- Automount API credentials
|
|
automountServiceAccountToken: false
|
|
|
|
# =============================================================================
|
|
# Pod Configuration
|
|
# =============================================================================
|
|
|
|
# -- Annotations to add to pods
|
|
podAnnotations: {}
|
|
|
|
# -- Labels to add to pods
|
|
podLabels: {}
|
|
|
|
# -- Pod-level security context
|
|
podSecurityContext:
|
|
runAsNonRoot: true
|
|
runAsUser: 1000
|
|
runAsGroup: 1000
|
|
fsGroup: 1000
|
|
fsGroupChangePolicy: OnRootMismatch
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
|
|
# -- Container-level security context
|
|
securityContext:
|
|
runAsNonRoot: true
|
|
readOnlyRootFilesystem: true
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
|
|
# =============================================================================
|
|
# Deployment Strategy
|
|
# =============================================================================
|
|
deployment:
|
|
strategy:
|
|
type: RollingUpdate
|
|
rollingUpdate:
|
|
maxSurge: 1
|
|
maxUnavailable: 0
|
|
|
|
# =============================================================================
|
|
# Service
|
|
# =============================================================================
|
|
service:
|
|
# -- Service type (ClusterIP, NodePort, LoadBalancer)
|
|
type: ClusterIP
|
|
# -- Service port (external)
|
|
port: 80
|
|
# -- Container port the application listens on
|
|
targetPort: 4820
|
|
# -- Node port (only used when type is NodePort)
|
|
nodePort: ""
|
|
# -- Additional service annotations
|
|
annotations: {}
|
|
|
|
# =============================================================================
|
|
# Ingress
|
|
# =============================================================================
|
|
ingress:
|
|
# -- Enable ingress resource
|
|
enabled: false
|
|
# -- Ingress class name (e.g. nginx, traefik, alb)
|
|
className: ""
|
|
# -- Ingress annotations
|
|
annotations: {}
|
|
# nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
|
|
# nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
|
|
# nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
|
|
# nginx.ingress.kubernetes.io/proxy-set-headers: "Upgrade=$http_upgrade,Connection=upgrade"
|
|
# -- Ingress host definitions
|
|
hosts:
|
|
- host: agent-monitor.local
|
|
paths:
|
|
- path: /
|
|
pathType: Prefix
|
|
# -- TLS configuration
|
|
tls: []
|
|
# - secretName: agent-monitor-tls
|
|
# hosts:
|
|
# - agent-monitor.local
|
|
|
|
# =============================================================================
|
|
# Resource Limits
|
|
# =============================================================================
|
|
resources:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 128Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 512Mi
|
|
|
|
# =============================================================================
|
|
# Autoscaling (HPA)
|
|
# =============================================================================
|
|
autoscaling:
|
|
# -- Enable Horizontal Pod Autoscaler
|
|
enabled: true
|
|
# -- Minimum number of replicas
|
|
minReplicas: 2
|
|
# -- Maximum number of replicas
|
|
maxReplicas: 10
|
|
# -- Target CPU utilization percentage
|
|
targetCPUUtilizationPercentage: 70
|
|
# -- Target memory utilization percentage
|
|
targetMemoryUtilizationPercentage: 80
|
|
# -- Scale-down stabilization window (seconds)
|
|
scaleDownStabilizationWindowSeconds: 300
|
|
|
|
# =============================================================================
|
|
# Persistence (SQLite database)
|
|
# =============================================================================
|
|
persistence:
|
|
# -- Enable persistent storage for SQLite data
|
|
enabled: true
|
|
# -- Storage class name (empty string uses default)
|
|
storageClass: ""
|
|
# -- Access modes for the PVC
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
# -- Size of the persistent volume
|
|
size: 10Gi
|
|
# -- Annotations for the PVC
|
|
annotations: {}
|
|
# -- Use an existing PVC instead of creating one
|
|
existingClaim: ""
|
|
|
|
# =============================================================================
|
|
# Scheduling
|
|
# =============================================================================
|
|
|
|
# -- Node selector for pod placement
|
|
nodeSelector: {}
|
|
|
|
# -- Tolerations for pod placement
|
|
tolerations: []
|
|
|
|
# -- Affinity rules for pod placement
|
|
affinity: {}
|
|
|
|
# -- Topology spread constraints
|
|
topologySpreadConstraints: []
|
|
|
|
# =============================================================================
|
|
# Environment Variables
|
|
# =============================================================================
|
|
env:
|
|
# -- Node.js environment
|
|
NODE_ENV: production
|
|
# -- Port the dashboard server listens on (must match service.targetPort)
|
|
DASHBOARD_PORT: "4820"
|
|
# -- Log level (debug, info, warn, error)
|
|
LOG_LEVEL: info
|
|
|
|
# -- Additional environment variables as key-value pairs
|
|
extraEnv: {}
|
|
# MY_CUSTOM_VAR: my-value
|
|
|
|
# -- Extra environment variables from secrets or configmaps
|
|
extraEnvFrom: []
|
|
# - secretRef:
|
|
# name: my-secret
|
|
# - configMapRef:
|
|
# name: my-configmap
|
|
|
|
# =============================================================================
|
|
# Health Probes
|
|
# =============================================================================
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /api/health
|
|
port: http
|
|
initialDelaySeconds: 30
|
|
periodSeconds: 15
|
|
timeoutSeconds: 5
|
|
failureThreshold: 3
|
|
successThreshold: 1
|
|
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /api/health
|
|
port: http
|
|
initialDelaySeconds: 5
|
|
periodSeconds: 10
|
|
timeoutSeconds: 3
|
|
failureThreshold: 3
|
|
successThreshold: 1
|
|
|
|
startupProbe:
|
|
httpGet:
|
|
path: /api/health
|
|
port: http
|
|
initialDelaySeconds: 5
|
|
periodSeconds: 5
|
|
timeoutSeconds: 3
|
|
failureThreshold: 30
|
|
successThreshold: 1
|
|
|
|
# =============================================================================
|
|
# Pod Disruption Budget
|
|
# =============================================================================
|
|
podDisruptionBudget:
|
|
# -- Enable PodDisruptionBudget
|
|
enabled: true
|
|
# -- Minimum available pods during voluntary disruptions
|
|
minAvailable: 1
|
|
# -- Maximum unavailable pods (alternative to minAvailable)
|
|
# maxUnavailable: 1
|
|
|
|
# =============================================================================
|
|
# Network Policy
|
|
# =============================================================================
|
|
networkPolicy:
|
|
# -- Enable NetworkPolicy
|
|
enabled: true
|
|
# -- Additional ingress rules
|
|
additionalIngressRules: []
|
|
# -- Additional egress rules
|
|
additionalEgressRules: []
|
|
|
|
# =============================================================================
|
|
# MCP Sidecar (Model Context Protocol server)
|
|
# =============================================================================
|
|
mcp:
|
|
# -- Enable MCP sidecar container
|
|
enabled: false
|
|
image:
|
|
registry: ghcr.io
|
|
repository: smartgift/claude-code-monitor-mcp
|
|
tag: "" # Defaults to .Chart.AppVersion if empty
|
|
pullPolicy: IfNotPresent
|
|
# -- MCP HTTP transport port
|
|
port: 8819
|
|
# -- Resource limits for MCP sidecar
|
|
resources:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 64Mi
|
|
limits:
|
|
cpu: 200m
|
|
memory: 256Mi
|
|
# -- MCP environment variables
|
|
env:
|
|
MCP_TRANSPORT: http
|
|
MCP_PORT: "8819"
|
|
DASHBOARD_URL: "http://localhost:4820"
|
|
# -- Container security context for MCP
|
|
securityContext:
|
|
runAsNonRoot: true
|
|
readOnlyRootFilesystem: true
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
|
|
# =============================================================================
|
|
# Monitoring
|
|
# =============================================================================
|
|
monitoring:
|
|
# -- Enable Prometheus monitoring
|
|
enabled: false
|
|
serviceMonitor:
|
|
# -- Enable ServiceMonitor resource (requires Prometheus Operator)
|
|
enabled: false
|
|
# -- Namespace for the ServiceMonitor (defaults to release namespace)
|
|
namespace: ""
|
|
# -- Additional labels for the ServiceMonitor
|
|
labels: {}
|
|
# -- Scrape interval
|
|
interval: 30s
|
|
# -- Scrape timeout
|
|
scrapeTimeout: 10s
|
|
# -- Metric path
|
|
path: /api/metrics
|
|
# -- Honor labels from the target
|
|
honorLabels: false
|