When I started developing SO3 in 2014, I never imagined it would live beyond an academic setting. At the time, it was primarily a learning and experimentation platform—a way to explore how operating systems really work, from the CPU up to the abstractions we often take for granted.
Today, SO3 is an open-source project available on GitHub:
👉 https://github.com/smartobjectoriented/so3
SO3 is not meant to compete with production-grade embedded operating systems like FreeRTOS or Zephyr. Those systems are designed to be dropped into countless real-world products. SO3 has a different goal: it is deliberately focused on deep understanding. It is built for exploring low-level interactions with the CPU, memory subsystem, and peripherals, with as little conceptual noise as possible.
Minimal Code, Real OS Concepts
Despite its small codebase, SO3 implements most of the core mechanisms you would expect from a modern operating system:
-
strict separation between user space and kernel space
-
virtual memory management
-
support for running as a hypervisor
This minimal surface is intentional. SO3 aims to expose how these mechanisms work rather than hide them behind layers of framework code.
AVZ, Capsules, and Coexisting with Linux
When SO3 runs as a hypervisor, it takes the name AVZ (Agency Virtualizer)—a name inherited from earlier stages of the project. In this configuration, AVZ can host Linux, but that’s only part of the story.
What makes AVZ particularly interesting is that SO3 itself can run alongside Linux, at the same time, on the same hardware. Multiple SO3 instances can coexist simultaneously, each running in a fully memory-isolated environment called a capsule.
These capsules provide strong isolation guarantees and open the door to experimentation with secure execution environments, partitioning, and mixed-criticality systems—all without the complexity of a large hypervisor codebase.
Modern Tooling, Familiar Interfaces
Over time, SO3 has grown beyond its early experimental roots:
-
It is now fully compatible with the musl C standard library
-
Its networking capabilities are built on the well-known lwIP TCP/IP stack
This makes it possible to write real applications for SO3 while still staying close to the metal.
Used in Real Projects: LVGL Continuous Integration
While SO3 remains focused on education and experimentation, it has also found practical use in real-world workflows. Notably, SO3 is used in the LVGL continuous integration infrastructure to execute non-regression tests on the LVGL codebase.
In this context, SO3 provides a controlled and deterministic execution environment, making it particularly well-suited for automated testing of low-level and graphics-related code.
Where SO3 Runs Today
SO3 currently runs on:
-
QEMU ARM platforms (32-bit and 64-bit)
-
The Raspberry Pi family
This makes it accessible both for fast experimentation in emulation and for hands-on work with real hardware.
A Learning Tool First—and Proud of It
- SO3 is not about being everything to everyone. It is about clarity, control, and understanding. Whether you are curious about operating system internals, virtualization, or low-level ARM platforms, SO3 offers a compact and honest environment where nothing is too abstracted to learn from.
In short: SO3 is small by design—but it goes very deep.
- https://github.com/smartobjectoriented/so3
- https://www.nongnu.org/lwip/2_1_x/index.htm
- https://musl.libc.org/
- https://lvgl.io
