Live · running in this tab

Don't take our word.
Boot it.

The full JouleOS shell runs right here, with nothing to install — 2 MB of WebAssembly, the real thing. Below it: a pure-Rust virtual machine, in your browser, that boots the JouleOS bare-metal kernel from its 32-bit entry, all the way to long mode.

The shell · WebAssembly

JouleOS, live.

Open fullscreen ↗

This is the actual operating system — 2 MB of WebAssembly, the same source that runs native and bare-metal. Type in the intent bar; watch results spawn as surfaces with their own energy cost.

jos://workspace
  • type an intent + Enter
  • Ctrl+K command palette
  • Ctrl+1…5 layout modes
  • Shift+V voice

A real machine · in a browser VM

Boot the real metal.

Boot it ↗

This is not an animation. A pure-Rust CPU emulator — x86-64, ARM, RISC-V, decode → IR → interpreter — runs entirely in your browser and boots the JouleOS bare-metal kernel: the real x86_64-unknown-none ELF, entered in 32-bit protected mode, brings up long mode through its own trampoline, logs to the serial console, and paints its identity to a framebuffer the VM scans out to the canvas — graphics and all, live in this tab.

Getting here meant teaching the emulator 32-bit protected mode and the 32→64-bit long-mode switch (GDT descriptor CS.L, mode-aware decode), so the kernel's PVH trampoline runs unmodified. The same ELF boots identically under qemu -kernel.

imagejouleos-baremetal.elf · 70 KB · PVH x86-64, entered in 32-bit protected mode
emulatorInvisibleVM · decode → IR → interpreter, pure Rust → WASM
display640×400 framebuffer → canvas: a two-layer compositor — breathing energy core, an orbiting particle field, CRT scanlines + vignette, and HUD corner framing, over a Noto bitmap boot console

The VM needs a cross-origin-isolated context (SharedArrayBuffer), so it runs best in its own tab — launch fullscreen ↗. It auto-boots JouleOS; you can also Stop and upload an AArch64 ELF / x86-64 bzImage.

Go deeper

You've seen it run. Now read how.