miniweb: web interface for minimega

vmbetter: Create Virtual Machine Images

vmbetter is a tool that takes a configuration file and outputs a
minimega-bootable, Debian-based VM. It can create custom initrd images, CD
ISOs, or QEMU-compatible hard disk images. You can specify a list of Debian
packages to install, insert any additional files you wish, and give a list of
commands to run after the filesystem has been built (to perform any last-minute
configuration).

igor: Cluster Reservations

igor lets you make reservations and, on properly-configured clusters, set up
reserved nodes to boot from user-specified kernel+initrd files. See
igor's documentation for more information.

powerbot: Networked PDU Control

powerbot allows you to control outlets on networked Power Distribution Units.
It currently supports TrippLite and Server Tech PDUs, and it's easy to add
support for additonal devices!
powerbot's documentation describes how
to set up and use it.

rfbplay: Playback for VNC recordings

rfbplay plays vnc recordings created by minimega using `vnc fb record` in the
browser or transcribes them using ffmpeg. See the
VNC documentation for more
information.

vncdrone: automated VNC replayer

vncdrone takes VNC kb/mouse recordings and replays them on compatible VMs. It
looks at the recording filename, finds VMs using a disk with a matching
filename (modulo the file extension), and start the vnc replay on all matching
VMs.

nfcat: read minimega binary netflows

minimega's `capture` API can write netflow records in a binary format which can
be read with nfcat. nfcat dumps the records to stdout in ASCII format.

minitest: runtime testing

minitest is a testing tool for minimega -- it uses a corpus of tests to
determine whether minimega gets the expected response for a series of commands.
See the minitest documentation for
more information.

minifuzzer: simple fuzzer for minimega

minifuzzer generates random minimega commands and runs them on a minimega
instance to find crashes.

passwordify: modify credentials for ramdisk images

This utility installs a root password or root SSH keys in a ramdisk image. It
is intended to help prevent interference between users on a cluster by
implementing login controls on the bootable image. Running
`sudo passwordify SOURCE NEW` will unpack the *source* ramdisk image, prompt
for a root password, and re-pack it into the specified *new* file, leaving the
source unchanged. The `-keys` flag allows you to specify an authorized_keys
formatted file (one public key per line) to be installed in the ramdisk's
`/root/.ssh/authorized_keys`; this can be used to allow key-based root login.
Specifying the `-passwordless` flag will configure the image such that its own
RSA keys are in its authorized_keys file, which will allow multiple nodes
booted from the same image to ssh to each other without needing password input.

rond: standalone command-and-control server

minimega includes a `ron` server to provide command-and-control for VMs. rond
is a standalone command-and-control server with its own CLI to control physical
machines running miniccc.

vmconfiger: code generation

vmconfiger generates the `vm config` APIs automatically for minimega. Only
developers that are changing the VMConfig structs will need to use this. It
runs automatically with `go generate`.