The nønos microkernel
  • Rust 67.6%
  • Assembly 29.1%
  • Lean 1.9%
  • Makefile 0.6%
  • Python 0.5%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-04 16:56:08 +02:00
.cargo gitignore: tidy ignores and drop a stray backup 2026-07-08 20:08:23 +02:00
.github release notes: unwrap the hard line breaks [skip ci] 2026-09-03 23:58:45 +02:00
.keys socks5: enable and spawn the capsule 2026-08-03 19:44:48 +02:00
abi abi: publish the attestation and dev-root syscalls 2026-08-14 11:52:26 +02:00
benchmarks ci: publish benchmark artifacts (#250) 2026-06-29 17:11:15 +02:00
ci-reports nonos-hardening: trusted-path hardening, dead-surface cleanup ++ block-device storage (#227) 2026-06-19 13:11:58 +02:00
docs@8672acfa8b docs: point at the mixnet capsule pages 2026-08-04 03:06:35 +02:00
media/samples feat(video-player): bake sample media into the disk image 2026-08-18 15:14:27 +06:00
mk build: plan-a packs the ESP only after the desktop kernel links [skip ci] 2026-09-03 20:20:50 +02:00
nonos-bootloader stark: advance the submodule to the version the pins expect 2026-08-31 13:12:22 +02:00
nonos-ci@1f05aa7aed release: 0.9.2, with every submodule at its documented head 2026-09-03 14:44:24 +02:00
nonos-data@42a61b6fca nonos-data: pin the sticky enrollment commit 2026-09-04 16:56:08 +02:00
nonos-mk@428ded0a71 build: the enrollment builder runs in its own posture 2026-09-03 13:57:47 +02:00
nonos-sign@4cd694d7cd release: 0.9.2, with every submodule at its documented head 2026-09-03 14:44:24 +02:00
nonos-stark-enroll Merge remote-tracking branch 'origin/main' into build/self-verifying 2026-09-02 13:50:25 +02:00
nonos-utils@519ab9817e release: 0.9.2, with every submodule at its documented head 2026-09-03 14:44:24 +02:00
nonos-verify ci: fix the surface paths and the desktop marker [skip ci] 2026-09-03 23:07:03 +02:00
screenshots desktop: reliable full-size display and boot screenshots 2026-07-27 22:26:32 +02:00
scripts build: end the build by proving what it produced 2026-08-31 13:58:14 +02:00
security stark: consume the unified engine from its own repository 2026-08-31 13:01:25 +02:00
src Merge remote-tracking branch 'origin/main' into feat/terminal-rail-and-blocks 2026-09-02 22:21:57 +06:00
stark-attest@92e05312ff stark: pin the engine with the restored consumer export 2026-09-02 00:51:11 +02:00
third_party feat(audio-player): vendor minimp3 + freestanding cc build 2026-07-25 20:11:44 +06:00
toolchain Merge remote-tracking branch 'origin/main' into fix/third-party-app-launch-unblock 2026-08-09 00:22:56 +06:00
tools release: the enrollment ceremony signs the reproducible builder's bytes 2026-09-03 13:22:27 +02:00
userland socks5: give the watch the Default the lint asks for 2026-09-04 16:36:44 +02:00
verification evidence: regenerate the manifest against the current corpus 2026-08-31 16:24:19 +02:00
wallpapers@7691daf16a submodules: auto-bump to verified upstream heads 2026-06-07 05:45:04 +00:00
.editorconfig v0.1.0: Advanced kernel with ZK-SNARKs, onion routing, and capability security 2025-09-19 08:20:28 -04:00
.gitattributes gitattributes: force GAS highlighting for .S/.s/.inc 2026-05-13 16:54:12 +02:00
.gitignore net-nym: interop test against a live gateway 2026-08-03 17:34:51 +02:00
.gitmodules stark: consume the unified engine from its own repository 2026-08-31 13:01:25 +02:00
aarch64-nonos.json build: add an aarch64 target and let the hand written asm assemble 2026-07-30 23:39:43 +02:00
build.rs kernel: stage image capability ceiling through OUT_DIR 2026-08-21 02:42:41 +02:00
Cargo.lock release: 0.9.2, with every submodule at its documented head 2026-09-03 14:44:24 +02:00
Cargo.toml release: 0.9.2, with every submodule at its documented head 2026-09-03 14:44:24 +02:00
clippy.toml v0.1.0: Advanced kernel with ZK-SNARKs, onion routing, and capability security 2025-09-19 08:20:28 -04:00
CODE_OF_CONDUCT.md docs: add the community files that were missing 2026-07-29 11:56:03 +02:00
CONTRIBUTING.md docs: move the root guides into the wiki 2026-07-18 20:22:43 +02:00
deny.toml deny: allow the yanked spin 0.9.8 transitive 2026-07-14 20:22:29 +02:00
flake.nix build: end the build by proving what it produced 2026-08-31 13:58:14 +02:00
LICENSE Add GNU Affero General Public License v3 2025-10-11 05:39:00 -04:00
linker.ld feat(log): add layout-stable debug ring infra 2026-05-29 12:50:29 +06:00
linker_aarch64.ld aarch64: map by address, and add the direct window 2026-07-31 02:09:44 +02:00
linker_riscv64.ld kernel: pqclean codegen + linker ltext sections + start.S stack align 2026-05-15 14:03:22 +02:00
Makefile build: end the build by proving what it produced 2026-08-31 13:58:14 +02:00
README.md readme: update the proof counts 2026-07-30 10:46:55 +02:00
rust-toolchain.toml Update Rust toolchain to nightly-2026-01-16 2026-02-21 12:01:19 +01:00
rustfmt.toml Fix CI workflow 2026-03-05 16:03:37 +01:00
SECURITY.md docs: move the root guides into the wiki 2026-07-18 20:22:43 +02:00
VERSION release: 0.9.2, with every submodule at its documented head 2026-09-03 14:44:24 +02:00
x86_64-nonos.json kernel: relink at 0xFFFFFFFF80000000, drop PIE 2026-05-07 19:19:56 +02:00

NØNOS

A microkernel where nothing runs unless it can prove itself.

Every program on NONOS is a signed, sandboxed capsule that carries a transparent, post-quantum proof of what it is and what it is allowed to touch. The kernel checks that proof before every spawn, and the bootloader checks the kernel the same way before it jumps. There is no unsigned path to execution, no debug switch that turns the check off, no privileged account that can wave code through. Trust flows one direction only, downward from a root you can read.

NONOS is written in Rust, capability-based, and RAM-resident: it keeps no mutable state on disk and leaves nothing behind after power-off. That is the ZeroState model the system is named for. It targets x86_64, ARM64 and RISC-V; x86_64 is the production tree, the other two are architecture-ready backends behind the same arch boundary.

It boots. The default image comes up to a graphical desktop with a damage-tracked compositor, window management, a terminal and a file manager, on real drivers for NVMe and AHCI storage, xHCI USB and mass storage, e1000 and Realtek networking, Intel and Realtek Wi-Fi, HDA audio, i2c and PS/2 input. Fifty-nine capsules come up in it, out of seventy-eight in the tree. One command builds the whole system, proves it, and boots it.

The attestation is checked, not asserted. Four independent tools verify it on every change: Lean 4 with 1,076 theorems and no sorry, Verus, Kani with 82 harnesses, and 34 crates of runnable proofs against the real code. The prover and the verifier are a single crate linked into both the kernel and the bootloader, so the proof that gets written is the proof that gets read.

Documentation

The full reference is the NØNOS documentation wiki, mounted at docs/ as a submodule so a checkout always carries the matching revision. It is written against the source tree, with file and line references, so every claim can be checked against the code. Start with the architecture overview, then the verification scope and the attestation model.

The common tasks each have a short guide in the wiki:

The quickstart goes from a clean checkout to the system booting in QEMU. Configuring a kernel assembles your own kernel with make menuconfig. Contributing is where to start; verifiable work is the capsule path. Reporting covers security reports and scope, and rewards covers what securing NONOS pays.

Community

Design discussion, capsule work and security reports start there. Verified contributors get the capsule-signing channels.

Building

make                       # the full ZeroState system, attested, as a bootable image
make qemu                  # boot it in QEMU

make menuconfig            # choose what goes in your kernel
make from-config           # build that

License

AGPL-3.0-or-later. Redistributable device firmware is not part of the source and carries its own terms.