The difference between separate threads and separate machines should not be abstracted away, but managing them as part of the application through compile-time magic would be cool.
One could use something like Rust feature macros, plus a tool on top of Cargo that automatically picks the set of features required by each deployment.