Architecture

Crate dependency graph, workspace layout, and design patterns powering the Helix kernel.

Profile Reference

Architecture

Helix is a modular hybrid kernel written entirely in Rust. Instead of a monolithic blob or a pure message-passing kernel, Helix organizes every subsystem as a loadable module behind trait-based interfaces. This architecture gives you the performance of in-kernel calls with the flexibility to hot-swap any component at runtime.

The workspace is split into 12 crates, each with a single responsibility. Understanding their dependency graph is key to working with the framework.

Crate Dependency Graph

Every crate in Helix has a clear role and well-defined boundaries. The dependency flow is strictly top-down — no circular references allowed.

Crate Dependency Graph12N · 13E
depends onhelix-halCPU, MMU, interrupts…4helix-coreOrchestrator, IPC, s…8helix-bootLimine, Multiboot2, …2helix-memoryPhys allocator, VMM,…1helix-executionScheduler, threads, …2helix-disIntent classes, secu…1helix-modulesRegistry, loader, AB…1helix-init8-phase boot, subsys…1helix-fsVFS, journal, snapsh…2helix-nexusPrediction, self-hea…1helix-userspaceELF loader, shell, s…2helix-graphicsFramebuffer, acceler…1
100%
☝ Drag to pan·🤏 Pinch to zoom·Tap a node
CrateRoleDepends On
helix-coreKernel core — orchestrator, IPC, syscalls, hot-reload, self-healinghelix-hal
helix-halHardware Abstraction Layer — CPU, MMU, interrupts, firmware— (leaf crate)
helix-bootBoot protocols — Limine, Multiboot2, early init, KASLRhelix-core, helix-hal
helix-modulesModule framework — traits, registry, loader, ABI, interfaceshelix-core
helix-fsHelixFS virtual filesystem — VFS, journal, snapshots, cryptohelix-core
helix-memoryMemory subsystem — physical allocator, virtual mapper, heap, slabhelix-hal
helix-executionExecution — scheduler trait, threads, processes, context switchhelix-core
helix-disDynamic Intent Scheduling — intent classes, security domainshelix-execution
helix-initInit subsystem — 8-phase boot, subsystem registrationhelix-core
helix-nexusNEXUS AI framework — prediction, self-healing, performance tuninghelix-core
helix-userspaceUserspace — ELF loader, shell, syscall table, runtimehelix-core, helix-fs
drivers/gpuMAGMA GPU driver — framebuffer, accelerationhelix-hal

Profile System

A profile is a complete kernel configuration. Each profile lives in its own directory under profiles/ and defines everything — allocator, scheduler, boot protocol, debug flags, and linker script. You can ship entirely different kernels from the same codebase by simply switching profiles.

profiles/ directory layout
rust
1
profiles/
2
default/
3
helix.toml # Main kernel configuration
4
kernel.ld # Architecture-specific linker script
5
boot.rs # Boot entry point overrides
6
minimal/
7
helix.toml
8
kernel.ld
9
server/
10
helix.toml
11
kernel.ld
12
desktop/
13
...
14
embedded/
15
...
16
testing/
17
...
ProfileBoot ProtocolSchedulerAllocatorDescription
defaultLimineRound-RobinBuddyGeneral-purpose balanced configuration
minimalMultiboot2FIFOBumpSmallest possible footprint — CI and testing
serverLimineDISBuddyServer workloads with intent-aware scheduling
desktopLimineDISBuddy + SlabInteractive desktop with low-latency tuning
embeddedDirectPriorityBitmapResource-constrained embedded targets
testingLimineRound-RobinBuddyFull debug symbols, assertions, sanitizers
Profile Selector7N · 6E
Profile SelectorChoose a kernel prof…6defaultLimine · Round-Robin…1minimalMultiboot2 · FIFO · …1serverLimine · DIS · Buddy1desktopLimine · DIS · Buddy…1embeddedDirect · Priority · …1testingLimine · Round-Robin…1
100%
☝ Drag to pan·🤏 Pinch to zoom·Tap a node

Design Patterns

Helix follows strict design patterns across every crate. Understanding them will help you navigate the codebase and write idiomatic extensions.

PatternWhere UsedWhy
Trait-first interfacesHAL, Scheduler, Allocator, FileSystemSwap implementations without changing callers
Newtype IDsThreadId(u64), ProcessId(u64), InodeId(u64)Prevent mixing up ID types at compile time
BitflagsPageFlags, OpenFlags, ModuleFlags, ThreadFlagsType-safe bit manipulation with readable names
Lazy<T> singletonsRegistries, router, scheduler frameworkSafe late-initialization for kernel globals
Multi-arch via HALCPU, MMU, Interrupts, FirmwareAdd architectures by implementing HAL traits only
PIE + KASLRLinker scripts, relocation enginePosition-independent binaries with address randomization

Helix's architecture ensures you never need to touch another crate's internals. Everything goes through traits and registries. Want a custom scheduler? Implement Scheduler. Custom filesystem? Implement FileSystemOps. The framework handles the rest.