Using sdme on macOS

Set up a Linux VM with lima-vm to run sdme on your Mac.

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 localhost from the Mac. Private-network containers require additional port forwarding configuration in the lima VM config.