Page 1 of 1

Onyx — a multi-process OS for the Raspberry Pi 4, built on Circle

Posted: Mon Sep 28, 2026 4:56 pm
by trolly
i everyone,

I'd like to share a project I've been working on: Onyx, a homemade multi-process operating system for the Raspberry Pi 4 (AArch64), built on Circle as its hardware layer. Circle made all of this possible.

Some of the main features:

Multi-process with per-app address spaces: every app runs in its own translation tables (ASID), with a kernel API table, and gets its own window.
Dedicated cores: the TCP/IP stack runs on its own core, and so does the audio synthesizer (with an FM tracker on top). The two remaining "app cores" can be acquired by programs such as emulators.
Filesystem performance work on top of FatFs.
A windowed GUI (Elegant-UI) with a compositor (dirty-rectangle refresh), a widget toolkit, and a menu bar with app categories.
3D with the V3D GPU, bare metal: textures, blending, depth, batches with per-object matrices, frame completion by interrupt, and rendering straight into the window. The shaders are hand-written QPU assembly, built with a small assembler based on Mesa's encoder.
A NetSurf port, so there is a real web browser.
BASIC programming: a QBasic-compatible language compiled to bytecode for a VM, with a QBasic-style IDE, GUI controls, gamepad support, and now 3D statements (on the GPU, with a software fallback). There are also Windows tools to write programs on a PC.
Console emulators: Game Boy / Color, Game Boy Advance, NES ,SNES, Nintendo 64 and GameCube (sic) running on an app core, with a game library, the emulators are not ported from existing projects all are done from scratch specificaly to work on top on my os and use the full advantage of it. There's also a Doom port.
Networking and more: FTP client and server, a VNC server, Custom Remote Desktop server (and its windows client), lightighter than VNC because instead of sharing the whole screen, it send only the content of each windows when they are modified or presented. Wi-Fi, USB gamepads, and more.

The code and the documentation are here: https://github.com/stephaneweg/Onyx

Feedback and questions are welcome!