github.com/ralsina/kv
0.12.1 / published Nov 18, 2025 / repository
A modern remote KVM
kv
KV is a modern, simple remote KVM solution. Minimal dependencies, easy to set up, and designed for performance.
Features
- Stream video and audio from the server's HDMI output
- Send keyboard and mouse events from a single-board computer (SBC) to the server
- Expose disk images to the server as if they were plugged via USB thumb drives
You can see a short demo video here
Some more information in the website
There is a tutorial in Reddit by VeryLargeCucumber
Known Bugs
- Framerate detection is broken. You can use
-fas a workaround.
TODO
- ✅ Audio streaming
- ✅ Basic Auth
- ✅ Change resolution
- Use ttyd to access the kvm itself
- ✅ Performance improvements
- ✅ Better UX for mass storage
- SSL support
- Video/Audio demuxing
- Other pixel formats support
Installation
You can build from source or get the static binaries from the releases page
Put it somewhere, run it, look at the options.
Usage
To setup a KVM you need:
- A SBC with an OTG port (the kvm). I use a Radxa Zero.
- A system you want to control (the server)
- A USB dongle to capture HDMI (these are super cheap)
- Misc cables and adapters
Here's how my setup looks:
The white cable goes from the OTG port in the SBC to a regular USB port in the server. Through this cable the server powers the SBC and the SBC sends keyboard and mouse events to the server.
The HDMI dongle is connected to a USB port in the SBC and captures the HDMI output from the server via a normal HDMI cable.
You can ignore the black cable, that's monitor output for the SBC and you would normally not have it.
More details in docs/handbook.md.
Development
Details to be explained
Contributing
- Fork it (https://github.com/ralsina/kv/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Contributors
- Roberto Alsina - creator and maintainer
API
- AlsaPcmCapture
- AntiIdle
- AudioStreamer
- GlobalKVM
Global KVM manager module
- HIDComposite
HID Composite Module for USB Gadget functionality (Keyboard + Mouse + Mass Storage)
- HIDKeyboard
HID Keyboard Module for USB Gadget functionality
- HIDMouse
HID Mouse Module for USB Gadget functionality
- HardwareDetector
- KVMManagerV4cr
Updated KVM manager using V4cr for video capture instead of FFmpeg
- Main
- MassStorageManager
Mass Storage Manager for KVM system (new model)
- OggOpusMuxer
A pure Crystal implementation of an Ogg/Opus muxer.
- V4crVideoCapture
V4cr-based video capture module to replace FFmpeg
- V4crVideoUtils
V4cr-based video device detection utilities
- WebSocketManager
WebSocket connection manager for broadcasting messages to all connected clients