Files
volt-vmm/vmm
Karl Clinger 40ed108dd5 Volt VMM (Neutron Stardust): source-available under AGPSL v5.0
KVM-based microVMM for the Volt platform:
- Sub-second VM boot times
- Minimal memory footprint
- Landlock LSM + seccomp security
- Virtio device support
- Custom kernel management

Copyright (c) Armored Gates LLC. All rights reserved.
Licensed under AGPSL v5.0
2026-03-21 01:04:35 -05:00
..

Volt VMM

A lightweight, secure Virtual Machine Monitor (VMM) built on KVM. Volt is designed as a Firecracker alternative for running microVMs with minimal overhead and maximum security.

Features

  • Lightweight: Minimal footprint, fast boot times
  • Secure: Strong isolation using KVM hardware virtualization
  • Simple API: REST API over Unix socket for VM management
  • Async: Built on Tokio for efficient I/O handling
  • VirtIO Devices: Block and network devices using VirtIO
  • Serial Console: 8250 UART emulation for guest console access

Architecture

volt-vmm/
├── src/
│   ├── main.rs         # Entry point and CLI
│   ├── vmm/            # Core VMM logic
│   │   └── mod.rs      # VM lifecycle management
│   ├── kvm/            # KVM interface
│   │   └── mod.rs      # KVM ioctls wrapper
│   ├── devices/        # Device emulation
│   │   ├── mod.rs      # Device manager
│   │   ├── serial.rs   # 8250 UART
│   │   ├── virtio_block.rs
│   │   └── virtio_net.rs
│   ├── api/            # HTTP API
│   │   └── mod.rs      # REST endpoints
│   └── config/         # Configuration
│       └── mod.rs      # VM config parsing
└── Cargo.toml

Building

cargo build --release

Usage

Command Line

# Start a VM with explicit options
volt-vmm \
  --kernel /path/to/vmlinux \
  --initrd /path/to/initrd.img \
  --rootfs /path/to/rootfs.ext4 \
  --vcpus 2 \
  --memory 256

# Start a VM from config file
volt-vmm --config vm-config.json

Configuration File

{
  "vcpus": 2,
  "memory_mib": 256,
  "kernel": "/path/to/vmlinux",
  "cmdline": "console=ttyS0 reboot=k panic=1 pci=off",
  "initrd": "/path/to/initrd.img",
  "rootfs": {
    "path": "/path/to/rootfs.ext4",
    "read_only": false
  },
  "network": [
    {
      "id": "eth0",
      "tap": "tap0"
    }
  ],
  "drives": [
    {
      "id": "data",
      "path": "/path/to/data.img",
      "read_only": false
    }
  ]
}

API

The API is exposed over a Unix socket (default: /tmp/volt-vmm.sock).

# Get VM info
curl --unix-socket /tmp/volt-vmm.sock http://localhost/vm

# Pause VM
curl --unix-socket /tmp/volt-vmm.sock \
  -X PUT -H "Content-Type: application/json" \
  -d '{"action": "pause"}' \
  http://localhost/vm/actions

# Resume VM
curl --unix-socket /tmp/volt-vmm.sock \
  -X PUT -H "Content-Type: application/json" \
  -d '{"action": "resume"}' \
  http://localhost/vm/actions

# Stop VM
curl --unix-socket /tmp/volt-vmm.sock \
  -X PUT -H "Content-Type: application/json" \
  -d '{"action": "stop"}' \
  http://localhost/vm/actions

Dependencies

Volt leverages the excellent rust-vmm project:

  • kvm-ioctls / kvm-bindings - KVM interface
  • vm-memory - Guest memory management
  • virtio-queue / virtio-bindings - VirtIO device support
  • linux-loader - Kernel/initrd loading

Roadmap

  • Project structure
  • KVM VM creation
  • Guest memory setup
  • vCPU initialization
  • Kernel loading (bzImage, ELF)
  • Serial console
  • VirtIO block device
  • VirtIO network device
  • Snapshot/restore
  • Live migration

License

Apache-2.0