Developing an Operating System with WebAssembly: Before the Journey

Developing an Operating System with WebAssembly: Before the Journey

Publish Date: Jun 9
1 0

My Background

I have long been consumed by a desire to understand how things work, that desire drives me to study and even try replicating projects that have already been built.

I have been working professionally mostly in web development with Node.js and React for the last 9 years, though at the same time I spent some of my free time to some C/C++ competitive programming, Game Development, Embedded and DevEx focused tools with TypeScript.

Tried making my own OS with C and ASM following some tutorials, and even worked on embedded systems using Microchip’s PIC16 and PIC18 families, Arduino and Raspberry Pi, and even took the challenge to build a Game Engine using C++ and the SDL library. I never got to finish most of these projects as there was always something that piqued my interest later and I got sidetracked. This time I want to start focusing more and start doing some real work, complete projects and contribute to open source.

The Journey Begins

I have always wanted to start writing posts online and do work and tutorials in the open. But just recently decided to start doing it for real. This is going to be my first series of articles, where I develop an Operating System using WebAssembly that will run in the browser, as well as implementing or porting tools that already exists so that they work in said OS.

Why?

Because there is no better way to learn something than by doing it yourself. This journey will be a long one and one full of research, refactorization, trial and error, workarounds and more.

Inspiration

The WebContainers project is what actually fueled my interest in starting this specific project. If you haven’t heard about it go check it out! As the name implies it lets you run a containerized environment in the browser.

I was trying to make a project for the Bolt.new Hackathon which is currently underway in June 2025 for automating infrastructure management visually with the help of AI. After doing some progress on the project I wanted to add a WebContainer to execute the tooling to do the actual work. But I hit a roadblock when I noticed you can’t run multiple WebContainers at the same time, which turned out to be a limitation for my use case.

Hilariously, while writing this article I saw an example in Stackblitz where it seems to be running a WebContainer inside another. Will have to try that later. Still my goal doesn’t change.

What to expect

I am going to be writing weekly articles about what I learn, progress and interesting bits. These are going to be my weekly journal, though if you have any question you can leave it in the comments and I will make sure to answer or even dedicate some articles to those inquiries.

Now on this series! The first thing we will be focusing on is WebAssembly. If you have not been following the latest advancements in web technology, you may not have heard about it. In this series we will start by learning WebAssembly, what it is and how it works by building an interpreter (most commonly know as a runtime).

Follow me if you’re interested in systems programming, WebAssembly, or building dev tools from the ground up.

Comments 0 total

    Add comment