A Lima-based development VM setup for creating isolated, reproducible development environments. This sandbox comes pre-configured with essential development tools, Docker, and version managers.
- Ubuntu 24.04 LTS base image (ARM64)
- Docker with Docker Compose
- mise version manager with configurable tools (Python, Node.js, etc.)
- OpenCode AI coding assistant
- Rosetta 2 support for x86 compatibility on Apple Silicon
- Shared directory mounting for seamless file access
brew install limasudo port install limabrew install lima# Download the latest release
VERSION=$(curl -fsSL https://api.github.com/repos/lima-vm/lima/releases/latest | jq -r .tag_name)
curl -fsSL "https://github.com/lima-vm/lima/releases/download/${VERSION}/lima-${VERSION:1}-$(uname -s)-$(uname -m).tar.gz" | sudo tar Cxzf /usr/local -
# Verify installation
limactl --versionlimactl --version
lima --versionEdit sandbox.yaml to adjust resources:
cpus: 8 # Number of CPU cores
memory: "16GiB" # RAM allocation
disk: "120GiB" # Disk sizeUpdate the provision section in sandbox.yaml with your git credentials:
provision:
- mode: user
script: |
#!/bin/bash
GIT_NAME="Your Name"
GIT_EMAIL="your@email.com"
WORKING_DIR="/home/ciphercell/projects"
bash /home/ciphercell/projects/ai_sandbox/setup-vm.sh "$GIT_NAME" "$GIT_EMAIL" "$WORKING_DIR"Configure mount points in sandbox.yaml:
mounts:
- location: "~/Code/ciphercell" # Host directory
mountPoint: "/home/ciphercell/projects" # Guest directory
writable: trueEdit mise-tools.conf to specify which tools to install:
python@latest
node@lts
go@latest
rust@stable
# Create the VM from the sandbox configuration
limactl create --name=sandbox sandbox.yaml
# Start the VM
limactl start --progress sandbox# Open a shell in the VM
limactl shell sandbox
# Or use the lima shortcut (if sandbox is the default)
lima# List all VMs
limactl list
# Stop the VM
limactl stop sandbox
# Start a stopped VM
limactl start sandbox
# Restart the VM
limactl stop sandbox && limactl start sandbox
# Delete the VM (destructive!)
limactl delete sandbox
# Delete with force (if VM is running)
limactl delete --force sandbox# Run a single command in the VM
limactl shell sandbox -- docker ps
limactl shell sandbox -- python --version
# Or with lima shortcut
lima docker psai_sandbox/
├── README.md # This file
├── sandbox.yaml # Lima VM configuration
├── setup-vm.sh # Provisioning script (runs on first boot)
└── mise-tools.conf # Development tools configuration
# Check VM status and logs
limactl list
limactl logs sandboxLog out and back in to the VM for docker group membership to take effect:
limactl stop sandbox
limactl start sandbox
limactl shell sandboxlimactl delete --force sandbox
limactl start --name=sandbox sandbox.yamllimactl shell sandbox
cat /var/log/cloud-init-output.logUncomment and configure in sandbox.yaml to expose ports:
portForwards:
- guestPort: 8080
hostPort: 8080
- guestPort: 3000
hostPort: 3000