Rust · RISC-V · capability microkernel

Perenne

An OS that remembers.

A security-first microkernel, written from scratch in Rust. Its drivers, network, and services run as isolated, restartable components — and when one crashes, the OS diagnoses it, fixes it inside a safety cage, and remembers the fix across reboots.

View on GitHub

Boots on QEMU/RISC-V · every milestone asserted by an automated test

The difference

Most systems forget.
Perenne remembers.

A monolithic kernel that hits a bad driver takes the whole machine down with it. Perenne keeps every service in its own isolated cell, so a crash is a contained event — the start of a diagnosis, not the end of the system.

  1. detecta component crashes — the fault is contained
  2. diagnosematched against a knowledge base read from disk
  3. cagea bounded, logged, reversible restart
  4. learna never-seen fault is written to disk
  5. renewa later boot diagnoses the crash it documented itself

That last step is the point. On a second boot of the same disk, Perenne reads back the entry it wrote, recognizes a fault it had never seen before, and — when an issue keeps recurring — quarantines it instead of restarting it forever. It didn't just recover. It remembered, learned, and changed its mind.

What's under the hood

Secure by construction

A tiny privileged core. Drivers and services run unprivileged, each holding only the capabilities it was granted — grantable and revocable at runtime. A compromised driver can't take the machine. A post-quantum ML-KEM secret keys an encrypted channel between components.

crypto: channel session established (ML-KEM)

Self-healing, and it learns

A crash is contained, diagnosed against an on-disk knowledge base, and fixed inside a bounded safety cage. A fault it has never seen gets written to disk — so a later boot can diagnose it. Recurring issues escalate and get quarantined.

heal: diagnosed KB-0006 — the fault it wrote itself

Really networked

A full stack, built bottom-up and host-tested: ARP, IPv4, UDP, ICMP, a complete DHCP lease it adopts as its own address, ping in and out, and live DNS — all through a NIC that itself runs as an unprivileged component.

net: dns example.com → 104.20.23.154

Not a mock-up — verified on every boot

21 phases, each its own design → plan → build → learning-note cycle. The whole history is public.

Read the story.

Explore the repository