# cosmosos/cosmos architecture

> Architecture diagram of the GitHub repository cosmosos/cosmos, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cosmosos/cosmos
- Repository: https://github.com/cosmosos/cosmos

## Overview

Cosmos gen3 is a bare-metal C# kernel framework: a developer builds a kernel that boots through Limine, initializes its runtime and architecture-specific hardware support, then provides OS services and device capabilities. The graph emphasizes those runtime stages and documented features, with the driver engine and storage-to-filesystem path as internal layers. README statements support the broad capability links; sampled source supports only selected implementation relationships, so unsampled subsystem links are omitted rather than inferred.

Main entry points: [`src/Cosmos.Kernel`](https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel) (Cosmos kernel), [`src/Cosmos.Kernel.Core/Runtime`](https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Core/Runtime) (.NET runtime), [`src/Cosmos.Kernel.Core/CPU/InterruptManager.cs`](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.Core/CPU/InterruptManager.cs) (Interrupt manager), [`src/Cosmos.Kernel.HAL/DriverKit/Engine/DriverEngine.cs`](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.HAL/DriverKit/Engine/DriverEngine.cs) (Driver engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_boot["Boot and Runtime"]
  node_kernel["Cosmos kernel<br/>[Cosmos.Kernel]"]
  node_limine["Limine boot"]
  node_runtime[".NET runtime<br/>[Runtime]"]
  node_gc["Garbage collector"]
  node_scheduler["Stride scheduler"]
  node_plugs["Plug system"]
end

subgraph group_platform["CPU and Platform"]
  node_interrupts["Interrupt manager"]
  node_x64["x64 support"]
  node_arm64["ARM64 support"]
  node_serial["UART serial<br/>[Serial.cs]"]
end

subgraph group_drivers["Drivers and Devices"]
  node_driverengine["Driver engine<br/>[DriverEngine.cs]"]
  node_pcidrivers["PCI drivers<br/>[Pci]"]
  node_usbstorage["USB mass storage"]
end

subgraph group_services["Kernel Services"]
  node_storage["Storage manager<br/>[StorageManager.cs]"]
  node_vfs["Virtual filesystem<br/>[VfsManager.cs]"]
  node_filesystems["Filesystem formats<br/>[FileSystem]"]
  node_graphics["Graphics subsystem<br/>[DisplayManager.cs]"]
  node_input["Keyboard and mouse<br/>[Input]"]
  node_network["Network stack<br/>[NetworkManager.cs]"]
  node_timers["Timer services<br/>[TimerManager.cs]"]
end

node_developer(("Kernel developer"))
node_bootable["Bootable kernel"]

node_developer -->|"builds with NativeAOT"| node_kernel
node_kernel -->|"boots through"| node_limine
node_limine -.->|"enters runtime"| node_runtime
node_runtime -->|"uses"| node_gc
node_runtime -->|"uses"| node_scheduler
node_kernel -->|"integrates"| node_plugs
node_kernel -->|"targets x64"| node_x64
node_kernel -->|"targets ARM64"| node_arm64
node_kernel -->|"supports interrupts"| node_interrupts
node_interrupts -->|"uses APIC"| node_x64
node_interrupts -->|"uses GIC"| node_arm64
node_kernel -->|"supports UART"| node_serial
node_kernel -.->|"manages device drivers"| node_driverengine
node_driverengine -.->|"dispatches devices"| node_pcidrivers
node_driverengine -.->|"dispatches devices"| node_usbstorage
node_usbstorage -.->|"publishes block device"| node_storage
node_storage -->|"provides partitions"| node_vfs
node_vfs -->|"mounts formats"| node_filesystems
node_kernel -->|"provides graphics"| node_graphics
node_kernel -->|"provides input"| node_input
node_kernel -->|"provides networking"| node_network
node_kernel -->|"provides timers"| node_timers
node_kernel -->|"produces bootable ELF"| node_bootable

click node_kernel "https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel"
click node_limine "https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Boot.Limine"
click node_runtime "https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Core/Runtime"
click node_gc "https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.Core/Memory/GarbageCollector/GarbageCollector.cs"
click node_scheduler "https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.Core/Scheduler/SchedulerManager.cs"
click node_plugs "https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Plugs"
click node_interrupts "https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.Core/CPU/InterruptManager.cs"
click node_x64 "https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Core.X64"
click node_arm64 "https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Core.ARM64"
click node_serial "https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.Core/IO/Serial.cs"
click node_driverengine "https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.HAL/DriverKit/Engine/DriverEngine.cs"
click node_pcidrivers "https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Drivers/Pci"
click node_usbstorage "https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.Drivers/Usb/Storage/UsbMassStorage/UsbMassStorageUnit.cs"
click node_storage "https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.System/Storage/StorageManager.cs"
click node_vfs "https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.System/FileSystem/VfsManager.cs"
click node_filesystems "https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.System/FileSystem"
click node_graphics "https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.System/Graphics/DisplayManager.cs"
click node_input "https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.System/Input"
click node_network "https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.System/Network/NetworkManager.cs"
click node_timers "https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.System/Timers/TimerManager.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_kernel,node_limine,node_runtime,node_gc,node_scheduler,node_plugs toneBlue
class node_interrupts,node_x64,node_arm64,node_serial toneAmber
class node_driverengine,node_pcidrivers,node_usbstorage toneMint
class node_storage,node_vfs,node_filesystems,node_graphics,node_input,node_network,node_timers toneRose
class node_developer,node_bootable toneIndigo
```

## Components

### Boot and Runtime

- [Cosmos kernel](https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel): `src/Cosmos.Kernel`
- [Limine boot](https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Boot.Limine): `src/Cosmos.Kernel.Boot.Limine`
- [.NET runtime](https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Core/Runtime): `src/Cosmos.Kernel.Core/Runtime`
- [Garbage collector](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.Core/Memory/GarbageCollector/GarbageCollector.cs): `src/Cosmos.Kernel.Core/Memory/GarbageCollector/GarbageCollector.cs`
- [Stride scheduler](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.Core/Scheduler/SchedulerManager.cs): `src/Cosmos.Kernel.Core/Scheduler/SchedulerManager.cs`
- [Plug system](https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Plugs): `src/Cosmos.Kernel.Plugs`

### CPU and Platform

- [Interrupt manager](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.Core/CPU/InterruptManager.cs): `src/Cosmos.Kernel.Core/CPU/InterruptManager.cs`
- [x64 support](https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Core.X64): `src/Cosmos.Kernel.Core.X64`
- [ARM64 support](https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Core.ARM64): `src/Cosmos.Kernel.Core.ARM64`
- [UART serial](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.Core/IO/Serial.cs): `src/Cosmos.Kernel.Core/IO/Serial.cs`

### Drivers and Devices

- [Driver engine](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.HAL/DriverKit/Engine/DriverEngine.cs): `src/Cosmos.Kernel.HAL/DriverKit/Engine/DriverEngine.cs`
- [PCI drivers](https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.Drivers/Pci): `src/Cosmos.Kernel.Drivers/Pci`
- [USB mass storage](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.Drivers/Usb/Storage/UsbMassStorage/UsbMassStorageUnit.cs): `src/Cosmos.Kernel.Drivers/Usb/Storage/UsbMassStorage/UsbMassStorageUnit.cs`

### Kernel Services

- [Storage manager](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.System/Storage/StorageManager.cs): `src/Cosmos.Kernel.System/Storage/StorageManager.cs`
- [Virtual filesystem](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.System/FileSystem/VfsManager.cs): `src/Cosmos.Kernel.System/FileSystem/VfsManager.cs`
- [Filesystem formats](https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.System/FileSystem): `src/Cosmos.Kernel.System/FileSystem`
- [Graphics subsystem](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.System/Graphics/DisplayManager.cs): `src/Cosmos.Kernel.System/Graphics/DisplayManager.cs`
- [Keyboard and mouse](https://github.com/cosmosos/cosmos/tree/gen3/src/Cosmos.Kernel.System/Input): `src/Cosmos.Kernel.System/Input`
- [Network stack](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.System/Network/NetworkManager.cs): `src/Cosmos.Kernel.System/Network/NetworkManager.cs`
- [Timer services](https://github.com/cosmosos/cosmos/blob/gen3/src/Cosmos.Kernel.System/Timers/TimerManager.cs): `src/Cosmos.Kernel.System/Timers/TimerManager.cs`

### Other components

- **Kernel developer**
- **Bootable kernel**

## Connections

- Kernel developer → Cosmos kernel: builds with NativeAOT (evidence: `README.md`)
- Cosmos kernel → Limine boot: boots through (evidence: `README.md`)
- Limine boot → .NET runtime: enters runtime
- .NET runtime → Garbage collector: uses (evidence: `README.md`)
- .NET runtime → Stride scheduler: uses (evidence: `README.md`)
- Cosmos kernel → Plug system: integrates (evidence: `README.md`)
- Cosmos kernel → x64 support: targets x64 (evidence: `README.md`)
- Cosmos kernel → ARM64 support: targets ARM64 (evidence: `README.md`)
- Cosmos kernel → Interrupt manager: supports interrupts (evidence: `README.md`)
- Interrupt manager → x64 support: uses APIC (evidence: `README.md`)
- Interrupt manager → ARM64 support: uses GIC (evidence: `README.md`)
- Cosmos kernel → UART serial: supports UART (evidence: `README.md`)
- Cosmos kernel → Driver engine: manages device drivers
- Driver engine → PCI drivers: dispatches devices (evidence: `src/Cosmos.Kernel.HAL/DriverKit/Engine/DriverEngine.cs`)
- Driver engine → USB mass storage: dispatches devices
- USB mass storage → Storage manager: publishes block device
- Storage manager → Virtual filesystem: provides partitions (evidence: `src/Cosmos.Kernel.System/Storage/StorageManager.cs`)
- Virtual filesystem → Filesystem formats: mounts formats (evidence: `README.md`)
- Cosmos kernel → Graphics subsystem: provides graphics (evidence: `README.md`)
- Cosmos kernel → Keyboard and mouse: provides input (evidence: `README.md`)
- Cosmos kernel → Network stack: provides networking (evidence: `README.md`)
- Cosmos kernel → Timer services: provides timers (evidence: `README.md`)
- Cosmos kernel → Bootable kernel: produces bootable ELF (evidence: `README.md`)
