- Quickly create and SSH into throwaway VMs.
- Fast boot times using minimal cloud images.
- On-demand downloads for
Debian,Ubuntu,Arch,Fedora,CentOS,RockyandAlmacloud images. - Automatically injects your
~/.ssh/*.pubkeys into the VM'sauthorized_keys. for passwordless ssh access. - Shell completion
- Utilizes
KVM,QEMU, andlibvirtin the user session (qemu:///session) — no root required.
VmChamp creates local VMs in seconds and provides SSH access.
Bypassing a lengthy manual VM setup process. Especially useful when Containers do not suffice.
RUN:
vmchamp run mytestvm
# or for more options
vmchamp run mytestvm --os debian11 --mem 512MiB --disk 20GiBDefaults: OS =
Debian13· Memory =512MiB· Disk =8GiB· CPUs =1· User =userPlain numbers for
--memand--diskare interpreted as GiB (e.g.--disk 20→ 20 GiB,--mem 0.5→ 0.5 GiB).
vmchamp run mytestvm --os debian11 --mem 0.512 --disk 20Which leads to output:
️👉 Creating VM: mytestvm
💻 Using OS: Debian11
📔 Memory size: 512 MiB
💽 Disk size: 20 GiB
...output omitted...
⣷ Waiting for network...
...output omitted...
user@testvm:~$Every VM is provisioned via cloud-init (IsoImager.cs) with:
- A user named
user(override with--user). - All
*.pubfiles found in your~/.ssh/directory are copied into the VM'sauthorized_keys— SSH works immediately without a password. - The user has passwordless sudo (
ALL=(ALL) NOPASSWD:ALL).
No SSH password is set by default. See the FAQ for how to set one if needed.
VmChamp runs VMs in the QEMU/KVM user session (qemu:///session) — no root required.
To list your VMs from the terminal:
virsh --connect qemu:///session list --allTo view them in Virtual Machine Manager: File → Add Connection → QEMU/KVM user session.
Add the following to your .bashrc or .zshrc file
# For BASH
source <(vmchamp --completion bash)
# For ZSH
source <(vmchamp --completion zsh)TESTED on: Ubuntu 22.04; Debian 12
For details see Installation Guide
🔧 Prerequisites:
- Your machine supports
virtualization with KVM
# Installing requirements
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system
# Download latest VmChamp:
wget -qO- https://api.github.com/repos/mzwoelfer/VmChamp/releases/latest | grep "browser_download_url" | cut -d '"' -f 4 | wget -i - -O vmchamp
# Install VmChamp rootless
chmod +x vmchamp
mkdir -p ~/.local/bin
mv vmchamp ~/.local/bin/
export PATH="$PATH:$HOME/.local/bin"
vmchamp run testvmTo build VmChamp run:
./build.sh <version> <output dir>
# ./build.sh 1.2.3 ~/build/Output dir defaults to ./build/.
