A capability-based microkernel. Zero ambient authority. Programs earn every resource they touch.
Ferber is an experimental capability-based microkernel written in Rust. Ferrum is its userspace environment. It runs on RISC-V 64 and x86-64 in QEMU, with additional physical x86-64 validation.
Processes receive resources explicitly. A handle identifies a kernel object and grants specific operations on it. New processes start with empty handle tables; startup installs only the capabilities deliberately delegated to them.
Ferrum init starts a read-only filesystem service, reads a service configuration from an initramfs archive and launches independently built executables. Processes communicate over bounded channels, share capabilities through explicit transfer, and cooperate through yield and blocking waits. The kernel manages sparse RAM, VMO-backed memory, protected address spaces and hierarchical process Jobs.
The current release is Uranium-238 v0.3.1. The init, filesystem and configured-service implementation has passed physical x86-64 checks. See the verification reference for the tested build and artifact scope.
There is no interactive shell yet. fer, the planned system CLI, is not available.
A console-capable shell, framebuffer terminal and fer skeleton are the next
roadmap milestone, followed by AArch64. Musl compatibility, persistent
storage, preemptive scheduling and SMP are planned. Ferber is not suitable for
production use. Current userspace runs on one active CPU with interrupts disabled.
Ferber was previously called Wolfram.
Install Rust nightly, the required targets and QEMU as described in Running Ferber. From the repository root:
make run INIT=1 # boot Ferrum in RISC-V QEMU
make x86-iso INIT=1 # create the x86-64 UEFI ISOA successful init boot ends with init_waiting: PASS and remains idle. It does
not display a shell prompt. Use Running Ferber for
requirements, debugging and expected output.
Start at the documentation index. The architecture guide explains the kernel boundary; boot and services follows a working boot. Exact interfaces live in the reference pages. Historical release notes describe what worked at each release, including limitations that have since changed.
Your first contribution does not need to touch the kernel. Documentation, localization, tests, tooling and diagnostics are useful starting points. Rust, architecture and security work have their own paths in CONTRIBUTING.md.
Prefer issues labeled good first issue, help wanted, or an equivalent label.
The roadmap describes direction; an unchecked item is not automatically a starter
task. Kernel architecture changes require reading the architecture and capability
references first. Contributions involving voice text or Easter eggs follow the
style guide.
Report capability-security vulnerabilities with an issue titled [SECURITY]
and include a detailed reproduction. See the contribution guide for the full
reporting guidance.
Releases use element names. Uranium identifies the current experimental series; a release tag records a milestone, not a claim of production readiness. Browse release history for changes and compatibility notes.
Ferber is licensed under GPL-2.0-only.
