explaingit

serenityos/serenity

Analysis updated 2026-06-20

33,135C++Audience · developerComplexity · 5/5Setup · hard

TLDR

A complete operating system written from scratch in C++, including its own kernel, browser, GUI, and apps, inspired by late-90s desktop computing aesthetics and designed as an educational and hobbyist project.

Mindmap

mindmap
  root((SerenityOS))
    What it is
      Full OS from scratch
      No external deps
      Single repository
    Components
      Custom kernel
      Ladybird browser
      GUI framework
      300 ported apps
    Platforms
      x86-64
      ARM
      RISC-V
    Use Cases
      OS internals study
      Browser engine dev
      Hobby computing
    Setup
      Builds on Linux
      Runs in QEMU
      Large compile time
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Study how a real operating system kernel works by reading clean, modern C++ code rather than legacy C

USE CASE 2

Contribute to building a browser engine from scratch, including its own JavaScript and CSS implementation

USE CASE 3

Run a self-contained hobby OS in QEMU on your Linux, macOS, or Windows machine to explore OS internals

USE CASE 4

Learn about memory management, multi-threading, and security features by reading a complete OS codebase

What is it built with?

C++x86-64ARMRISC-VQEMUCMake

How does it compare?

serenityos/serenitycarbon-language/carbon-langcmu-perceptual-computing-lab/openpose
Stars33,13533,67634,060
LanguageC++C++C++
Setup difficultyhardhardhard
Complexity5/54/54/5
Audiencedeveloperdeveloperresearcher

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1day+

Building the entire OS from scratch takes significant time and disk space, a fast multi-core Linux machine is strongly recommended.

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
I want to understand how a kernel scheduler works, point me to the relevant code in SerenityOS and explain how preemptive multithreading is implemented
Prompt 2
How do I build and run SerenityOS in QEMU on Linux from scratch?
Prompt 3
I want to contribute a small bug fix to SerenityOS, walk me through the build system and how to run tests
Prompt 4
Explain how SerenityOS's Ladybird browser renders a basic HTML page, from network request to pixels on screen
Prompt 5
How does SerenityOS implement address space randomization and what files contain that logic?

Frequently asked questions

What is serenity?

A complete operating system written from scratch in C++, including its own kernel, browser, GUI, and apps, inspired by late-90s desktop computing aesthetics and designed as an educational and hobbyist project.

What language is serenity written in?

Mainly C++. The stack also includes C++, x86-64, ARM.

How hard is serenity to set up?

Setup difficulty is rated hard, with roughly 1day+ to a first successful run.

Who is serenity for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub serenityos on gitmyhub

Verify against the repo before relying on details.