foliOS
An experimental operating system for AMD64, built around a kernel called Strata. Strata keeps ordinary process isolation and adds a separate tier where signed drivers and services run beside the kernel, so they can skip process-style IPC when the ownership rules allow it.
on hold Development has moved to Bedrock.
init [DEBUG] Starting Vellum... init [DEBUG] initializing ISRs... init [DEBUG] initializing physical memory allocator... init [DEBUG] initializing memory management... init [DEBUG] mounting boot filesystem... init [DEBUG] boot filesystem found from device "fd0pt0p0" init [DEBUG] starting main... module [DEBUG] loading program... module [DEBUG] executing entry point... load_folios [DEBUG] calculating program offset and size... load_folios [DEBUG] offset=0xC0000000, size=001A0000 load_folios [DEBUG] loading program... 0.000000 --:----:---- INF init # Starting Strata... 0.000000 --:----:---- INF init # activating common CPU features... 0.000000 00:----:---- INF init # initializing memory manager... 0.000000 00:----:---- INF init # initializing VMA... 0.000000 00:----:---- INF init # initializing ACPI... 0.000000 00:----:---- INF acpi # starting uACPI, version 3.1.0 0.000000 00:----:---- INF hpet # HPET initialized: 100000000 Hz, 10000000 fs/tick, 64-bit counter 0.000000 00:----:---- INF time # Clock source initialized: HPET main counter, 100Hz tick 0.000705 00:----:---- INF init # initializing KRT... 0.002997 00:----:---- INF main # starting main... 0.041950 00:----:---- DBG main # ZSTD Decompression Success: zstd kernel porting test: hello foliOS! 0.042294 00:----:---- INF main # initializing the Global Node Tree... 0.043654 00:----:---- INF main # initializing thread system... 0.074304 00:----:0000 INF acpi # successfully loaded 1 AML blob, 564 ops in 25ms (avg 21744/s) 0.087137 00:----:0000 INF acpi # namespace initialization done in 9ms: 54 devices, 0 thermal zones 0.182291 00:----:0002 INF main # found /SystemManager/SystemManager.app in boot ramdisk: size=1314608 magic=7F 45 4C 46 0.182535 00:----:0002 INF main # loaded /SystemManager/SystemManager.app from boot ramdisk 0.183818 00:----:0002 DBG process # created process #1 (active 1)
A QEMU boot: the Vellum loader, then Strata, then the first user process.
# Strata runs code in three tiers
Processes with their own address spaces. They reach the kernel through KRT syscall entry points and hold handles to kernel objects.
Signed drivers and services that run next to the kernel, each in its own memory slots. Calls between modules go through KRT gates instead of process IPC. If a module crashes, the kernel traces the fault to that module and restarts or detaches it.
Keeps physical memory, page tables, scheduling, interrupt routing, and handle tables to itself. Anything that changes ownership goes through kernel code.
Module isolation is meant to contain bugs in trusted code. Hostile code is out of scope. The design is described in Ambikernel.
# Boot path
- VellumBIOS loader, built for IA-32
- load_foliosVellum module that loads Strata and fills in the stload table
- StrataAMD64 kernel: memory, ACPI, timers, KRT, Global Node Tree
- SystemManagerfirst user process, loaded from the boot ramdisk
# Running

Stress tests for qsort, FPU and SIMD registers, and malloc running across kernel threads.
# Repositories
- foliOSStrata kernel, Vellum loader, docs and design records
- foliSDKcross toolchain, C runtime, and build pipeline for the foliOS ABI
- sidlccompiler for SIDL, the Strata interface definition language
- smaarchiver that packs signed kernel and user module images
- toolchain portsgcc, binutils, musl, cmake, autoconf, automake, libtool, gnu-config