Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@
- Release artifacts and cross-compile CI now include `arm` and `arm64` for
FreeBSD, OpenBSD, and NetBSD.

### Fixed

- QEMU/KVM lab guests on OpenBSD, NetBSD, DragonFly BSD, illumos, and Windows
now report `virtual: "kvm"` and `is_virtual: true` when native DMI/SMBIOS,
PCI, or WMI indicators expose the VM.
- Full fact output now omits empty optional top-level networking strings, such
as illumos `networking.ip6`, `networking.netmask6`, `networking.network6`,
and `networking.scope6` when no primary IPv6 address is available.
- Mountpoint entries with no stat, device, filesystem, or option data are now
omitted instead of rendering empty maps such as `mountpoints."/": {}`.

## v0.0.3 - 2026-06-18

### Added
Expand Down
5 changes: 5 additions & 0 deletions docs/schema/facts.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,7 @@ mountpoints.*:
type: map
description: A mounted filesystem, keyed by mount path.
platforms: [linux, darwin, windows, freebsd, openbsd, netbsd, dragonfly, illumos]
conditional: true
mountpoints.*.available:
type: string
description: The display amount of free space on the mount, such as 1.00 GiB.
Expand Down Expand Up @@ -590,6 +591,7 @@ networking.ip6:
type: string
description: The IPv6 address of the primary interface.
platforms: [linux, darwin, windows, freebsd, openbsd, netbsd, dragonfly, illumos]
conditional: true
networking.mac:
type: string
description: The MAC address of the primary interface.
Expand All @@ -607,6 +609,7 @@ networking.netmask6:
type: string
description: The IPv6 netmask of the primary interface.
platforms: [linux, darwin, windows, freebsd, openbsd, netbsd, dragonfly, illumos]
conditional: true
networking.network:
type: string
description: The IPv4 network of the primary interface.
Expand All @@ -615,6 +618,7 @@ networking.network6:
type: string
description: The IPv6 network of the primary interface.
platforms: [linux, darwin, windows, freebsd, openbsd, netbsd, dragonfly, illumos]
conditional: true
networking.primary:
type: string
description: The name of the primary interface.
Expand All @@ -623,6 +627,7 @@ networking.scope6:
type: string
description: The IPv6 scope of the primary interface, such as global or link.
platforms: [linux, darwin, windows, freebsd, openbsd, netbsd, dragonfly, illumos]
conditional: true

os.architecture:
type: string
Expand Down
10 changes: 5 additions & 5 deletions docs/supported-facts/darwin.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ $ facts --json
| `memory.system.total_bytes` | `integer` | no | The total physical memory, in bytes. |
| `memory.system.used` | `string` | no | The display amount of physical memory in use, such as 1.00 GiB. |
| `memory.system.used_bytes` | `integer` | no | The physical memory in use, in bytes. |
| `mountpoints.*` | `map` | no | A mounted filesystem, keyed by mount path. |
| `mountpoints.*` | `map` | yes | A mounted filesystem, keyed by mount path. |
| `mountpoints.*.available` | `string` | no | The display amount of free space on the mount, such as 1.00 GiB. |
| `mountpoints.*.available_bytes` | `integer` | no | The free space on the mount, in bytes. |
| `mountpoints.*.capacity` | `string` | no | The percentage of the mount's space in use. |
Expand Down Expand Up @@ -130,15 +130,15 @@ $ facts --json
| `networking.interfaces.*.network6` | `string` | yes | The IPv6 network of the interface's first binding. |
| `networking.interfaces.*.scope6` | `string` | yes | The IPv6 scope of the interface's first binding, such as global or link. |
| `networking.ip` | `string` | no | The IPv4 address of the primary interface. |
| `networking.ip6` | `string` | no | The IPv6 address of the primary interface. |
| `networking.ip6` | `string` | yes | The IPv6 address of the primary interface. |
| `networking.mac` | `string` | no | The MAC address of the primary interface. |
| `networking.mtu` | `integer` | yes | The maximum transmission unit of the primary interface. |
| `networking.netmask` | `string` | no | The IPv4 netmask of the primary interface. |
| `networking.netmask6` | `string` | no | The IPv6 netmask of the primary interface. |
| `networking.netmask6` | `string` | yes | The IPv6 netmask of the primary interface. |
| `networking.network` | `string` | no | The IPv4 network of the primary interface. |
| `networking.network6` | `string` | no | The IPv6 network of the primary interface. |
| `networking.network6` | `string` | yes | The IPv6 network of the primary interface. |
| `networking.primary` | `string` | no | The name of the primary interface. |
| `networking.scope6` | `string` | no | The IPv6 scope of the primary interface, such as global or link. |
| `networking.scope6` | `string` | yes | The IPv6 scope of the primary interface, such as global or link. |
| `os.architecture` | `string` | no | The operating system's hardware architecture, such as x86_64 or arm64. |
| `os.family` | `string` | no | The operating system family, such as Debian, RedHat, Darwin, or windows. |
| `os.hardware` | `string` | no | The hardware model of the machine, such as x86_64. |
Expand Down
10 changes: 5 additions & 5 deletions docs/supported-facts/dragonfly.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ $ facts --json
| `memory.system.total_bytes` | `integer` | no | The total physical memory, in bytes. |
| `memory.system.used` | `string` | no | The display amount of physical memory in use, such as 1.00 GiB. |
| `memory.system.used_bytes` | `integer` | no | The physical memory in use, in bytes. |
| `mountpoints.*` | `map` | no | A mounted filesystem, keyed by mount path. |
| `mountpoints.*` | `map` | yes | A mounted filesystem, keyed by mount path. |
| `mountpoints.*.available` | `string` | no | The display amount of free space on the mount, such as 1.00 GiB. |
| `mountpoints.*.available_bytes` | `integer` | no | The free space on the mount, in bytes. |
| `mountpoints.*.capacity` | `string` | no | The percentage of the mount's space in use. |
Expand Down Expand Up @@ -145,15 +145,15 @@ $ facts --json
| `networking.interfaces.*.operational_state` | `string` | yes | The operational state of the interface, such as up or down. |
| `networking.interfaces.*.scope6` | `string` | yes | The IPv6 scope of the interface's first binding, such as global or link. |
| `networking.ip` | `string` | no | The IPv4 address of the primary interface. |
| `networking.ip6` | `string` | no | The IPv6 address of the primary interface. |
| `networking.ip6` | `string` | yes | The IPv6 address of the primary interface. |
| `networking.mac` | `string` | no | The MAC address of the primary interface. |
| `networking.mtu` | `integer` | yes | The maximum transmission unit of the primary interface. |
| `networking.netmask` | `string` | no | The IPv4 netmask of the primary interface. |
| `networking.netmask6` | `string` | no | The IPv6 netmask of the primary interface. |
| `networking.netmask6` | `string` | yes | The IPv6 netmask of the primary interface. |
| `networking.network` | `string` | no | The IPv4 network of the primary interface. |
| `networking.network6` | `string` | no | The IPv6 network of the primary interface. |
| `networking.network6` | `string` | yes | The IPv6 network of the primary interface. |
| `networking.primary` | `string` | no | The name of the primary interface. |
| `networking.scope6` | `string` | no | The IPv6 scope of the primary interface, such as global or link. |
| `networking.scope6` | `string` | yes | The IPv6 scope of the primary interface, such as global or link. |
| `os.architecture` | `string` | no | The operating system's hardware architecture, such as x86_64 or arm64. |
| `os.family` | `string` | no | The operating system family, such as Debian, RedHat, Darwin, or windows. |
| `os.hardware` | `string` | no | The hardware model of the machine, such as x86_64. |
Expand Down
10 changes: 5 additions & 5 deletions docs/supported-facts/freebsd.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ $ facts --json
| `memory.system.total_bytes` | `integer` | no | The total physical memory, in bytes. |
| `memory.system.used` | `string` | no | The display amount of physical memory in use, such as 1.00 GiB. |
| `memory.system.used_bytes` | `integer` | no | The physical memory in use, in bytes. |
| `mountpoints.*` | `map` | no | A mounted filesystem, keyed by mount path. |
| `mountpoints.*` | `map` | yes | A mounted filesystem, keyed by mount path. |
| `mountpoints.*.available` | `string` | no | The display amount of free space on the mount, such as 1.00 GiB. |
| `mountpoints.*.available_bytes` | `integer` | no | The free space on the mount, in bytes. |
| `mountpoints.*.capacity` | `string` | no | The percentage of the mount's space in use. |
Expand Down Expand Up @@ -147,15 +147,15 @@ $ facts --json
| `networking.interfaces.*.operational_state` | `string` | yes | The operational state of the interface, such as up or down. |
| `networking.interfaces.*.scope6` | `string` | yes | The IPv6 scope of the interface's first binding, such as global or link. |
| `networking.ip` | `string` | no | The IPv4 address of the primary interface. |
| `networking.ip6` | `string` | no | The IPv6 address of the primary interface. |
| `networking.ip6` | `string` | yes | The IPv6 address of the primary interface. |
| `networking.mac` | `string` | no | The MAC address of the primary interface. |
| `networking.mtu` | `integer` | yes | The maximum transmission unit of the primary interface. |
| `networking.netmask` | `string` | no | The IPv4 netmask of the primary interface. |
| `networking.netmask6` | `string` | no | The IPv6 netmask of the primary interface. |
| `networking.netmask6` | `string` | yes | The IPv6 netmask of the primary interface. |
| `networking.network` | `string` | no | The IPv4 network of the primary interface. |
| `networking.network6` | `string` | no | The IPv6 network of the primary interface. |
| `networking.network6` | `string` | yes | The IPv6 network of the primary interface. |
| `networking.primary` | `string` | no | The name of the primary interface. |
| `networking.scope6` | `string` | no | The IPv6 scope of the primary interface, such as global or link. |
| `networking.scope6` | `string` | yes | The IPv6 scope of the primary interface, such as global or link. |
| `os.architecture` | `string` | no | The operating system's hardware architecture, such as x86_64 or arm64. |
| `os.family` | `string` | no | The operating system family, such as Debian, RedHat, Darwin, or windows. |
| `os.hardware` | `string` | no | The hardware model of the machine, such as x86_64. |
Expand Down
10 changes: 5 additions & 5 deletions docs/supported-facts/illumos.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ $ facts --json
| `memory.system.total_bytes` | `integer` | no | The total physical memory, in bytes. |
| `memory.system.used` | `string` | no | The display amount of physical memory in use, such as 1.00 GiB. |
| `memory.system.used_bytes` | `integer` | no | The physical memory in use, in bytes. |
| `mountpoints.*` | `map` | no | A mounted filesystem, keyed by mount path. |
| `mountpoints.*` | `map` | yes | A mounted filesystem, keyed by mount path. |
| `mountpoints.*.available` | `string` | no | The display amount of free space on the mount, such as 1.00 GiB. |
| `mountpoints.*.available_bytes` | `integer` | no | The free space on the mount, in bytes. |
| `mountpoints.*.capacity` | `string` | no | The percentage of the mount's space in use. |
Expand Down Expand Up @@ -163,15 +163,15 @@ $ facts --json
| `networking.interfaces.*.network6` | `string` | yes | The IPv6 network of the interface's first binding. |
| `networking.interfaces.*.scope6` | `string` | yes | The IPv6 scope of the interface's first binding, such as global or link. |
| `networking.ip` | `string` | no | The IPv4 address of the primary interface. |
| `networking.ip6` | `string` | no | The IPv6 address of the primary interface. |
| `networking.ip6` | `string` | yes | The IPv6 address of the primary interface. |
| `networking.mac` | `string` | no | The MAC address of the primary interface. |
| `networking.mtu` | `integer` | yes | The maximum transmission unit of the primary interface. |
| `networking.netmask` | `string` | no | The IPv4 netmask of the primary interface. |
| `networking.netmask6` | `string` | no | The IPv6 netmask of the primary interface. |
| `networking.netmask6` | `string` | yes | The IPv6 netmask of the primary interface. |
| `networking.network` | `string` | no | The IPv4 network of the primary interface. |
| `networking.network6` | `string` | no | The IPv6 network of the primary interface. |
| `networking.network6` | `string` | yes | The IPv6 network of the primary interface. |
| `networking.primary` | `string` | no | The name of the primary interface. |
| `networking.scope6` | `string` | no | The IPv6 scope of the primary interface, such as global or link. |
| `networking.scope6` | `string` | yes | The IPv6 scope of the primary interface, such as global or link. |
| `os.architecture` | `string` | no | The operating system's hardware architecture, such as x86_64 or arm64. |
| `os.family` | `string` | no | The operating system family, such as Debian, RedHat, Darwin, or windows. |
| `os.hardware` | `string` | no | The hardware model of the machine, such as x86_64. |
Expand Down
10 changes: 5 additions & 5 deletions docs/supported-facts/linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ $ facts --json
| `memory.system.total_bytes` | `integer` | no | The total physical memory, in bytes. |
| `memory.system.used` | `string` | no | The display amount of physical memory in use, such as 1.00 GiB. |
| `memory.system.used_bytes` | `integer` | no | The physical memory in use, in bytes. |
| `mountpoints.*` | `map` | no | A mounted filesystem, keyed by mount path. |
| `mountpoints.*` | `map` | yes | A mounted filesystem, keyed by mount path. |
| `mountpoints.*.available` | `string` | no | The display amount of free space on the mount, such as 1.00 GiB. |
| `mountpoints.*.available_bytes` | `integer` | no | The free space on the mount, in bytes. |
| `mountpoints.*.capacity` | `string` | no | The percentage of the mount's space in use. |
Expand Down Expand Up @@ -188,15 +188,15 @@ $ facts --json
| `networking.interfaces.*.scope6` | `string` | yes | The IPv6 scope of the interface's first binding, such as global or link. |
| `networking.interfaces.*.speed` | `integer` | yes | The negotiated speed of the interface, in Mbit/s. |
| `networking.ip` | `string` | no | The IPv4 address of the primary interface. |
| `networking.ip6` | `string` | no | The IPv6 address of the primary interface. |
| `networking.ip6` | `string` | yes | The IPv6 address of the primary interface. |
| `networking.mac` | `string` | no | The MAC address of the primary interface. |
| `networking.mtu` | `integer` | yes | The maximum transmission unit of the primary interface. |
| `networking.netmask` | `string` | no | The IPv4 netmask of the primary interface. |
| `networking.netmask6` | `string` | no | The IPv6 netmask of the primary interface. |
| `networking.netmask6` | `string` | yes | The IPv6 netmask of the primary interface. |
| `networking.network` | `string` | no | The IPv4 network of the primary interface. |
| `networking.network6` | `string` | no | The IPv6 network of the primary interface. |
| `networking.network6` | `string` | yes | The IPv6 network of the primary interface. |
| `networking.primary` | `string` | no | The name of the primary interface. |
| `networking.scope6` | `string` | no | The IPv6 scope of the primary interface, such as global or link. |
| `networking.scope6` | `string` | yes | The IPv6 scope of the primary interface, such as global or link. |
| `os.architecture` | `string` | no | The operating system's hardware architecture, such as x86_64 or arm64. |
| `os.distro.codename` | `string` | yes | The codename of the distribution release, such as noble. |
| `os.distro.description` | `string` | no | The full description of the distribution release. |
Expand Down
10 changes: 5 additions & 5 deletions docs/supported-facts/netbsd.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ $ facts --json
| `memory.system.total_bytes` | `integer` | no | The total physical memory, in bytes. |
| `memory.system.used` | `string` | no | The display amount of physical memory in use, such as 1.00 GiB. |
| `memory.system.used_bytes` | `integer` | no | The physical memory in use, in bytes. |
| `mountpoints.*` | `map` | no | A mounted filesystem, keyed by mount path. |
| `mountpoints.*` | `map` | yes | A mounted filesystem, keyed by mount path. |
| `mountpoints.*.available` | `string` | no | The display amount of free space on the mount, such as 1.00 GiB. |
| `mountpoints.*.available_bytes` | `integer` | no | The free space on the mount, in bytes. |
| `mountpoints.*.capacity` | `string` | no | The percentage of the mount's space in use. |
Expand Down Expand Up @@ -159,15 +159,15 @@ $ facts --json
| `networking.interfaces.*.operational_state` | `string` | yes | The operational state of the interface, such as up or down. |
| `networking.interfaces.*.scope6` | `string` | yes | The IPv6 scope of the interface's first binding, such as global or link. |
| `networking.ip` | `string` | no | The IPv4 address of the primary interface. |
| `networking.ip6` | `string` | no | The IPv6 address of the primary interface. |
| `networking.ip6` | `string` | yes | The IPv6 address of the primary interface. |
| `networking.mac` | `string` | no | The MAC address of the primary interface. |
| `networking.mtu` | `integer` | yes | The maximum transmission unit of the primary interface. |
| `networking.netmask` | `string` | no | The IPv4 netmask of the primary interface. |
| `networking.netmask6` | `string` | no | The IPv6 netmask of the primary interface. |
| `networking.netmask6` | `string` | yes | The IPv6 netmask of the primary interface. |
| `networking.network` | `string` | no | The IPv4 network of the primary interface. |
| `networking.network6` | `string` | no | The IPv6 network of the primary interface. |
| `networking.network6` | `string` | yes | The IPv6 network of the primary interface. |
| `networking.primary` | `string` | no | The name of the primary interface. |
| `networking.scope6` | `string` | no | The IPv6 scope of the primary interface, such as global or link. |
| `networking.scope6` | `string` | yes | The IPv6 scope of the primary interface, such as global or link. |
| `os.architecture` | `string` | no | The operating system's hardware architecture, such as x86_64 or arm64. |
| `os.family` | `string` | no | The operating system family, such as Debian, RedHat, Darwin, or windows. |
| `os.hardware` | `string` | no | The hardware model of the machine, such as x86_64. |
Expand Down
Loading
Loading