Urbit runs as a VM with a translation layer for things like networking, file system, etc. Using a host OS is expedient to build a working OS that the user actually wants to use, since hardware support is an uninteresting implementation detail. Eventually, one could write a native hardware kernel in Nock/Hoon, and do networking without TCP/IP/DNS between Urbit computers.