v0.1.0 — Apache 2.0

RISC-V emulation
at near native speed

A fast RISC-V emulator written in pure Rust with JIT compilation. Boots full Linux on your Mac or PC.

emuko
$ emuko dow
$ emuko start
[ 0.000000] Linux version 6.12 (riscv64)
[ 0.000000] Machine model: riscv-virtio,qemu
[ 1.234567] Run /sbin/init as init process
BusyBox v1.36.1 built-in shell (ash)
~ # uname -a
RV64
IMAFDC instruction set
2
JIT backends (ARM64 + x86_64)
1
External dependency
~15K
Lines of pure Rust

Everything you need to run RISC-V software

Adaptive JIT

Native code generation for ARM64 and x86_64. Hot paths compile automatically. Interpreter fallback for full correctness.

🐧

Boots Linux

Full system emulation with multiuser Linux, BusyBox shell, and interactive console. Not a toy — a real machine.

💾

Snapshot / Restore

Save entire machine state to disk with Zstd compression. Restore instantly. Time-travel debugging for free.

🌐

Daemon + HTTP API

Run as a background service with a REST API. Step, pause, inspect, and inject UART commands remotely.

Differential Checker

Validate JIT output against the interpreter instruction-by-instruction. Correctness you can prove.

🧱

Full Peripheral Stack

UART 16550, CLINT, PLIC, SBI 1.0, Sv39 MMU, and dynamic FDT generation. Everything Linux expects.

Two commands to boot Linux

1 emuko dow — download a Debian RISC-V kernel
2 emuko start — boot Linux and get a shell
Read the Docs
interactive console
$ emuko dow
[debian-netboot] -> ~/.emuko/riscv64/debian-netboot
linux OK (sha256 verified)
initrd.gz OK (sha256 verified)
$ emuko start
Connected to emukod at 127.0.0.1:7788
Ctrl+] Detach (daemon keeps running)
emuko start Reattach later
emuko kill Shut down daemon
[ 0.000000] Linux version 6.12 (riscv64)
[ 0.000000] Machine model: riscv-virtio,qemu
[ 0.000000] SBI specification v0.2 detected
...
~ # _

Start emulating

Open source under Apache 2.0. One dependency. Pure Rust. Works on macOS and Linux.