Private and secure by design
No telemetry. Nothing leaves the machine unless you ask. Memory is never writable and executable at once, and every system-call argument is treated as hostile.
Cerberus is a 64-bit OS with its own kernel, its own file system, its own drivers and its own desktop. Nothing here is Linux, BSD or Windows underneath.

No telemetry. Nothing leaves the machine unless you ask. Memory is never writable and executable at once, and every system-call argument is treated as hostile.
A message between two programs takes well under a microsecond. Every performance budget is measured and recorded, so a regression is visible.
One small system, with a written specification and the reasoning behind every decision written down.
It runs in QEMU and VirtualBox today, brings up every CPU core, and runs protected user programs. Each card is the first line of its section in the feature inventory.
Boots from the hybrid ISO on BIOS and UEFI (Limine); straight into the kernel, no menu wait.
VFS: one tree, mounts, ./.., symbolic links, permissions, mount flags (ro, noexec, nodev, nosuid), name cache.
Ring-3 processes from position-independent ELF files; ASLR; fork, execve, waitpid; 74 system calls (docs/SYSCALLS.md); a small libc.
Commands grouped by help; help <command>, help tests.
Move by the title bar; resize at any edge or corner (cursor changes); minimise / maximise / close buttons (Windows style); stacking; focus follows clicks.
pane in the shell (or pane --demo for four demo windows): the kernel desktop hands over the screen, /bin/pane composites windows from programs, Ctrl+Alt+Q (or the…
W^X everywhere, SMEP/SMAP/UMIP, stack protectors, zeroed memory, heap free-list encoding, guard pages, user-copy routines only, ASLR, CSPRNG.
Not there yet: Networking, user accounts and login, sound, USB, printing, real hardware, an installer, the Spec compiler, images or any file type but text in the built-in apps.
The release notes, straight from the changelog.
In Cerberus, security rules are requirements with tests, not afterthoughts. Every one of them below is enforced in the current build.
Cerberus collects nothing and reports nothing. No usage data, no account to sign in to, no background phone-home. Today it has no network stack at all.
No memory can be both at once. Every request for such a mapping is refused, in the kernel and in every program.
Each system-call argument is checked. Bad pointers, lengths that wrap and unknown flags get an error, never kernel code.
SMEP, SMAP and UMIP are on wherever the CPU has them: the kernel can neither run nor casually touch program memory.
A program's code, stack and mapped memory land at different addresses each time it starts.
Memory is zeroed before a program gets it, and a new disk block never shows what a deleted file left in it.
A program receiving a message learns the sender's process and user from the kernel, not from the message.
cerfs checks every field and checksums its metadata. A damaged disk gives an error, never a crash.
Fuzzers hammer the program loader, the archive reader, the file system and the system-call interface; 54 integration tests run on every build.
A ChaCha20 generator in the kernel, seeded from the CPU's hardware generator and interrupt timing.
Planned, and already written into the specification
phase 12Private windows. Screenshots, screen recording and clipboard history need your permission per app, denied by default.phase 14Quiet network. Incoming connections blocked by default, and nothing sent at boot except DHCP.phase 15Sandboxed apps. Each app declares what it needs and can be denied network, files or devices.phase 18Your disk, your updates. Optional full-disk encryption, and signed updates that never install on their own.Open bugs, from the ledger
eventtest misses its 1 ms wake-up limit on VirtualBoxAnything that needs sub-microsecond speed or special processor instructions stays in the kernel. Everything else runs as an ordinary, protected program.
Each layer only talks to the one below it through well-defined, checked doors.
The newest block of the benchmark record (0.0.5j — 2026-10-13 (hard links; polish round 4)), on QEMU/KVM with 4 cores. Each number is checked against a written budget.
first touch of a memory page (minor page fault)
to wake an interactive thread
for a kernel heap allocation and free
to composite a desktop frame
A floating taskbar, a launcher with app search, a calendar with reminders, a lock screen, virtual desktops, and a Settings window that changes the look live. Today it is a preview that runs inside the kernel; phase 12 moves it into its own protected program.




Each phase ends in a tested release, and no phase starts until the one before it passes its acceptance tests.
12 · nextPane: window server as a userland processMove the compositor out of the kernel behind the port protocol (docs/SPEC.md §9); per-window shm buffers, libpane.13Facet toolkit, shell, applicationsWidget toolkit, desktop shell, and the apps in §12 (Ember terminal, Crate files, Slate editor, Gauge, Dial, Tally, Frame, Daub, Chronos, Warren, lsh, CLI utils).14Networkingvirtio-net + e1000; netd userland stack (Ethernet, ARP, IPv4, ICMP, UDP, TCP, DHCP, DNS, loopback); socket syscalls 70–83; default-deny inbound firewall; per-app network permission…15Security model, users, encrypted transportUsers and groups, Argon2id password hashes, credentials, authd broker (no setuid), login and lock screens, restrict sandbox, permission prompts, keyring, TLS client with certificate store, audit log.15BOur own web browser.16Spec native backend(was phase 14).17Software platformDynamic linking with full RELRO, POSIX-subset libc (docs/LIBC.md), ptys and job control, full signals, signed package manager pkg; proof ports: zlib, Lua, tinycc, make.18Installer, updates, storage encryption, recoveryLive-ISO installer (GPT, cerfs + FAT32 EFI), optional full-disk encryption, signed updates with a fallback kernel, recovery boot entry and repairing fsck.cerfs, service manager with per-service sandbox.19Stretch(was phase 15).Spec is the systems language planned for writing Cerberus's own programs. Compiled to native code, statically typed, no garbage collector.
trait Show { fn show(self) -> str } fn dump[T: Show](v: T) region r { let x = r.alloc(...); } syscall write(fd: Fd, buf: &[u8]) -> Result[usize, Errno] mmio struct AhciPort { 0x00: clb: u32 rw, 0x10: is: u32 rw1c, }
The compiler has not been started (phase 16) and the syntax is not final. Until then the system is freestanding C++20.
Move the compositor out of the kernel behind the port protocol (docs/SPEC.md §9); per-window shm buffers, libpane.