mrkeyoor.com_
Mon 14 Sept 15:47 UTC
Self-Hostedevaluationupdated 14 Sept 2026

kvm review

JetKVM is the device software and browser interface for a physical KVM-over-IP appliance. It captures a target computer's HDMI output and emulates USB keyboard and mouse input, giving you browser control even when that computer is at the BIOS screen or its operating system is broken.

Verdict

Our JetKVM build passed in 13 seconds, but 5 of 27 Go test results failed after 66 seconds, so the repository is buildable while its clean-container test story needs investigation. The product is worth considering for a homelab or a handful of remote machines when 1080p video, local browser access, and optional cloud or Tailscale routing cover the job. Keep hands-on recovery available for an unattended site, and test HDMI, USB, reboot, update, and long-uptime behavior on the exact target hardware before standardizing on it.

We ran it

Lab card: what happened when we ran kvmScreenshot of kvm (jetkvm.com)
Install✓ · 35s158 packages
Build✓ · 13s
Tests✗ · 66s22 passed · 5 failed of 27 (go test)
Repo602 files~101,407 lines of source · 11.2 MB · 2 CI workflows

Answers from our run

Does kvm build from source?

Dependencies installed in 35 seconds (158 packages), and the build succeeded in 13 seconds. We cloned commit 151a67c into a clean Debian container with 3 CPUs and no project-specific setup.

Do kvm's tests pass?

Not all of them: 22 of 27 passed and 5 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use kvm?

Anyone seeking a software-only remote desktop: full use and development require a physical JetKVM device connected by HDMI, USB, and Ethernet.

What are the alternatives to kvm?

PiKVM, NanoKVM. Our JetKVM build passed in 13 seconds, but 5 of 27 Go test results failed after 66 seconds, so the repository is buildable while its clean-container test story needs investigation.

Setup3/5Build passed, but 5 of 27 Go test results failed
Docs4/5Good wiring, development, remote access, and recovery guidance
Community5/55,102 stars, a September 14 push, and busy issue activity
Maturity3/5Release 0.5.9 is active; test and long-uptime risks remain

Who it’s for

Homelab and small-fleet operators who need 1080p at 60 fps remote console access before an operating system starts.
People who want local browser control without making a cloud account.
Administrators willing to add the optional ATX board for remote power and reset control.
Go and TypeScript contributors who own JetKVM hardware for device tests.

Who it’s NOT for

Anyone seeking a software-only remote desktop: full use and development require a physical JetKVM device connected by HDMI, USB, and Ethernet.
Workflows that require 4K capture: the README specifies 1080p at 60 fps, while release 0.5.9 adds 120 Hz without claiming 4K.
Fully isolated sites that need easy offline maintenance: issue 645 says offline use still has time-sync and HTTPS gaps, and issue 96 tracks difficult offline updates.
Organizations whose cloud login must use an identity provider other than Google: the remote-access guide says Google is the only current OIDC provider.
Operators who cannot tolerate an unexplained package-test failure: our run ended with 5 failed results out of 27, and the supplied tail does not name those failing packages.
Remote sites with no physical recovery option: issue 1534 reports one unit becoming unreachable after 1 to 2 weeks and recovering only after a power cycle, without confirming the cause.

Setup reality

Our sandbox installed 158 Go packages in 35 seconds. The build passed in 13 seconds. Tests failed with exit 1 after 66 seconds: 22 passed and 5 failed out of 27. The tail lists 10 passing packages and ends with FAIL, but it does not show the 5 failing package names or their errors.

The 11.2 MB checkout contained 602 files and about 101,407 source lines. Our scan found 2 CI workflows, no Dockerfile, and no tests directory; Go tests are stored beside source, and the repository also documents separate hardware end-to-end work.

Using the product needs a JetKVM unit connected to the target by HDMI and USB, plus Ethernet and power. Local browser access needs no cloud login. Cloud remote access is optional and uses Google OIDC; Tailscale and Headscale are another documented route. Development asks for Go 1.24.4+, Node 22.21.1, SSH access, and real hardware for full tests.

1080p at 60 fps reaches machines before their OS starts

JetKVM sits outside the target computer. HDMI carries the picture into the appliance, USB emulates keyboard and mouse, and Ethernet connects its web interface to the network. The README advertises H.264 video at 1080p and 60 fps, with a claimed 30 to 60 ms latency. Because control does not depend on software running on the target, an administrator can enter firmware setup, reinstall an operating system, or inspect a failed boot from a browser.

The basic hardware setup uses 3 functional links to the target and network: USB-C, Mini HDMI, and Ethernet. The front screen shows the assigned IP address, cable status, and active connections. Entering that address opens the local UI without a JetKVM Cloud account. An optional ATX extension connects to a desktop motherboard's front-panel header, allowing remote power and reset while preserving the case buttons and LEDs. Serial and DC power extensions cover different equipment.

Release 0.5.9 adds 120 Hz and experimental audio

The current release expands the device beyond its original console loop. Version 0.5.9 adds 120 Hz capture, a phone-oriented trackpad mode, experimental HDMI audio, USB recovery changes, and a setting that hides JetKVM as a monitor when idle. The audio path is off by default and marked experimental. The release also includes WebRTC shutdown, USB, security, accessibility, and video fixes, which shows how many hardware and browser boundaries the firmware has to coordinate.

Remote access is optional and disabled by default. JetKVM Cloud uses WebRTC, with STUN and TURN available when direct peer connections fail. The official guide says traffic is encrypted in transit with DTLS and SRTP, and device authorization currently uses Google OIDC. Tailscale is another route and can point at a Headscale control server, although it is not preinstalled. Sites with their own identity provider should notice the Google-only cloud login before choosing that path.

What happened when we ran it

Our sandbox installed 158 Go packages in 35 seconds and built commit 151a67c in 13 seconds. The checkout was 11.2 MB, with 602 files and roughly 101,407 lines of source. The scan found 2 CI workflow files, no Dockerfile, and no directory named tests. That layout is normal enough for Go packages with colocated _test.go files, but the repository also contains UI and hardware test paths outside a single conventional test folder.

The test command failed after 66 seconds with exit code 1. Its result counted 22 passing and 5 failing outcomes out of 27. The supplied tail names successful packages such as audio, OTA, Tailscale, USB gadget, utilities, web security, and network management, then ends with FAIL. It does not include the errors or names for the 5 failures. The useful conclusion is limited: the full command did not pass in our unprivileged Go 1.24 container.

A passing compilation and 22 package results do not exercise the complete product. Our run had no JetKVM appliance, HDMI source, emulated USB host, front display, ATX board, browser WebRTC session, or cloud credentials. We therefore measured source setup rather than video quality or the README's latency claim. A buyer should judge those on the intended server, monitor mode, network, keyboard layout, and browser, especially if remote recovery has no nearby person.

Full development needs Go 1.24.4 and a real device

The development guide asks for Go 1.24.4+, Node 22.21.1, SSH access, and a JetKVM unit for full work. A deployment script builds the React and TypeScript UI plus the Go backend, copies them to the device, and opens the result at its IP address. Linux or macOS is recommended; Windows contributors are steered toward WSL because the workflow depends on shell scripts and Unix behavior.

End-to-end testing carries real consequences. The documented command needs a device wired to an active computer through HDMI and USB, GitHub CLI authentication, and access to a test host. The guide warns that the suite deploys changed firmware and may reset the device configuration. It also describes capability-based exclusions for hardware a test bench lacks.

Offline updates and long uptime still need scrutiny

JetKVM works locally, but issue 645 records gaps for a fully isolated network. The report says static public time servers can interfere with time sync and HTTPS, while offline application and firmware updates remain difficult. Issue 96 has 32 comments around offline updating. The normal updater checks JetKVM's release API, verifies the binary checksum, and rolls releases out in stages, beginning with 10% of devices according to the update guide.

Long-running remote sites need a recovery drill. Issue 1534 describes one version 0.5.8 unit becoming unreachable after roughly 1 to 2 weeks and returning after a power cycle. The reporter noticed the behavior after enabling MQTT and Home Assistant discovery but explicitly did not establish that as the cause. Issue 1483 describes a separate unit whose media pipeline became stuck shortly after boot. These are individual reports, yet both concern the moment a KVM is supposed to rescue another machine.

September 14 activity accompanies 307 open items

GitHub listed 5,102 stars, 307 combined open issues and pull requests, and a last push on September 14, 2026. Release 0.5.9 arrived September 9, and issue updates continued through September 11. The same-week code and issue activity shows active development, while the combined queue includes hardware reports, feature requests, and pull requests rather than 307 confirmed defects.

JetKVM has the right shape for remote recovery: a dedicated box, local access, GPL-2.0 software, and optional remote routes. Our 13-second build lowers the barrier to inspecting changes, while the 5 failed test results prevent a clean bill of health for commit 151a67c. Compare it with PiKVM and NanoKVM, then test cold boot, BIOS input, virtual media, network loss, firmware update, and a multi-week soak before placing it somewhere inconvenient.

Alternatives

ProjectWhat it isPick it when
PiKVMA Raspberry Pi based KVM-over-IP system with DIY and assembled hardware paths.pick this instead when Raspberry Pi hardware, a larger established ecosystem, or a more configurable build is preferable to JetKVM's compact appliance.
NanoKVMA compact RISC-V KVM-over-IP device with open GPL software.pick this instead when you want to compare another small hardware appliance and its available ports, software, and remote-access model fit better.

What people are saying

  1. [github-trending] jetkvm/kvm

Sources

  1. JetKVM repository and README
  2. JetKVM 0.5.9 release
  3. JetKVM development guide
  4. JetKVM remote access guide
  5. Issue 645: offline device support
  6. Issue 1534: unit unreachable after extended uptime
  7. Issue 1483: media pipeline stuck after boot

More self-hosted reviews

Mailspring · nango · SmartTubeLegacy · danmu_api · tvbox · opendisplay · the whole board →