Porting MirageOS to IoT devices

Mentors: Magnus Skjegstad, Lucas Pluvinage

Location: Tarides office, Paris

MirageOS is an ecosystem of libraries and tools to build specialized applications, known as unikernels. By providing a unified API, MirageOS allows a developer to build cross-platform applications in OCaml, relying on base layers to perform the hardware abstraction. Originally aimed at virtualized environments, MirageOS has proven to be runnable on bare-metal embedded devices, such as the ESP32 chip. These low-power, low-cost, highly-connected devices are good candidates for IoT development.

The goal of this internship is to leverage the MirageOS project to build small and efficient IoT applications in OCaml. As a base layer we aim to use RIOT, an IoT-specific operating system targeting most embedded devices. For testing, the goal is to run applications on the nRF52840-MDK board, an ARM-based system-on-chip with Bluetooth support. Further work includes developing IoT-specific APIs such a peripheral communications (SPI, GPIO) and investigating optimizations (reducing the OCaml runtime size, dead code elimination).


  • MirageOS
  • Cross-compilation
  • Low-level drivers
  • Constrained devices
For more information and to apply, please email magnus@tarides.com.