explaingit

serenityos/serenity

📈 Trending33,186C++Audience · developerComplexity · 5/5ActiveLicenseSetup · hard

TLDR

A complete operating system built from scratch in C++, featuring its own kernel, browser, GUI, and applications, designed for learning OS internals and nostalgic computing.

Mindmap

mindmap
  root((SerenityOS))
    What it does
      Complete OS kernel
      Built-in web browser
      GUI framework
      300+ ported apps
    Tech stack
      C++ codebase
      x86, ARM, RISC-V
      QEMU emulation
    Use cases
      Learn OS design
      Study kernel code
      Hobby computing
      Browser development
    Key features
      Multi-threading
      Security hardening
      JavaScript engine
      Single repository

Things people build with this

USE CASE 1

Study how operating system kernels, memory management, and multi-threading work by reading clean, modern C++ code.

USE CASE 2

Build and test a web browser from scratch that handles JavaScript, CSS, and WebAssembly without relying on existing engines.

USE CASE 3

Contribute to a complete computing environment that includes games, productivity apps, and developer tools all in one codebase.

USE CASE 4

Run a retro-styled desktop OS in QEMU to explore 1990s computing aesthetics with modern security features.

Tech stack

C++x86-64ARMRISC-VQEMUJavaScriptWebAssembly

Getting it running

Difficulty · hard Time to first run · 1day+

Building a full OS from scratch requires cross-compilation toolchain setup, QEMU emulator configuration, and understanding of low-level x86-64/ARM/RISC-V architecture.

SerenityOS uses a mix of licenses including BSD 2-Clause for core components; you can use, modify, and distribute it freely with proper attribution.

In plain English

SerenityOS is a complete operating system built entirely from scratch, written mostly in C++. It is not a Linux distribution or a project built on top of an existing OS, it is an independent operating system that includes its own kernel, its own web browser, its own set of applications, its own GUI framework, and its own standard libraries, all written by its community. The design philosophy is a nostalgic love letter to late-1990s desktop computing aesthetics (think classic Windows and Unix workstations) combined with modern technical capabilities. It runs on 64-bit x86, ARM, and RISC-V hardware. The kernel supports pre-emptive multi-threading, meaning multiple programs genuinely run simultaneously, and includes a range of modern security features such as address space randomization, hardware memory protections, and isolated web content processes. The browser included in SerenityOS, called Ladybird, is particularly notable: it implements JavaScript, CSS, and WebAssembly support from scratch rather than using any existing browser engine like Blink or WebKit. Ladybird has grown into a separate project with its own community. You would use or contribute to SerenityOS if you are deeply interested in how operating systems work at a fundamental level, want to study OS internals by reading clean C++ code rather than legacy C code, or enjoy the hobby computing aesthetic of building everything yourself. It is primarily an educational and hobbyist project, not a daily-driver replacement for existing operating systems. The entire codebase, kernel, userland applications, libraries, browser, games, and over 300 ports of popular open-source software, lives in a single repository with no external dependencies. It can be built on Linux, macOS, or Windows (via WSL2) and runs in QEMU for testing.

Copy-paste prompts

Prompt 1
How do I set up SerenityOS in QEMU and build it from source on my Linux machine?
Prompt 2
Walk me through the SerenityOS kernel scheduler, how does it handle pre-emptive multi-threading?
Prompt 3
Show me how to write a simple application for SerenityOS using its GUI framework.
Prompt 4
Explain how Ladybird implements JavaScript execution without using V8 or SpiderMonkey.
Prompt 5
What are the key security features in SerenityOS and how are they implemented in the kernel?
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.