{ "name": "Claude Code OCaml Sandbox", "image": "ghcr.io/avsm/claude-ocaml-devcontainer:main", "runArgs": [ "--cap-add=NET_ADMIN", "--cap-add=NET_RAW" ], "customizations": { "vscode": { "extensions": [ "anthropic.claude-code", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", "eamodio.gitlens", "ocamllabs.ocaml-platform" ], "settings": { "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }, "terminal.integrated.defaultProfile.linux": "zsh", "terminal.integrated.profiles.linux": { "bash": { "path": "bash", "icon": "terminal-bash" }, "zsh": { "path": "zsh" } } } } }, "remoteUser": "node", "mounts": [ "source=claude-code-bashhistory-${devcontainerId},target=/commandhistory,type=volume", "source=${localEnv:HOME}/.claude,target=/home/node/.claude,type=bind", "source=${localEnv:HOME}/.config/poe,target=/home/node/.config/poe,type=bind", "source=${localEnv:HOME}/.ssh,target=/home/node/.ssh,type=bind,readonly", "source=${localEnv:HOME}/.gitconfig,target=/home/node/.gitconfig,type=bind,readonly" ], "containerEnv": { "NODE_OPTIONS": "--max-old-space-size=4096", "CLAUDE_CONFIG_DIR": "/home/node/.claude", "POWERLEVEL9K_DISABLE_GITSTATUS": "true" }, "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated", "workspaceFolder": "/workspace", "postCreateCommand": "sudo /usr/local/bin/init-firewall.sh && opam repo add -y aoah git+https://tangled.org/anil.recoil.org/aoah-opam-repo && opam install -y monopam && cd /workspace && opam install -y .", "waitFor": "postStartCommand" }