Skip to content

About sand

sand is a small Go CLI and terminal UI that manages disposable development VMs for coding agents. 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: common dev tools, your git identity, and your choice of Claude Code, Codex, OpenCode, and Pi, installed fresh for each VM. 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 development VM for coding agents — 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