Inside the VM
Every Sandbox VM ships with the same stack, kept in sync by the platform team. Don’t apt install extra tooling without a reason — VMs are periodically refreshed and you’ll lose system-level additions.
The pre-installed stack
| Tool | What it’s for |
|---|---|
| Claude Code | The AI assistant. Invoke as claude. Routes through Vertex AI. |
| Docker | Run containers — local Postgres, Redis, etc. for development. |
| Node + pnpm | JavaScript / TypeScript. pnpm for new projects (faster, less disk); npm for repos with an existing package-lock.json. |
| uv + Python 3.12 | Fast Python package + project manager. Use uv venv for isolated envs; prefer uv over pip. |
| Playwright | Browser automation. Chromium pre-installed. |
| Git + gh | Version control + GitHub CLI. Usually pre-authenticated. |
What persists across VM refreshes
| Persists | Doesn’t |
|---|---|
Files under ~/ | System-level sudo apt installs |
~/.config/, ~/.zshrc, ~/.gitconfig | Docker images you pulled |
Cloned git repos in ~/ | /tmp, /var/tmp |
Rule of thumb: keep everything you care about under ~/ and treat the rest as ephemeral. If you find yourself re-installing the same tool every refresh, ask the platform team to add it to the base image.
What’s deliberately not there
- No GPU — Claude is hosted, use it.
- No GUI / X11 — pure terminal.
- No browser binary for daily browsing — Chromium is for Playwright only.
- No IDE — work via
claude. Most colleagues find they don’t need one once they’re using Claude Code well.
Forwarded ports
Bind a dev server to any port on the VM and it appears at the same port on your Mac’s localhost within a second. Up to 16 simultaneous. See Daily use → port forwarding.