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
This commit is contained in:
Karl Clinger
2026-03-21 01:04:35 -05:00
commit 40ed108dd5
143 changed files with 50300 additions and 0 deletions

139
vmm/README.md Normal file
View File

@@ -0,0 +1,139 @@
# 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
```bash
cargo build --release
```
## Usage
### Command Line
```bash
# 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
```json
{
"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`).
```bash
# 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](https://github.com/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
- [x] 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