sdme requires Linux with systemd. On macOS, use lima-vm to run a Linux VM.
Prerequisites
brew install lima
VM setup
Create and start a VM with any systemd-based distro:
limactl create --name=ubuntu template:ubuntu
limactl start ubuntu
limactl shell ubuntu
Other distro templates are available via limactl create --list-templates.
Installing sdme
Inside the VM:
curl -fsSL https://sdme.io/install.sh | sudo sh
Verify the installation:
sdme --version
All sdme commands run inside the VM from this point.
Shell alias
For common operations like creating, joining, or stopping containers, you can add an alias to your shell profile so you don't have to enter the VM each time:
alias sdme='limactl shell ubuntu sudo sdme'
This lets you run commands like sdme new, sdme join, sdme ps, and sdme stop directly from the Mac terminal. Filesystem operations such as fs import, fs build, and cp also work fine through the alias.
The exception is fs export, which writes its output archive inside the VM. Run it from inside the VM (limactl shell ubuntu), then copy the archive out with limactl copy.
Known limitations
- Apple Silicon (M1/M2/M3/M4): The VM runs Linux on aarch64. Container images and binaries must support
arm64/aarch64. - File sharing: Lima mounts macOS directories into the VM by default. Bind mounts (
-b) pointing to lima-shared paths work, but file operations may be slower than native. - Networking: Lima forwards ports from the VM to macOS. Services running in host-network containers are accessible on
localhostfrom the Mac. Private-network containers require additional port forwarding configuration in the lima VM config.