Capabilities
A capability is a versioned token, such as service.systemd.v1, saying a host can run a particular resource implementation. rivet facts probes for the tools each implementation needs and lists only the capabilities that are available:
A compiled catalog records the capabilities it actually uses. Compilation fails if the facts don’t advertise them. Before applying, the runner checks again against freshly probed host facts. So a host missing systemd or apt is caught before any change is made, not halfway through a run.
Capability versions are exact: a host advertising xyz.v2 does not satisfy a catalog that needs xyz.v1.
Built-in capabilities
Plugins declare their own capabilities, which appear in the same list when the plugin is installed on the host.
Compiling without a host
rivet validate without --facts uses a fixed Ubuntu 24.04 baseline that advertises every built-in capability. The repository’s examples/*/target.json files are similar, but list only the capabilities their example needs. Both are useful for checking configuration on a laptop, but neither is bound to a real host. Compile against facts collected from the host before applying.