You give it a "manifest" encoded in a particular data model that includes the state of the VM and it's computations as well as a specification for the VM itself.
As the VM runs, it updates the manifest.
This means it is extraordinarily portable. You can move an entire running machine to a new host merely by taking the manifest with you.
The VM has zero dependencies on the host system, the data model is very simple, new runtimes are easy to write and the "compiler binaries" are human-readable. So there is no lock-in (or need to trust) on any level.