Scarlet is an operating system written primarily in Rust, combining a multi-ABI kernel, native userland, a graphical desktop, and tooling for composing bootable distributions.
The 1.0 release is named Scarlet 1.0 "Akane".
Scarlet-native, xv6, and Linux-compatible programs share kernel services and objects. This repository is the reference distribution, bringing together the kernel, applications, drivers, and reusable image bundles.
- AArch64 and RISC-V 64 support, with QEMU images and experimental real-hardware projects.
- Multi-ABI kernel: Scarlet-native, xv6, and partial Linux ABI support over shared kernel objects.
- Desktop: virtual desktops, an application launcher, and native applications using ScarletUI and SWS, with a Wayland bridge for selected Linux GUI apps.
- Rust applications: a Scarlet Rust toolchain with
normal Rust
stdsupport and native system libraries. - Project and distribution management:
Scarlet SDK's
cargo scarletconfigures projects and composes kernels, modules, applications, and reusable bundles into bootable images. See the tooling guide. - SHV virtualization: a Type-2 hypervisor with
Scarlet-native APIs and Linux
/dev/kvmcompatibility, including Firecracker-class AArch64 microVM workloads. - Kernel services: shared filesystems and namespaces, networking, and static or loadable modules.
- Device and media support: VirtIO, display presentation, audio, and video decode, with codec options selected by applications and bundles.
| Virtual desktops | Application launcher |
|---|---|
![]() |
![]() |
| The workspace overview shows virtual desktops and their open windows. | Open installed desktop applications from the launcher. |
Alongside the in-tree QEMU images, Scarlet has experimental support for real hardware through standalone projects:
- Apple Silicon: Apple-specific BSP, drivers, and deployment tooling.
- Qualcomm SC7180 Chromebook: Google CoachZ rev3 (Trogdor) board integration.
See each project for supported models, device coverage, and build/deployment instructions.
Clone the distro-v1.0.1 release tag for Scarlet 1.0.1 "Akane", then enter
the Nix development shell and choose a QEMU target:
AArch64 is the recommended starting point, with more runtime validation at present. RISC-V 64 is also available.
git clone --branch distro-v1.0.1 --depth 1 https://github.com/petitstrawberry/Scarlet.git
cd Scarlet
nix develop
# Build and run the recommended AArch64 full image.
cargo make run-aarch64
# Or build and run the RISC-V full image.
cargo make run-riscv64This checks out the distribution release tag, not a development branch. For working on development sources, see the development guide.
On desktop hosts, full images open a GL-enabled QEMU window automatically (Cocoa with Retina on macOS; GTK or SDL on Linux). CPU emulation defaults to TCG, and serial logs remain in the terminal. For KVM/HVF setup, headless/VNC options, builds, and development commands, see the development guide. For physical devices, follow the relevant hardware project.
The documentation index maps subsystem designs, API references, and compatibility details. Developer entry points:
- Development guide: environment, images, runners, tests, formatting, and Rustdoc.
- Kernel development: source map, boot, memory, filesystems, drivers, and modules.
- Application development: Rust std/no_std libraries, application builds, image integration, and services.
- Project and distribution model: projects, BSPs, bundles, image layers, and dependency locks.
Contributions are welcome. Please keep changes scoped, run the relevant
cargo make tasks before sending a PR, and update docs when changing public
interfaces, project manifests, or user-visible behavior.
This project is licensed under the MIT License. See LICENSE.


