Build it from source

Rabbit is a research kernel in active development. There are no signed binaries and no GitHub releases yet; the only supported way to run it is to build it yourself.

Clone

Clone the repository
git clone https://github.com/NicolasBecasAzagra/Rabbit.git

Requirements

Rust nightlynightly-2026-10-24, pinned in rust-toolchain.toml.
Componentsrust-src, llvm-tools, rustfmt, clippy.
Targetx86_64-unknown-linux-musl for the userland, installed by make musl-std.
QEMUqemu-system-x86_64, 8.2 or newer.
Disk imagesxorriso and mtools, only if you build disk images.

Install the pinned toolchain

The toolchain is pinned in rust-toolchain.toml. This command installs the required components.

Rust toolchain install
rustup toolchain install nightly-2026-10-24 \
  --component rust-src --component llvm-tools --component rustfmt --component clippy

Build, test and run

Build the kernel.
make build
Boot it in QEMU, serial on stdout.
make run
Host unit tests of every crate.
make test
The format of every crate.
make fmt-check
The clippy of every crate, for its target.
make clippy
The clippy of every crate, for the host.
make clippy-host
Build the agent and its initramfs.
make agent agent-initramfs
Print the path of the built kernel.
make print-kernel-path

Boot in QEMU

QEMU command
qemu-system-x86_64 -M q35 -m 512M \
  -kernel "$(make -s print-kernel-path)" \
  -display none -monitor none -no-reboot -serial stdio \
  -device isa-debug-exit,iobase=0xf4,iosize=0x04

The boot ends with exit status 33, which means boot OK.

Attach a debugger

Debug command
qemu-system-x86_64 -M q35 -m 512M \
  -kernel "$(make -s print-kernel-path)" -s -S \
  -display none -monitor none -no-reboot -serial stdio

gdbstub on port 1234, CPU halted. Attach with lldb "$(make -s print-kernel-path)" and gdb-remote 1234 on macOS, or gdb and target remote :1234 on Linux.

Repository layout

Crate / directoryWhat it does
rabbit-archx86_64 hardware access, port I/O, boot trampoline
rabbit-bootinfopure parsing of the PVH boot handover structures
rabbit-drivers16550A UART, isa-debug-exit
rabbit-mmpaging, the buddy allocator, the heap, the mappings
rabbit-schedthe scheduler and its policy
rabbit-elfthe ELF64 reader
rabbit-initramfsthe reader of the cpio archive of the initramfs
rabbit-kernelthe no_std kernel binary
rabbit-userlandthe test program that runs unmodified in ring 3
rabbit-benchthe workload that measures the kernel
rabbit-inferthe inference runtime, the grammar, the merge encoder
rabbit-agentthe agent loop: model, tool call, tool result
rabbit-netthe protocols of the network path
rabbit-netclientthe client of the network
rabbit-netstreamthe stream of the network
rabbit-httpthe HTTP of the agent
benchthe rig, the workloads, the reference build, the datasets
docsarchitecture, boot protocol, benchmarking, VM setup
scriptsthe generator of the interrupt stubs

Next

The benchmarking document explains the protocol; the report contains every measurement.