About sand
sand is a small Go CLI and terminal UI that manages disposable Claude
Code development VMs. Run it with no
arguments for an interactive board of your VMs, or drive it headlessly
(sand create, sand shell) from scripts and CI.
Each VM is a fresh, isolated Debian environment with a specific, opinionated stack baked in: Claude Code, common dev tools, and your git identity. You get a disposable place to point an agent at a repository without touching your host machine, and you throw the VM away — or recreate it — when you're done.
Locally or remotely
A VM doesn't have to run on the machine in front of you. sand runs VMs in
three places, and the commands and keybindings are the same in all three:
| Where | What it uses | What you need |
|---|---|---|
| Your own machine | Lima | Nothing beyond installing sand |
| Another machine, over SSH | Lima on that machine | Passwordless SSH and Lima on the far end |
| A Proxmox VE host | The Proxmox REST API | A pool-scoped API token (setup) |
Each place you add is a named Connection Profile, and every enabled profile is live at once — the board shows a laptop's VMs and a server's VMs side by side. See Where VMs Run.
What it is not
sand is not a general-purpose VM manager. It doesn't manage arbitrary
guest OSes, arbitrary provisioning recipes, or long-lived infrastructure. It
manages one kind of thing — a Claude Code development VM — well, and leaves
everything else to the tools underneath it.
sand is the Go successor to what used to be a shell script plus a
standalone Ansible playbook.
Where to go next
- Installation — install
sandand its one prerequisite. - Your First VM — the 30-second path to a running VM.
- How Provisioning Works — the base-image/clone/finalize model that makes each VM fast to create.
- Where VMs Run — putting VMs on another machine.