serenity is a free, open source browsers & extensions project written in C++ and released under BSD-2-Clause. It has 33,840 GitHub stars, 3,541 forks and 739 open issues, and was last pushed 10 hours ago. On this registry it ranks #7 of 65 tracked projects in Browsers & Extensions, with 5 head-to-head comparisons available. It gained 2 stars over the last 3 tracked days.

What is serenity?

What it is

SerenityOS is a graphical Unix-like operating system built for 64-bit x86, Arm, and RISC-V computers. It is written in C++ and released under the BSD-2-Clause license, and it lives in the open-source operating system ecosystem alongside other hobbyist and research kernels. The project describes itself as a love letter to 1990s user interfaces paired with a custom Unix-like core, aiming for a marriage between the aesthetic of late-1990s productivity software and the power-user accessibility of late-2000s Unix systems.

The concrete problem it solves is the absence of a complete, self-contained desktop system that a developer can read end to end. Everything from the kernel to the browser to the games sits in one repository with no extra dependencies, built from scratch by the project's contributors. Rather than assembling a distribution from dozens of upstream components, a reader can follow a single codebase that covers the kernel, system services, libraries, applications, and ports of popular open-source software.

Key capabilities

  • Modern 64-bit kernel with pre-emptive multi-threading.
  • Browser with JavaScript, WebAssembly, and published spec-compliance tracking for JS, CSS, and Wasm.
  • Security features including hardware protections, limited userland capabilities, W^X memory, pledge and unveil, (K)ASLR, OOM-resistance, web-content isolation, and state-of-the-art TLS algorithms.
  • System services such as WindowServer, LoginServer, AudioServer, WebServer, RequestServer, and CrashServer, connected through modern IPC.
  • Good POSIX compatibility through LibC, the shell, syscalls, signals, pseudoterminals, filesystem notifications, and standard Unix utilities.
  • POSIX-like virtual file systems including /proc, /dev, /sys, and /tmp, plus an ext2 file system.
  • Network stack and applications supporting IPv4, TCP, UDP, DNS, HTTP, Gemini, IMAP, and NTP.
  • Development tooling including kernel-supported profiling, CrashReporter, an interactive GUI playground, HexEditor, and the HackStudio IDE for C++.

Who uses it and how

  • Developers read the kernel, LibC, and system services as a single coherent codebase for study and experimentation.
  • Users run everyday GUI programs such as Spreadsheet with JavaScript, TextEditor, Terminal, PixelPaint, multimedia viewers and players, Mail, Assistant, and Calculator.
  • People play the bundled games, including Solitaire, Minesweeper, 2048, chess, and Conway's Game of Life, and run demos such as CatDog, Starfield, Eyes, and the mandelbrot set.
  • Builders install from over three hundred ports of popular open-source software covering games, compilers, Unix tools, and multimedia applications.
  • Contributors follow development through the project's YouTube channels and Discord community.

Getting started

Build and run instructions are documented in the repository's "How do I build and run this" section, and the README points to the Documentation folder for code-related material. Man pages are available online at man.serenityos.org, and inside a running system the man command serves the terminal interface while help provides the GUI equivalent.

When to use it — and when not to

SerenityOS suits anyone who wants a complete, readable Unix-like desktop system built from scratch, and it is honest about being a system by its contributors, for its contributors, based on the things they like. A self-hoster must build the system from this repository, since the README states there are no extra dependencies and everything is compiled from source. The evident weakness is that it is a young, opinionated project with 739 open issues, so it is not positioned as a drop-in replacement for a mainstream production operating system.

project readme (upstream, from github) — read inline

SerenityOS

Graphical Unix-like operating system for 64-bit x86, Arm, and RISC-V computers.

GitHub Actions Status Fuzzing Status Discord

FAQ | Documentation | Build Instructions

About

SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.

Roughly speaking, the goal is a marriage between the aesthetic of late-1990s productivity software and the power-user accessibility of late-2000s *nix. This is a system by us, for us, based on the things we like.

You can watch videos of the system being developed on YouTube:

Screenshot

Screenshot as of c03b788.png

Features

  • Modern 64-bit kernel with pre-emptive multi-threading
  • Browser with JavaScript, WebAssembly, and more (check the spec compliance for JS, CSS, and Wasm)
  • Security features (hardware protections, limited userland capabilities, W^X memory, pledge & unveil, (K)ASLR, OOM-resistance, web-content isolation, state-of-the-art TLS algorithms, ...)
  • System services (WindowServer, LoginServer, AudioServer, WebServer, RequestServer, CrashServer, ...) and modern IPC
  • Good POSIX compatibility (LibC, Shell, syscalls, signals, pseudoterminals, filesystem notifications, standard Unix utilities, ...)
  • POSIX-like virtual file systems (/proc, /dev, /sys, /tmp, ...) and ext2 file system
  • Network stack and applications with support for IPv4, TCP, UDP; DNS, HTTP, Gemini, IMAP, NTP
  • Profiling, debugging and other development tools (Kernel-supported profiling, CrashReporter, interactive GUI playground, HexEditor, HackStudio IDE for C++ and more)
  • Libraries for everything from cryptography to OpenGL, audio, JavaScript, GUI, playing chess, ...
  • Support for many common and uncommon file formats (PNG, JPEG, GIF, MP3, WAV, FLAC, ZIP, TAR, PDF, QOI, Gemini, ...)
  • Unified style and design philosophy, flexible theming system, custom (bitmap and vector) fonts
  • Games (Solitaire, Minesweeper, 2048, chess, Conway's Game of Life, ...) and demos (CatDog, Starfield, Eyes, mandelbrot set, WidgetGallery, ...)
  • Every-day GUI programs and utilities (Spreadsheet with JavaScript, TextEditor, Terminal, PixelPaint, various multimedia viewers and players, Mail, Assistant, Calculator, ...)

... and all of the above are right in this repository, no extra dependencies, built from-scratch by us :^)

Additionally, there are over three hundred ports of popular open-source software, including games, compilers, Unix tools, multimedia apps and more.

How do I read the documentation?

Man pages are available online at man.serenityos.org. These pages are generated from the Markdown source files in Base/usr/share/man and updated automatically.

When running SerenityOS you can use man for the terminal interface, or help for the GUI.

Code-related documentation can be found in the documentation folder.

How do I build and run this?

See the SerenityOS build instructions or the Ladybird build instructions.

The build system supports a cross-compilation build of SerenityOS from Linux, macOS, Windows (with WSL2) and many other *Nixes. The default build system commands will launch a QEMU instance running the OS with hardware or software virtualization enabled as supported.

Ladybird runs on the same platforms that can be the host for a cross build of SerenityOS and on SerenityOS itself.

Get in touch and participate!

Join our Discord server: SerenityOS Discord

Before opening an issue, please see the issue policy.

A general guide for contributing can be found in CONTRIBUTING.md.

Authors

readme truncated — read the full docs on github

Frequently asked questions

Is serenity free to use?

serenity is open source under the BSD-2-Clause licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does serenity do?

The Serenity Operating System 🐞

What is serenity written in?

serenity is primarily written in C++. Its source is publicly available at https://github.com/SerenityOS/serenity, and it has 33,840 GitHub stars.