feat: Claude Code Monitor — lanes, pipelines and a merged workspace

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.
This commit is contained in:
2026-07-29 17:07:45 +07:00
commit 57dc91585d
783 changed files with 221743 additions and 0 deletions
@@ -0,0 +1,69 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: agent-monitor
namespace: agent-monitor
spec:
template:
spec:
containers:
- name: mcp-sidecar
image: ${IMAGE_REGISTRY}/agent-monitor-mcp:${IMAGE_TAG}
imagePullPolicy: IfNotPresent
ports:
- name: mcp
containerPort: 8819
protocol: TCP
env:
- name: MCP_TRANSPORT
value: "http"
- name: MCP_DASHBOARD_BASE_URL
value: "http://localhost:4820"
- name: MCP_PORT
value: "8819"
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "256Mi"
cpu: "250m"
startupProbe:
tcpSocket:
port: mcp
failureThreshold: 30
periodSeconds: 2
readinessProbe:
tcpSocket:
port: mcp
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
tcpSocket:
port: mcp
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
securityContext:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 1000
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
volumeMounts:
- name: tmp
mountPath: /tmp
@@ -0,0 +1,11 @@
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
metadata:
name: mcp-sidecar
patches:
- path: deployment-patch.yaml
target:
kind: Deployment
name: agent-monitor
@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
metadata:
name: monitoring
resources:
- servicemonitor.yaml
@@ -0,0 +1,31 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: agent-monitor
namespace: agent-monitor
labels:
app.kubernetes.io/name: agent-monitor
app.kubernetes.io/instance: agent-monitor
app.kubernetes.io/version: "1.0.0"
app.kubernetes.io/component: monitoring
app.kubernetes.io/managed-by: kustomize
# Common label for Prometheus Operator discovery
release: prometheus
spec:
selector:
matchLabels:
app.kubernetes.io/name: agent-monitor
app.kubernetes.io/instance: agent-monitor
namespaceSelector:
matchNames:
- agent-monitor
endpoints:
- port: http
path: /api/health
interval: 30s
scrapeTimeout: 10s
honorLabels: true
metricRelabelings:
- sourceLabels: [__name__]
regex: "(http_requests_total|http_request_duration_.*|nodejs_.*|process_.*)"
action: keep