Skip to content

Available Tools

Every sand VM clones a shared base containing development tools and runtimes. The selected coding agents are then installed at their current releases inside that individual VM, including on reset.

Container & local dev

Running a web server with these? Web Servers and Ports covers how to reach it from your browser — locally and on a remote profile.

Language runtimes

  • Node.js
  • Go
  • Python 3 (with uv)
  • A headless JDK

Coding agents

The create form offers four independent checkboxes: Install Claude Code, Install OpenAI Codex, Install OpenCode, and Install Pi. Select any combination, including none. All four start unselected; after creating a VM, sand remembers your choices across connection profiles. See Files and State for persistence and migration details.

Headless creation offers --with-claude, --with-codex, --with-opencode, and --with-pi; use =false to explicitly deselect an agent. Omitted agent flags use the remembered selection. Changing agents does not rebuild the shared base. Reset retains that VM's recorded selections, independently of the defaults for new VMs.

Claude Code terminal notifications

When creating or resetting a VM with Claude Code selected, sand detects the workstation terminal and sets Claude's native notification channel for iTerm2, Kitty, or Ghostty. Detection also checks terminal identifiers retained inside host tmux and its saved TERM_PROGRAM. If sand cannot identify a supported terminal, it leaves your existing notification preference unchanged.

The guest tmux configuration enables notification passthrough. If you also run sand inside host tmux, enable set -g allow-passthrough on in the host's ~/.tmux.conf and reload it with tmux source-file ~/.tmux.conf. iTerm2 additionally needs Notification Center Alerts and Send escape sequence-generated alerts enabled under its profile's Terminal settings. See Claude's terminal notification guide.

The channel reflects the terminal used during provisioning. If you later connect from a different terminal, change preferredNotifChannel in the guest's ~/.claude/settings.json to match it.

Git

The --with-* flags configure the shared base image. Changing a tool selection makes the next sand create update the base before cloning a VM. See the CLI reference.

Browser reviews

Every base image includes @self-review/serve. Run sand land NAME PATH --review to review a checkout's diff in your browser and save comments where the agent can read them. The server runs inside the VM and starts only when you open a review. See Reviewing changes in a browser.

An initial repository cloned during provisioning receives the matching agent skills automatically. For repositories cloned later, run self-review-install-skills /path/to/repository inside the VM.

Shell & utilities

  • tmux, direnv, jq, htop, and other common CLI tools
  • Per-user tmux, git, and bashrc configuration, deployed automatically

Sessions survive disconnecting

systemd linger is enabled for the VM's user, so a detached tmux session — and anything running inside it, including a Claude Code session — keeps running after you disconnect.