Skip to content

Instantly share code, notes, and snippets.

@suvl
Created May 26, 2026 09:04
Show Gist options
  • Select an option

  • Save suvl/332cc5b3e088bedff56d0c6933001026 to your computer and use it in GitHub Desktop.

Select an option

Save suvl/332cc5b3e088bedff56d0c6933001026 to your computer and use it in GitHub Desktop.
node devcontainer with AI harness tooling
{
"name": "FE+BE Development Container",
"image": "mcr.microsoft.com/devcontainers/javascript-node:24-bookworm",
// Configure tool-specific properties.
"customizations": {
"vscode": {
"settings": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"]
},
"extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"bradlc.vscode-tailwindcss",
"vitest.explorer",
"drizzle-team.drizzle-journal"
]
}
},
// Enable host.docker.internal resolution on Linux hosts (native on macOS/Windows)
"runArgs": ["--add-host=host.docker.internal:host-gateway"],
// Use 'postCreateCommand' to run commands after the container is created.
// We use sudo corepack enable to ensure the symlinks can be created in /usr/local/bin.
"postCreateCommand": "sudo corepack enable && pnpm install && sudo npm install -g opencode-ai @google/gemini-cli @github/copilot && curl -fsSL https://antigravity.google/cli/install.sh | bash",
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "node",
// Add the local bin path to PATH so agy is accessible
"remoteEnv": {
"PATH": "${containerEnv:PATH}:/home/node/.local/bin"
},
// Share auth and configuration directories between host and container
"mounts": [
"source=${localEnv:HOME}/.config/opencode,target=/home/node/.config/opencode,type=bind,consistency=cached",
"source=${localEnv:HOME}/.local/share/opencode,target=/home/node/.local/share/opencode,type=bind,consistency=cached",
"source=${localEnv:HOME}/.gemini,target=/home/node/.gemini,type=bind,consistency=cached",
"source=${localEnv:HOME}/.config/gh,target=/home/node/.config/gh,type=bind,consistency=cached",
"source=${localEnv:HOME}/.copilot,target=/home/node/.copilot,type=bind,consistency=cached",
"source=${localEnv:HOME}/.config/gcloud,target=/home/node/.config/gcloud,type=bind,consistency=cached"
],
// Forward credential/token environment variables if they are set on the host
"containerEnv": {
"GEMINI_API_KEY": "${localEnv:GEMINI_API_KEY}",
"COPILOT_GITHUB_TOKEN": "${localEnv:COPILOT_GITHUB_TOKEN}",
"GH_TOKEN": "${localEnv:GH_TOKEN}",
"GITHUB_TOKEN": "${localEnv:GITHUB_TOKEN}"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment