CLI reference
Every command also accepts -h/--help. This page is generated from
the same output, kept in sync by hand against the actual built binary
rather than written from memory.
Global flags
Section titled “Global flags”Available on every command:
--config string path to enodia.yaml (default: search standard locations)--settings string path to settings.yaml (default: search standard locations; missing is not an error)enodia collect
Section titled “enodia collect”collect only gathers facts: an unreachable target is recorded as anobservation with an error, not treated as a command failure. The exitcode reflects whether collection itself ran, not what it found - thatjudgement is check's job.-o, --output string output file, or - for stdout (default "-")enodia check
Section titled “enodia check”check evaluates the patch, lifecycle and newer-branch axes for everytarget as of the moment its data was collected. Without --from itcollects first, in this same process - not a second code path. With--from it reads an existing inventory and only ever reaches the networkfor the lifecycle resolver.
--view selects the table focus: compact (default), lifecycle, drift, orfleet - the offline-only view of version spread across a product'sinstances. When --view is not passed, settings.yaml's render.default_viewapplies instead of the compact default, if set.--fail-on strings escalate an axis value to a hard failure, e.g. --fail-on=patch:behind (repeatable)--from string read an existing inventory instead of collecting--view string table view: compact, lifecycle, drift, or fleet (default "compact")--warn-days int warn this many days before a lifecycle boundary is reachedenodia export
Section titled “enodia export”export writes one self-contained file - nothing here serves it; nginx,a cron job, or a systemd timer regenerating it is what does.
--format selects json, prometheus, or html. When --format is not passed,settings.yaml's export.default_format applies instead, if set; thebuilt-in default stays json either way.
--view restricts an html export to one view (compact, lifecycle, drift,or fleet) instead of all four stacked sections; ignored byjson/prometheus, which always carry every observation and assessment.--fail-on strings escalate an axis value to a hard failure (repeatable)--format string output format: json, prometheus, or html (default "json")--from string read an existing inventory instead of collecting-o, --output string output file, or - for stdout (default "-")--view string html only: restrict the report to one view (compact, lifecycle, drift, fleet); default is all four--warn-days int warn this many days before a lifecycle boundary is reachedenodia config
Section titled “enodia config”Three subcommands, no flags of its own beyond the global ones.
enodia config path
Section titled “enodia config path”Prints which config file would actually be used, given the current search order — see Configuration.
enodia config resolve
Section titled “enodia config resolve”resolve tries https, then http (never http first - that would put acredential on the wire in the clear), for every target whose addresshas no explicit scheme. It sends no credentials and does not modify theconfig file - it only reports what scheme each target would use.enodia config validate
Section titled “enodia config validate”Validates the config file and its credential references — including
whether a target’s declared credentials: name actually resolves to an
entry the probe understands, entirely offline.
enodia products
Section titled “enodia products”Lists every supported product — see Supported products for the full table.
enodia history
Section titled “enodia history”history reads every "*.jsonl" file in --dir and evaluates each oneagainst its own collection time - not today - building one timelineper target ID. Producing that directory needs no code at all, just"enodia collect -o \"$(date +%F).jsonl\"" on a schedule. This command isthe other half: reading many of them back as one history.--dir string directory of dated *.jsonl inventories (required)--fail-on strings escalate an axis value to a hard failure (repeatable)--format string output format: table or json (default "table")-o, --output string output file, or - for stdout (default "-")--warn-days int warn this many days before a lifecycle boundary is reachedenodia serve
Section titled “enodia serve”serve collects and evaluates on a timer (--interval) and serveswhatever the last successful cycle produced - a request never triggersa new collection. There is no built-in authentication or TLS: put thisbehind a reverse proxy.
Endpoints: / (HTML, all four views), /report.json, /metrics(Prometheus), /healthz (liveness only - never touches the snapshot).--fail-on strings escalate an axis value to a hard failure (repeatable) - reflected in the served report, not a process exit code--interval duration how often to refresh the snapshot (default 1h0m0s)--listen string address to listen on (default ":8080")--warn-days int warn this many days before a lifecycle boundary is reachedenodia version
Section titled “enodia version”Prints the enodia version, commit, and build date.
enodia about
Section titled “enodia about”Prints the enodia logo plus build information: version, commit, build date, Go version, platform, product (probe) count, license, and repository URL.
enodia completion
Section titled “enodia completion”Generates a shell autocompletion script. Run
enodia completion --help for the specific shell you use (bash, zsh,
fish, powershell).