rdev/deployments/k8s/base/claudebox.yaml
jordan a8c8a0a14d
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
feat: add GCS-based persistent media storage, AI generation pipeline, and composable skeleton packages
Adds complete media storage pipeline with GCS presigned uploads, AI image/video/text generation
via queue-based workers, realtime SSE event streaming, and comprehensive skeleton packages
(storage, mediagen, textgen, generation, realtime, persona, routing, ai-client). Includes
security fixes for media delete authorization, nil pointer guards in handlers, video persistence
via download-then-upload, consistent signed URLs, and Image→ImageIcon rename to avoid DOM collision.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 21:29:09 -07:00

112 lines
2.9 KiB
YAML

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: claudebox
namespace: rdev
labels:
app.kubernetes.io/name: claudebox
app.kubernetes.io/part-of: rdev
spec:
serviceName: claudebox
replicas: 1
selector:
matchLabels:
app: claudebox
template:
metadata:
labels:
app: claudebox
app.kubernetes.io/name: claudebox
app.kubernetes.io/part-of: rdev
rdev.orchard9.ai/role: worker
# Citadel agent routes these logs to the rdev-platform environment
citadel.io/environment: rdev-platform
citadel.io/service: claudebox
spec:
containers:
- name: claudebox
image: registry.threesix.ai/rdev/claudebox:latest
imagePullPolicy: Always
env:
# Claude Code Telemetry - exports to OTEL collector
- name: CLAUDE_CODE_ENABLE_TELEMETRY
value: "1"
- name: OTEL_METRICS_EXPORTER
value: "otlp"
- name: OTEL_LOGS_EXPORTER
value: "otlp"
- name: OTEL_EXPORTER_OTLP_PROTOCOL
value: "grpc"
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "otel-collector.observability.svc.cluster.local:4317"
- name: OTEL_SERVICE_NAME
value: "claudebox-standalone"
- name: OTEL_METRIC_EXPORT_INTERVAL
value: "10000"
- name: OTEL_LOGS_EXPORT_INTERVAL
value: "5000"
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "2"
memory: "4Gi"
volumeMounts:
# Workspace for projects
- name: workspace
mountPath: /workspace
# Claude config directory (persistent for auth)
- name: claude-config
mountPath: /root/.claude
# Simple liveness check - container is running
livenessProbe:
exec:
command:
- cat
- /healthcheck.sh
initialDelaySeconds: 5
periodSeconds: 60
# Readiness - claude CLI is available
readinessProbe:
exec:
command:
- claude
- --version
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 10
volumes:
- name: workspace
persistentVolumeClaim:
claimName: claudebox-workspace
- name: claude-config
persistentVolumeClaim:
claimName: claudebox-claude-config
---
# Headless service for StatefulSet
apiVersion: v1
kind: Service
metadata:
name: claudebox
namespace: rdev
labels:
app.kubernetes.io/name: claudebox
app.kubernetes.io/part-of: rdev
spec:
clusterIP: None
selector:
app: claudebox
ports:
- port: 8080
name: http