A few tools to help me manage and run virtual machines across a homelab cluster.
waifud was made for my own personal use and I do not expect it to be very useful outside that context. If you do want to run this on your infrastructure anyways, please contact me.
THIS IS EXPERIMENTAL! USE IT AT YOUR OWN PERIL!
TODO(Xe): Link to blogpost on the design/implementation once it is a thing.
Blogposts about waifud:
Overall architecture diagram (with incomplete components marked with a clock):
flowchart TD
subgraph control plane
WD[fa:fa-rust waifud]
WC[fa:fa-rust waifuctl]
ID[fa:fa-golang fa:fa-clock isekaid]
MD[fa:fa-golang fa:fa-clock megamid]
PD[fa:fa-golang fa:fa-clock portald]
end
subgraph VM plane
LV[fa:fa-c libvirt]
WH[fa:fa-linux runner\nnodes]
VM[fa:fa-linux virtual\nmachines]
end
subgraph external
TS[fa:fa-golang Tailscale]
end
PD --> |tailnet ingress for| WD
WC --> |operator tool for| WD
WC --> |usually connects via|PD
ID --> |fetches node metadata\nand secrets for| WD
VM --> |cloud-init\nmetadata| ID
WD --> |manages libvirt on| WH
LV --> |actually runs VMs| VM
VM --> |network storage| MD
WD --> |sets limits for\nrequests metrics from| MD
WH --> |runs| LV
WH <--> |subnet router\ninterconnect| TS
TS --> |network layer for| PD
VM --> |usually a part of| TS