Remote Developer - Claude Code instances in isolated Kubernetes pods
Go to file
jordan b6e778d5ab
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
fix(git): harden git flow for concurrent SDLC stress test failures
5 fixes from stress test analysis:

1. CRITICAL: Add pull-before-push to claudebox GitOperations.CommitAndPush,
   matching the fix already in PodGitOperations (prevents push rejections
   when concurrent builds advance the remote).

2. HIGH: Extract ResetToMain into PodGitOperations as a shared public method.
   Wire into BuildExecutor after CloneRepo and update SDLCTaskExecutor to
   use the shared method. Prevents builds from running on wrong branch when
   worker pods are reused across tasks.

3. HIGH: Make branch create push failure fatal with retry+rollback in
   cmd/sdlc/cmd_branch.go. Prevents orphaned .sdlc/ state that causes
   merge failures after completing all 10 SDLC phases.

4. MEDIUM: Shell-escape token in credential helpers (both PodGitOperations
   and claudebox GitOperations) to prevent shell injection via tokens
   containing special characters.

5. MEDIUM: Add GitResetToMain to claudebox sidecar (git.go implementation,
   server.go endpoint, client.go HTTP method) and wire into
   HTTPSDLCTaskExecutor for the HTTP sidecar path.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 20:57:27 -07:00
.claude/guides fix(templates): harden component CI steps and compile regexes 2026-02-09 19:36:23 -07:00
ai-lookup feat: add RWX storage class and full SDLC lifecycle cookbook 2026-02-06 11:37:57 -07:00
changelog release: v0.10.56 - fix: worker template unused pkg/config import 2026-02-05 13:46:45 -07:00
cmd fix(git): harden git flow for concurrent SDLC stress test failures 2026-02-10 20:57:27 -07:00
cookbooks fix(cookbook): use skeleton template for foundary monorepo project 2026-02-10 18:25:10 -07:00
deployments/k8s/base fix(rbac): grant woodpecker-deployer access to statefulsets 2026-02-09 19:35:28 -07:00
docs feat(foundary): implement complete backend for conversational project design 2026-02-09 00:50:46 -07:00
examples/dashboard-app feat: complete template upgrade - chassis framework, UI library, auth, app-nextjs, OpenAPI, and cookbook 2026-02-02 00:46:51 -07:00
history docs: add v0.5.0 history - API key authentication 2026-01-24 23:48:43 -07:00
ideas/aeres feat: add structured logging infrastructure and SDLC extensions 2026-02-04 22:56:04 -07:00
internal fix(git): harden git flow for concurrent SDLC stress test failures 2026-02-10 20:57:27 -07:00
pkg/api feat: complete template upgrade - chassis framework, UI library, auth, app-nextjs, OpenAPI, and cookbook 2026-02-02 00:46:51 -07:00
scripts feat: enterprise worker pool with HTTP sidecar pattern 2026-02-05 16:21:11 -07:00
tests/e2e feat: Implement hexagonal architecture with services, webhooks, queue, and telemetry 2026-01-25 19:57:46 -07:00
.env.local.example feat: add local development environment 2026-01-25 00:07:02 -07:00
.gitignore fix: worker graceful shutdown and RWO PVC compatibility 2026-02-06 00:35:00 -07:00
.gitkeep-ci chore: trigger CI rebuild 2026-02-07 13:32:31 -07:00
.golangci.yml feat: Add infrastructure adapters for threesix.ai 2026-01-25 22:49:58 -07:00
.woodpecker.yml fix(ci): re-enable claudebox Kaniko cache after registry cleanup 2026-02-09 20:55:13 -07:00
aeries-preparation-thoughts.md feat: add structured logging infrastructure and SDLC extensions 2026-02-04 22:56:04 -07:00
app-vision-gaps.md feat: enterprise worker pool with HTTP sidecar pattern 2026-02-05 16:21:11 -07:00
app-vision-roadmap.md feat: enterprise worker pool with HTTP sidecar pattern 2026-02-05 16:21:11 -07:00
app-vision.md feat: enterprise worker pool with HTTP sidecar pattern 2026-02-05 16:21:11 -07:00
CHANGELOG.md feat: Implement hexagonal architecture with services, webhooks, queue, and telemetry 2026-01-25 19:57:46 -07:00
CLAUDE.md feat: label-based undeploy, GC reconciliation, checkout/sessions, pool status 2026-02-09 19:11:28 -07:00
CODING_GUIDELINES.md feat: Add multi-provider code agent interface with Claude Code and OpenCode adapters 2026-01-27 09:25:51 -07:00
docker-compose.yaml feat: add local development environment 2026-01-25 00:07:02 -07:00
Dockerfile fix: worker graceful shutdown and RWO PVC compatibility 2026-02-06 00:35:00 -07:00
Dockerfile.api feat: Implement hexagonal architecture with services, webhooks, queue, and telemetry 2026-01-25 19:57:46 -07:00
Dockerfile.api.prebuild feat: Implement hexagonal architecture with services, webhooks, queue, and telemetry 2026-01-25 19:57:46 -07:00
Dockerfile.worker feat: enterprise worker pool with HTTP sidecar pattern 2026-02-05 16:21:11 -07:00
go.mod fix(templates): upgrade Go to 1.25 and fix Woodpecker syntax 2026-02-08 23:57:38 -07:00
go.sum fix(templates): upgrade Go to 1.25 and fix Woodpecker syntax 2026-02-08 23:57:38 -07:00
IMPLEMENTATION_PLAN_V2.md feat: Implement hexagonal architecture with services, webhooks, queue, and telemetry 2026-01-25 19:57:46 -07:00
IMPLEMENTATION_PLAN.md docs: add hexagonal architecture implementation plan 2026-01-25 00:15:46 -07:00
Makefile feat: add local development environment 2026-01-25 00:07:02 -07:00
PLAN.md feat: Implement v0.2-v0.4 (workspaces, git, API) 2026-01-24 21:07:00 -07:00
QUICKSTART.md feat: add local development environment 2026-01-25 00:07:02 -07:00
README.md feat: Add claude-config API, security hardening, and testing infrastructure 2026-01-25 01:29:13 -07:00
vision.md feat: fix composable monorepo CI builds + health endpoint improvements 2026-02-03 18:46:51 -07:00

rdev - Remote Developer

Run Claude Code in isolated Kubernetes pods on your k3s cluster.

Quick Start

# 1. Set kubeconfig (REQUIRED - this is k3s, not GKE)
export KUBECONFIG=~/.kube/orchard9-k3sf.yaml

# 2. Authenticate Claude locally (if not already)
claude

# 3. Create credentials secret
./scripts/create-credentials-secret.sh

# 4. Deploy
./scripts/deploy.sh

# 5. Verify
./scripts/verify.sh

Usage

# Check Claude version
kubectl exec -n rdev claudebox-0 -- claude --version

# Interactive Claude session
kubectl exec -it -n rdev claudebox-0 -- claude "what can you help me with?"

# Run in workspace
kubectl exec -it -n rdev claudebox-0 -- bash
cd /workspace
claude "create a hello world go program"

Architecture

k3s cluster
└── rdev namespace
    └── claudebox-0 (StatefulSet)
        ├── Claude Code CLI
        ├── /workspace (20Gi PVC via Longhorn)
        └── /root/.claude (credentials from secret)

Roadmap

  • v0.1: Base case - single claudebox pod
  • v0.2: Real workspace mounting (pantheon, aeries)
  • v0.3: Git integration (push/pull)
  • v0.4: Discord bot control
  • v0.5: Streaming output
  • v0.6: Multi-project routing

Development

# Build image locally
docker build -t rdev-claudebox:dev .

# Build and push to Artifact Registry
./scripts/build-push.sh v0.1.0

Troubleshooting

# Check pod status
kubectl get pods -n rdev

# View pod logs
kubectl logs claudebox-0 -n rdev

# Describe pod for events
kubectl describe pod claudebox-0 -n rdev

# Check credentials mount
kubectl exec -n rdev claudebox-0 -- ls -la /root/.claude/