NumericalOS

Graph-driven OS

Boot order, units, health, and the tool floor are compositions of a typed graph. The machine does not read unit files — only a content-hashed export.

Pure graph product: change the profile or registry, re-export numos.state, repack, re-verify. Hand-editing state fails closed.

Why this is literal

Quartet mapping

LayerNode kindsBoot role
METADistroProfile, FloorProvider, KernelProviderproduct, floor, third-party kernel pin
GENESISBootPhase (+ media)ordinal walk; ISO uses graph kernel
MGSOSUnitoneshot / longrun; requires DAG
SHADOWHealthPredicatesteady probes; local_action

ASEC + kernel (Spec 1)

The kernel is not built by NumericalOS. It is a graph-pinned third-party artifact (distro.kernel.json) so ISO/QEMU media is reproducible. ASEC residuals stay named: optional package sha256, no Secure Boot chain, no non-x86_64 providers until declared.

py -3 -m numos.distro --profile self-init kernel --arch x86_64

self-init profile (complete offline)

Phases mountidentitycomplete (hold longrun). Observed under QEMU x86_64: kernel+initrd and hybrid ISO serial both reach boot complete degraded=0.

flowchart TD
  %% self-init (export product)
  PH_mount["P10 mount"]
  PH_identity["P20 identity"]
  PH_complete["P30 complete"]
  PH_mount --> PH_identity --> PH_complete
  U_mount_proc("mount-proc\noneshot")
  U_mount_sys("mount-sys\noneshot")
  U_mount_dev("mount-dev\noneshot")
  U_identity("identity\noneshot")
  U_hold("hold\nlongrun")
  X_hold_alive{{"hold-alive"}}
  U_mount_sys --> U_mount_proc
  U_mount_dev --> U_mount_proc
  U_identity --> U_mount_proc
  U_hold --> U_identity
  U_hold -.-> X_hold_alive
  PH_mount -.-> U_mount_proc
  PH_identity -.-> U_identity
  PH_complete -.-> U_hold
Unit requires edges point to dependencies (Kahn order at boot). Health edges are dashed.

Export artifacts

Besides numos.state, export writes packer and tooling sidecars:

filerole
numos.stateboot wire format (only file PID 1 needs)
numos.state.jsonstructured view for tools
distro.floor.jsonnumos-floor URL, sha256, applets
distro.kernel.jsonthird-party kernel URL, kind, extract rule, ASEC residuals
distro.profile.jsonprofile metadata
distro.graph.jsonnodes + edges (META/GENESIS/MGS/SHADOW)
distro.graph.mmdMermaid flowchart of the profile
py -3 -m numos.export_state --profile self-init --seed-only --out dist
py -3 -m numos.distro --profile self-init mermaid
py -3 -m numos.distro list

What is not graph (named residuals)

Deep design: docs/GRAPH.md in the source browser; format details on the state format.