Reconnaissance · separation kernels & hypervisors
We built a separation kernel, then asked the field whether any of it was new. The answer was no — on every axis we probed, and in several cases by work that solves the same problem more deeply. This page is what that search returned: who has already closed which guarantee, what state it is in, and the limitation that still matters. The negative result is the deliverable, not the consolation.
Every guarantee we needed was already closed by somebody.
Each row is a requirement a mixed-criticality system actually has, the project that owns it, and the caveat that decides whether you can rely on it. Read the last column — "verified" is never a single fact, and the architecture, the artifact and the proof's reach are usually where the answer lives.
★★ There are two status columns because there are two different questions, and collapsing them into one chip is how the first version of this table misled. Ground taken? is a question about papers, and a paper's result is permanent — SeKVM proved what it proved in 2021 and always will have. Buildable today? is a question about repositories, and repositories perish. Three rows below are proved-and-unbuildable, which is exactly the combination a single status chip cannot express.
⚠ This does not disturb the decision in §04. That rests on seL4 and libvmm, and both are live — checked against their repositories, not against a survey.
| Requirement | Who owns it | Ground taken? | Buildable today? | The limitation that matters |
|---|---|---|---|---|
| Microkernel functional correctness | seL4 seL4/seL4 · verified configurations | proved | live | Abstract spec → executable spec → C. Deployed and flown — DARPA HACMS, where the Red Team failed to compromise Boeing's Unmanned Little Bird in flight. ⚠⚠ Verification is not uniform across architectures, and AArch64 is the weakest mainstream target. ARM 32-bit has functional correctness, integrity, confidentiality and binary correctness. RISC-V 64 has functional correctness (no fast path), integrity and confidentiality. AArch64 has functional correctness and integrity — neither of the other two. ★ It is the architecture most people ship on. |
| Mixed-criticality temporal isolation | seL4 MCS docs · Proofcraft | partial | live | Scheduling contexts: capability-based access to CPU time with enforced execution bounds. Functional correctness proved on RISC-V; the Arm 64-bit port is in progress under DARPA PROVERS. ★ The one row whose answer today is "not yet, on your architecture." |
| Verified hypervisor on multicore Arm | SeKVM SOSP 2021 · repo SeKVM-4.18, last push 2021-09-18 | proved | dormant | The SOSP 2021 result — verified on Arm relaxed memory hardware — is permanent. The artifact is not: pinned to Linux 4.18 and untouched since 2021, with its companion QEMU frozen at 3.0. ★ The clearest case for two columns: the ground is taken, the code is a museum piece. |
| Verified preemptive scheduler with temporal isolation | Virtual Timeline PACMPL 4(POPL), POPL 2020 · 10.1145/3371088 | proved | paper only | Liu, Rieg, Shao, Gu, Costanzo, Kim & Yoon — the CertiKOS group. The formal abstraction for exactly this, and it occupies the problem this project had identified as its sharpest open one, six years earlier and in a stronger form. |
| Linux guest beside a small analyzable partition | libvmm / CAmkES VM repo pushed 2026-08-13 · au-ts/libvmm | shipping | live | A VMM for seL4 under Microkit, booting Linux guests on Arm. ⚠ Confirm GICv3 emulation for your board — a live discussion item rather than a settled feature, and support is per-platform. |
| The framework you would build the system with | seL4 Microkit repo pushed 2026-08-14 · seL4/microkit | shipping | live | ★★ Written in Rust — 465 KB Rust to 187 KB C, pushed the day this row was written, with recent commits that are Rust idiom cleanups. rust-sel4 is live too. ★ The verified kernel is C; the layer you compose a static system with is not. Choosing seL4 does not mean leaving Rust. |
| Multi-tenant compute isolation | Firecracker repo pushed 2026-08-13 · firecracker-microvm | shipping | live | Apache-2.0, Arm and x86, at AWS scale. Not formally verified as a whole, but industrially proven — which for this requirement is the stronger claim. |
| Keeping a formal model honest against the code | Cedar repo pushed 2026-08-13 · arXiv 2407.01688 | solved | live | An executable Lean model — 3.8 MB Lean to 1.2 MB Rust — with differential random testing as a release gate: millions of inputs through both, outputs compared. 4 bugs from the proofs, 21 more from DRT and property-based testing. ★ A template, not a research problem. |
| Verification affordable as a CI gate | Kani, in production arXiv 2607.01504 · repo pushed 2026-08-14 | shipping | live | Running in production CI on Firecracker — the VMM behind Lambda and Fargate — plus s2n-quic, Hifitime, and the Rust standard library. ★ Existence proof that proving is a budget line, not a campaign. |
| Whether diverse assurance arguments are independent | Knight & Leveson; Littlewood & Wright; Rushby Knight & Leveson 1986 | settled | paper only | They are not. 27 independently written versions over 1M test cases showed correlated failure far above chance; Littlewood & Wright model dependence between a testing leg and a formal verification leg specifically. Replicated across NASA and nuclear programmes. ⛔ A verification portfolio is not the union of its tiers. |
| Static-partitioning hypervisor on Arm | Bao repo pushed 2026-08-10 · bao-project | shipping | live | Real hardware, real deployments, actively maintained. The architectural niche this project occupies was already well populated before it started, and still is. |
| Static-partitioning hypervisor, the older reference | Jailhouse last commit 2023-01-16 · last push 2024-05-18 · siemens/jailhouse | shipping | dormant | ⚠ Not archived, 1,950 stars, and not moving. A legitimate architectural reference — not a live option to build on. ★ Note the direction: dormant, but it ran on real silicon in production. That still beats active-but-never-left-the-emulator. |
| A verified hypervisor written in Rust | RayNu-V, RVM RayNu-V page read 2026-08-13 (v0.1.1) · RVM not read | unverified | not assessed | RayNu-V pairs Verus and Kani on an x86/VMX/EPT hypervisor and states an EPT isolation theorem — but its page lists milestones M0–M6 with none completed, so the theorem is the plan's endpoint. It began 2026-07-18, three days after this project, and explicitly rejects forbid(unsafe_code). ★ Convergent, not derivative — and a reason "first verified hypervisor in language X" is worthless as a claim. ⚠ RVM has not been read; its verification is described as planned. |
| A verified hypervisor under compute-heavy simulation | — nobody, and correctly so reasoning, not a citation | no case | — | A hypervisor does not make cores faster. Isolation is not that workload's bottleneck, the binding constraint is memory bandwidth, and Firecracker already owns multi-tenant isolation. ★ Kept as a row because the idea is attractive, recurs, and is wrong. |
Half the shipped code is machine-checked. The other half is a thin layer that cannot be.
A map is only worth what the person assembling it knows, so here is that person's own work, held to the same standard. Verification tools reach code inside the workspace. hv-metal is deliberately excluded — it needs unsafe for MMIO and assembly, so no prover links it and it is held to boot witnesses instead.
Evidence by subsystem
Five methods with different reach. A row is only as strong as what the chips actually say — and two of the columns share an input generator, which is how a real defect survived four of them.
| Subsystem | Enumerator | Kani | Verus | Fuzz | Boot |
|---|
Harnesses cluster where the isolation argument is load-bearing.
Kani harnesses by module. The shape is the honest one: the emitter and the model's invariants carry the weight, because that is where a wrong answer becomes a cross-domain leak.
A reconnaissance that ends without a decision has not finished.
The map is not neutral. It was assembled to answer specific questions for a specific project — a differentiable simulation SDK whose capstone is a person-specific powered exoskeleton — and these are the answers.
A map assembled by an artifact should show that artifact's edges.
Baleen is complete as research and paused as a project. These are not a roadmap — the decision above routes around them. They are the honest statement of where it stopped, and they are why it is not a thing to build on.
Two disciplines, kept apart deliberately. §02 and §03 are generated by cargo xtask site-data from the gates that police the repository, and cargo xtask ci fails if they are stale — so they cannot drift. §01 and §04 are hand-checked facts about other people's work, dated per row, and they will rot. Conflating the two is the one way this page starts lying, which is why it says so twice.
Assembled from the development of Baleen. Apache-2.0 / MIT. Corrections are welcome and are the point — open an issue if a row is out of date.