Skip to main content
The smolvm machine provider reaches a running smolvm microVM, by name, and the machine runtime runs captured programs in it. Each machine has its own guest kernel, on macOS, Linux and Windows. You create and start the machine; Mirage only runs programs in it. Python SDK and Node.

Installation

Install the smolvm CLI. Create and start a machine from an image that has what connecting the workspace needs:

Usage

captures defaults to @external: every program Mirage does not have itself. Name @python to run Python in the machine too.

Connecting the workspace

A program in the machine opens workspace files at the same paths as in Mirage, so the machine must see the mounts there. mount_type picks how, as for Docker: ssh serves every mount over smolvm machine exec (the guest needs sshfs), fuse leaves them to a Mirage inside, and both mixes the two. For fuse, use the machine image, which carries Mirage and fuse3. Write the same mounts at the same paths into sandbox.yaml, put it in the machine (in its image, or a directory passed with --volume), and start Mirage with it:
  • This workspace’s mount modes and permissions do not reach those files; sandbox.yaml decides.
  • Keep the machine’s paths in step with the host’s mounts yourself.

Runtime behavior

Notes

  • The machine must be running. Start a stopped or created machine, or clone a frozen machine before using it. Mirage cannot run commands while a machine is unreachable.
  • Lines sent to one machine share its files and processes. Give each tenant its own machine.