Introduction
SerenityOS is a from-scratch Unix-like operating system that includes its own preemptive kernel, graphical desktop environment, web browser, text editor, terminal emulator, and hundreds of other utilities — all written without using third-party code. Started by Andreas Kling in 2018, the project has grown into a large community effort and serves as both a usable hobby OS and an educational resource for systems programming.
What SerenityOS Does
- Provides a complete graphical desktop environment with a 1990s-inspired aesthetic
- Runs a custom preemptive multitasking kernel with POSIX compatibility
- Includes a web browser with its own HTML/CSS rendering and JavaScript engine
- Ships with development tools: an IDE, debugger, profiler, and SQL database
- Supports networking, audio, games, and a growing collection of ported applications
Architecture Overview
The SerenityOS kernel is a monolithic kernel written in modern C++ with support for SMP, virtual memory, ext2 and FAT filesystems, and TCP/IP networking. The display server (WindowServer) handles compositing and input routing. LibWeb and LibJS form the browser engine, which evolved into the independent Ladybird browser project. IPC between processes uses a custom serialization protocol over Unix sockets. The entire system builds with a custom cross-compilation toolchain.
Self-Hosting & Configuration
- Build from source using the included Meta/serenity.sh script on Linux or macOS hosts
- Run in QEMU, VirtualBox, or on bare-metal x86-64 hardware (experimental)
- The cross-toolchain build takes 30-60 minutes on first setup
- Configuration files live in /etc within the SerenityOS filesystem
- Hack on individual components by editing C++ source and rebuilding incrementally
Key Features
- Every component is written from scratch with no dependency on external libraries
- Active contributor community with thousands of merged pull requests
- The Ladybird browser engine spun off into its own cross-platform project
- Comprehensive LibC and POSIX compatibility layer for porting Unix software
- Built-in developer tools including HackStudio IDE and Profiler
Comparison with Similar Tools
- Linux — production-grade kernel with vast hardware support; SerenityOS prioritizes simplicity and educational value over production use
- Redox OS — Rust-based microkernel OS; SerenityOS uses a monolithic kernel in C++ with a more complete desktop experience
- Haiku — continuation of BeOS with similar retro aesthetics; SerenityOS is Unix-like while Haiku follows the BeOS API model
- MINIX 3 — microkernel OS for education and reliability research; SerenityOS focuses on a full graphical desktop experience
FAQ
Q: Can SerenityOS be used as a daily-driver operating system? A: Not yet. It is a hobby and educational OS that lacks driver support and stability for daily use.
Q: What is the relationship between SerenityOS and Ladybird? A: Ladybird started as the SerenityOS browser and became an independent cross-platform browser project using the same LibWeb engine.
Q: What programming language is SerenityOS written in? A: Modern C++ (C++23) with no third-party runtime dependencies.
Q: Can I run SerenityOS on real hardware? A: Experimental bare-metal support exists for x86-64, but QEMU is the recommended way to run it.