Skip to the content.

You do not need any of this to use kvm-it. The releases are a signed MSI/zip for Windows and an AppImage for Linux: install, run, done. This page is for people who want to hack on it.

What you need

podman (or docker, with CONTAINER_RUNTIME=docker). Nothing else touches your machine: the Rust and ESP-IDF toolchains live in pinned containers.

git clone https://github.com/spilloid/kvm-it && cd kvm-it

scripts/rs.sh test       # desktop tests
scripts/rs.sh clippy     # lints
scripts/rs.sh build      # Linux app   -> desktop/target/release/{kvmit,kvmit-gui}
scripts/rs.sh windows    # Windows exes (cross-built) -> desktop/target/x86_64-pc-windows-gnu/release/

scripts/fw.sh test       # firmware host tests (no hardware)
scripts/fw.sh build      # adapter firmware -> firmware/build

Flashing a build you made

desktop/target/release/kvmit flash --firmware firmware/build     # or: scripts/fw.sh flash

firmware/release/ holds the exact images every package ships. If you change anything under firmware/, rebuild, copy firmware/build over firmware/release, and update FIRMWARE.txt and SHA256SUMS (CI checks it, see RELEASING). Port permissions on Linux, the esptool fallback and the LED/button reference are in the hardware guide.

The boot drive image

The adapter’s read-only iPXE drive is firmware/ipxe/ipxe.img, built from the signed shim and iPXE in firmware/ipxe/signed/ and autoexec.ipxe (edit that script to boot your own server) by scripts/build-ipxe-image.sh (needs dosfstools, mtools and sfdisk). Then scripts/fw.sh build and scripts/refresh-firmware-release.py (the latter refreshes firmware/release, what the app ships). To try it without a spare PC: tools/ipxe-test/boot-vm.sh off boots a UEFI virtual machine from the real adapter and screenshots it (sb = Secure Boot on).

Where things are

Path What
desktop/ Rust workspace: kvmit (CLI + GUI) and its crates (BLE, HID, video, script engine, flasher)
firmware/ ESP-IDF project: ESP32-S3, TinyUSB HID, NimBLE
protocol/ Wire protocol v1 and the golden vectors both sides test against
tools/screenshots/ The harness that takes the pictures on this site, against a synthetic demo target
scripts/, installer/ Containerised builds, release packaging, the MSI and AppImage recipes

Working agreements, review rounds and what is verified where: development process, architecture, releasing.