A headless machine in a closet - a home server, a hypervisor, a NAS - is wonderful right up until it doesn't boot. No ping, no SSH, dead web UI. Is it stuck in the BIOS? Did the kernel panic? Is it politely waiting for someone to press F1 after a RAM change three weeks ago? You can't know without dragging a monitor and keyboard to it.

The grown-up answer is an IP-KVM: a box that captures the machine's HDMI output, pretends to be its USB keyboard and mouse, and puts both in a browser. You see exactly what a monitor would - all the way down to the BIOS and the boot menu - and you type and click as if you were there. The target needs no agent, no OS, not even a working boot. It has no idea its "monitor" and "keyboard" are a little board on the network.

Commercial IP-KVMs are expensive. PiKVM is great but rides the Raspberry Pi supply. Then Espressif shipped the ESP32-P4: a RISC-V chip with a MIPI-CSI camera interface, 32 MB of PSRAM, and USB 2.0 High-Speed. A camera input means you can hang an HDMI-to-CSI bridge off it and capture video - so a full IP-KVM becomes two dev boards and a ribbon cable, with no soldering. That project is ESP-KVM, and it's fully open source (Apache-2.0).

Credit where it's due

This builds directly on Jonathan Rowny's work - jrowny/p4kvm and his Hackaday project ESP32-P4 IP KVM. An IP-KVM on the ESP32-P4 is an obvious thing to want, but he's the one who cracked the genuinely hard part - bringing up the Toshiba TC358743 HDMI-to-CSI bridge and getting frames off the P4's CSI receiver - and put it out in the open. He also named the exact wall this project later climbed: he wanted H.264 but was stuck on MJPEG, because rev-1.3 silicon forces a colour-space detour that the newer revision removes. ESP-KVM is everything built on top of his driver (web console, USB HID, security, virtual media, networking, OTA) - and on rev-3.2 silicon that H.264 wall is gone. Same licence as his.

What you get (all working today)

The interesting hardware bits

Boards it runs on

It's built per board (one-file overlays), and a browser flasher installs the right image over USB:

Full build story, hardware gotchas and measured numbers are in the logs.