An open IP-KVM on the ESP32-P4 - a target machine's screen, and a USB keyboard and mouse, in a browser.
Website · Flash from the browser · Releases
Reach a machine that has no working operating system: a BIOS screen, a boot menu, a kernel that will not come up. A small ESP32-P4 board plugs into the target's HDMI output and a USB port, and you get its screen, sound, keyboard and mouse in a browser tab, from a laptop, a phone or a tablet. Nothing to install on either end, no cloud, no account.
- Picture through a TC358743 bridge (or the LT6911D on the M5Stack Unit PoE-P4), H.264 over WebRTC or a WebSocket, or MJPEG. It follows the target from an 800x600 firmware screen to a 1080p desktop on its own.
- Sound from HDMI, live in the browser and in recordings.
- Keyboard, mouse and gamepad over USB, as the target sees real ones. The pointer is absolute, so clicks land where you aim.
- Virtual media: disk and CD/DVD images from microSD, to boot or install from.
- Recordings, screenshots and a dashcam on microSD, and the screen as text where the link is too thin for video.
- From anywhere with Tailscale or WireGuard built in, without opening a port.
- HTTPS, a login and two-factor codes, with a certificate the device issues itself.
- Updates itself over the network, into a spare slot, with rollback.
Runs on a dozen boards from Waveshare, Espressif and M5Stack. The list, with what is tested, is on espkvm.io.
| espkvm | The firmware. Start here. |
| console | The web console (Vue), a submodule of the firmware. |
| espkvm.io | The project page, the blog and the browser flasher. |
| fw | Images and update manifests behind fw.espkvm.io, written by the release workflow. |
| check | check.espkvm.io, the opt-in count of devices in use. |
| skills | Skills that let an AI agent drive a computer through ESP-KVM. |
| espkvm-term | Experimental: an ESP-KVM screen on an M5Stack Tab5, no browser. |
| microlink | Tailscale client for the ESP32, forked from CamM2325/microlink. |
| esp_wireguard | WireGuard for ESP-IDF, forked from trombik/esp_wireguard. |
ESP-KVM began as a fork of jrowny/p4kvm by Jonathan Rowny. The TC358743 bring-up and the direct MIPI_CSI_BRIDGE programming - the hard, weeks-of-reverse-engineering part - are still the foundation. Everything above them was rewritten. Thank you, Jonathan, for putting it in the open.
A non-commercial, community open-source project.
Apache-2.0. Not for the public internet: keep it on a network you trust, or reach it over Tailscale or WireGuard.
