Engine
Construct explicit discovery inputs with no package-global collector and no shared mutable state.
Facts discovers hardware, networking, OS, cloud metadata, and operator-supplied facts as one canonical tree: embeddable as a Go library, scriptable as the facts CLI.
$ go get github.com/ncode/facts
$ brew install ncode/tap/facts
$ facts --json os.family kernel.version.fullAn engine is an isolated, immutable unit of discovery configuration. It reads core facts only until you opt into config files, external facts, registered facts, or system defaults.
Construct explicit discovery inputs with no package-global collector and no shared mutable state.
Discover once, then query and decode an immutable canonical tree as often as needed.
Decode subtrees into caller-owned Go types and fail loudly when the shape does not match.
The facts binary keeps the Ruby Facter process-boundary contract for output formatting, exit status, stderr diagnostics, external facts, environment facts, and config semantics.
$ facts os.name
Darwin
$ facts --external-dir ./facts.d site_role
webThe schema-backed supported fact pages are generated from docs/schema/facts.yaml and rendered here without becoming a second source of truth.