Virtual
The Virtual Aether models virtualisation alongside the physical estate — the clusters that pool compute, the virtual machines that run on them, and the interfaces those VMs present to the network. Where Infrastructure tracks the metal, Virtual tracks what runs on it.
public/screenshots/virtual-clusters.pngHow it fits together
Section titled “How it fits together”- Cluster Types and Cluster Groups classify and group clusters before the cluster records exist — type is what kind (e.g. VMware vSphere, Proxmox, Hyper-V), group is which rollup (e.g. by site or environment).
- Clusters reference a type and an optional group, and are where compute is pooled.
- Virtual Machines are hosted on a cluster; VM Interfaces are the virtual NICs on a VM — the bridge back to the Network Aether.
Modules
Section titled “Modules”Cluster Types
Section titled “Cluster Types”Classification for clusters — the virtualisation platform or technology a cluster runs on (e.g. VMware vSphere, Proxmox, Hyper-V). Create types before the clusters that reference them.
Fields
| Field | Type | Notes |
|---|---|---|
name | string · required | Display name. |
slug | string | URL-safe identifier, unique. Auto-derived from name when omitted. |
description | string | Free text. |
API — GET/POST /api/cluster-types, GET/PATCH/DELETE /api/cluster-types/{id}.
Cluster Groups
Section titled “Cluster Groups”A grouping for clusters, typically by site, region, or environment, so related clusters roll up together.
Fields
| Field | Type | Notes |
|---|---|---|
name | string · required | Display name. |
slug | string | URL-safe identifier, unique. Auto-derived from name when omitted. |
description | string | Free text. |
API — GET/POST /api/cluster-groups, GET/PATCH/DELETE /api/cluster-groups/{id}.
Clusters
Section titled “Clusters”A pool of compute referencing a type and an optional group. Virtual machines are placed against a cluster, and a cluster may be pinned to a site.
Fields
| Field | Type | Notes |
|---|---|---|
name | string · required | Display name. |
typeId | uuid → Cluster Type | Cleared to null if the type is deleted. |
groupId | uuid → Cluster Group | Optional rollup. Cleared to null if the group is deleted. |
siteId | uuid → Site | Optional home site (Infrastructure Aether). Cleared to null if the site is deleted. |
status | string | Defaults to active. Free text — no fixed enum. |
description | string | Free text. |
API — GET/POST /api/clusters, GET/PATCH/DELETE /api/clusters/{id}.
Virtual Machines
Section titled “Virtual Machines”The VM records — name, status, and allocated resources — each optionally hosted on a cluster and tagged with a platform (operating system).
Fields
| Field | Type | Notes |
|---|---|---|
name | string · required | Display name. |
clusterId | uuid → Cluster | Host cluster. Cleared to null if the cluster is deleted. |
status | string | Defaults to active. Free text — no fixed enum. |
vcpus | integer | Allocated virtual CPUs. |
memoryMb | integer | Allocated memory, in MB. |
diskGb | integer | Allocated disk, in GB. |
platformId | uuid → Platform | Operating system / platform (Infrastructure Aether). Cleared to null if the platform is deleted. |
description | string | Free text. |
Notes
vcpus,memoryMb, anddiskGbare independent integer attributes — there is no derived resource rollup against the host cluster today.statusis stored as free text (defaultactive); it is not constrained to a fixed set of values.
public/screenshots/virtual-vms.pngVM Interfaces
Section titled “VM Interfaces”Virtual network interfaces (NICs) on a VM. Deleting the parent VM cascades and removes its interfaces.
Fields
| Field | Type | Notes |
|---|---|---|
name | string · required | Interface name, e.g. eth0. |
vmId | uuid → Virtual Machine | Parent VM. ON DELETE CASCADE — removed with the VM. |
macAddress | string | MAC address. |
mtu | integer | Maximum transmission unit. |
enabled | boolean | Defaults to true. |
description | string | Free text. |
Notes
- The
vmIdforeign key cascades on delete — unlike other Virtual FKs, which null out — so an interface never outlives its VM. enabledis set on the record directly; the CRUD form acceptsname,vmId,macAddress,mtu, anddescription.
public/screenshots/virtual-vm-detail.pngGood to know
Section titled “Good to know”- Group before you place. Cluster types and groups are the scaffolding — create them first so clusters, and the VMs on them, have something to reference.
- Foreign keys to a type, group, site, cluster, or platform are all optional and null out when their target is deleted; only the VM → VM-interface link cascades.
- Each module supports full CRUD — list, create, edit, and delete — via both the app UI and the REST API.
Resources are exposed under /api/cluster-types, /api/cluster-groups,
/api/clusters, /api/virtual-machines, and /api/vm-interfaces — see the
API reference. All require authentication and virtual Aether access.
List endpoints accept page, pageSize, search (ILIKE across name and
description), sort (name or createdAt), and order.