HopOS owns the privilege level above the apps: EL2 on ARM and machine mode on RISC-V. It loads an app into a memory partition, asks the processor to enforce that partition, and only then starts the app at the lower privilege level.
Load one relocatable slot
The node streams the signed app image into its assigned partition. Address translation lets every slot use the same link address, so one artifact per architecture can run in any slot.
Fence it before entry
ARM uses a stage-2 page table with its own VMID. RISC-V uses a PMP whitelist for the boundary and an Sv39 page table for relocation. If HopOS cannot establish the cage, it does not start the app.
Keep devices on the other side
The app talks to HopOS through a control page and two rings. The node programs network and storage devices; an app cannot invent a syscall or point DMA outside its cage.
Give the resource back cleanly
On ARM, HopOS revokes the stage-2 mapping and parks the core. On RISC-V, it resets the hart. The boundary belongs to the hardware, so stopping one slot does not require cooperation from its app.
| ARM | RISC-V |
| HopOS owns | EL2 | machine mode |
| app runs in | EL1 | supervisor mode |
| memory boundary | stage-2 table + VMID | PMP whitelist |
| relocation | the same stage-2 table | Sv39 page table |
| stop | revoke mapping + park core | reset hart |
By default an app also gets whole physical cores, with no time-sharing between strangers. Trusted apps may explicitly opt into a sharegroup; the memory cage stays in place.
Read the full isolation design →