The build executes untrusted code and temporarily authenticates with your fly.io and Heroku accounts, so we need a sandbox for isolation. Our Elixir app launches ephemeral VMs using our Machines API so it can offload that can of worms.
Edit: Also, I'm just generally curious about the Machines API; it doesn't seem to be documented (yet). The blog post mentioned that launching the VM takes about 2 seconds. Is this startup time proportional to the size of the container image?
We'll be baking that into our proxy soon so we can handle lambda-type workloads.
Image size impacts the cold startup time since it gets fetched and converted into a rootfs before launching. Caching speeds up subsequent launches. Once a machines is created, it can be stopped and resumed, which is _much_ faster. I don't remember the numbers, but it's in the several hundred ms range.
We'll have more to share soon.