Skip to content

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