Hi everyone 👋
I want to share a hobby project I've been working on: VirtoMir, a web interface for managing virtual machines on a Linux host running KVM/QEMU with libvirt.
It's early, it's rough in places, and I'm mostly posting to get feedback from people who know this space better than I do.
Why I started it
I have a single KVM box at home. The existing options didn't quite fit how I wanted to use it:
- virsh is great, but I wanted something visual for day-to-day work.
- virt-manager is detailed, but it's a desktop app and awkward to use remotely.
- Proxmox is excellent, but it's a whole distribution. For one machine that felt like more than I needed.
- Cockpit is close, but I kept dropping to XML for the settings I cared about.
So I started building a browser UI that sits on top of an existing libvirt install. It doesn't replace anything: your VMs stay normal libvirt VMs, and anything you do in virsh shows up in the UI too. If you remove VirtoMir, your machines are untouched.
What it does today
The basics I use every day:
- Create a VM from an ISO or a cloud image (with cloud-init)
- Start, stop, snapshot, clone
- A console in the browser (VNC / SPICE / serial)
- Live CPU, disk and network graphs, updated every second
- An XML diff before any settings change is saved, so you see exactly what will change
There are more features in the repo (multi-host, backups and so on), but honestly many of them are only tested in my own lab, and some haven't been tried on real hardware at all. The README marks those as experimental.
How it's built
- Backend: Go, talking to libvirt. It ships as a single binary with the UI embedded, with no database or agents.
- Frontend: Svelte 5 + TypeScript.
- Live data: Server-Sent Events, one sample per second.
- Sign-in: your Linux account through PAM, behind self-signed TLS by default.
About AI
I want to be upfront: I'm building this with heavy AI assistance. I decide what to build, review the changes, and test them on my own KVM host, but a lot of the code was written together with an AI coding assistant.
I know there's a lot of fatigue around AI-generated projects, and I understand why. That's one more reason I'd really value people looking at it critically.
Try it (safely)
- Online demo with made-up data, nothing to install: https://onurbaydas.github.io/VirtoMir/demo/
- Try it in a throwaway VM without touching your own servers: https://github.com/onurbaydas/VirtoMir/blob/main/docs/try-in-a-vm.md
Please don't put it on anything important yet. It's a 0.x hobby project.
I'd love your feedback
I'm still learning, so any of these would help a lot:
- What feels confusing or missing compared to the tools you use now?
- Does it install and run on your distro? (I've mostly tested Ubuntu.)
- Anything that looks wrong or unsafe in the code?
Repo: https://github.com/onurbaydas/VirtoMir. Issues, discussions and comments here are all welcome.
Thanks for reading! 🙏

Top comments (1)
The XML thing in Cockpit is exactly what pushed me away too.
Showing the diff before saving is a smart move.
That is where most of my mistakes used to happen.