Skip to content

Devcontainer

Defined in .devcontainer/devcontainer.json, built from .devcontainer/Dockerfile. The repo mounts at /workspace; every recipe assumes that path.

Versions are ARGs at the top of the Dockerfile.

ToolUsed for
Go, Delve, gofumpt, golangci-lintCDK8s and Pulumi code
Pulumijust core …
cdk8s CLIcdk8s import
talosctl, kubectl, helmCluster operations
just, yqRecipes and reading config/
Node.js (nvm), BunDocs site and tooling
kubesealSealed Secrets CLI
Docker CLIDocker-outside-of-Docker feature, for just build-push and secret scans
Claude CodeCoding assistant; postCreate.sh installs its plugins

sops and age are not in the image: recipes that decrypt (just core, just create-secrets) need them on the host or installed separately, with the age key at ~/.config/sops/age/keys.txt.

runArgs: --network=host, so Pulumi and talosctl reach Proxmox and the cluster directly.

Host pathContainer pathNotes
~/.ssh/id_ed25519{,.pub}/home/vscode/.ssh/Read-only; SSH to the VPS
~/.kube/home/vscode/.kubekubeconfig
~/.claude.json, ~/.claude/settings.json, ~/.claude/projects/home/vscode/.claude…Claude Code config and history
volume vscode-claude-plugins/home/vscode/.claude/pluginsPersists across rebuilds
volume vscode-go-modules/home/vscode/go/pkg/modGo module cache
VariableValue
TALOSCONFIG/workspace/core/talosconfig
KUBECONFIG/workspace/core/kubeconfig
GOPATH/home/vscode/go
PULUMI_SKIP_UPDATE_CHECKtrue
LOCAL_WORKSPACE_FOLDER, HOST_HOMEHost paths, for scripts

postCreate.sh adds vscode to the docker group, fixes .claude ownership, prints the cdk8s, Pulumi and talosctl versions, and installs the Claude plugins. Host needs 2+ CPUs and 4 GB+ RAM.