Comment by ammmir

3 months ago

congrats on the open sourcing and launching! beyond the desire to run VMs in "1 command", i don't quite get the reasoning behind this project. could you elucidate? like, besides running macOS VMs, how is it different from lima, colima, and friends? the name lume is quite unfortunate.

the hard part about running VMs isn't really how to launch them (well, ahem, i'm looking at you, qemu), but getting data in and out, and controlling them. some feature requests, if i may ;)

    # take screenshot
    # this should do the right thing(TM) and take a screenshot of the logged-in user session, which may not necessarily be the console
    lume screenshot <vm name> [-o <file.png> | -]

    # execute command
    lume exec <vm name> [--as-user <user>] <command> [args]

    # copy files in and out
    lume cp <vm name>:<vm path> <local path>
    lume cp <local path> <vm name>:<vm path>

    # run clone as new VM
    # this should appropriately roll the MAC address, IPs, and reseed any RNGs, of course
    lume run --clone <clone name> <vm name>

Can you clone a VM while it's running?

The ability to resume a VM within < 1 second would be useful for on-demand workflows without waiting for a full VM bootup sequence, similar to how you can get a firecracker microVM into the state you want, snapshot it.. then clone as you wish, and resume back into the guest.

You may need to preinstall an agent (a la Parallel/VMware Tools) to make sure this is seamless and fast.

Thanks for the feedback! I actually went into more detail about the project's reasoning and how it compares to lima/tart in another comment.

Interestingly, we left out the screenshot and exec features from this initial release so the CLI wouldn’t get too cluttered. We’re rolling out another update next week that will let you request screenshots programmatically, stream the VNC session in your browser via noVNC, run commands remotely over SSH, add clipboard support (finally!), and more.

As for cloning, you can indeed clone a running VM. However, suspending a VM isn’t supported in this release yet, even though it’s possible with the Apple Virtualization.framework. I’ll open an issue to track that work. Thanks again for the suggestions!