Governance, audit & telemetry
These commands are how an operator holds the device accountable: export and verify a tamper-evident reasoning record, unwind mutations and prove the unwind, capture consent, control what telemetry leaves the device, account for metered inference, and diagnose the whole thing offline.
s9 audit
Export and verify a device-signed, hash-chained reasoning-run record, the durable trail written when the agent runs with auditing on.
| Subcommand | Description | Key flags |
|---|---|---|
export | Export a verifiable run-record bundle from the reasoning journal. | --journal <PATH>, --out <PATH>, --sign (sign the bundle head with the device key), --format native|otel |
verify <BUNDLE> | Verify a previously-exported bundle. | --device-key <PEM> |
The --format otel option emits OpenTelemetry-span-shaped JSON carrying the same
signature and hash chain, so an observability stack can ingest the trace and
still verify it. On verify, passing --device-key checks the signature against
the device's enrolled public half (turning "self-attested" into "attributed")
rather than the key the bundle carries inside itself.
s9 chat "..." --audit # produce the journal
s9 audit export --sign --out /media/usb/run-record.json
s9 audit verify /media/usb/run-record.json --device-key ./device.pub.pem
s9 rewind
Unwind mutations this device checkpointed, and prove what was unwound.
| Subcommand | Description | Key flags |
|---|---|---|
status | What this device has checkpointed, and what a rewind would cost. | --json |
plan | Resolve the unwind of everything after a sequence. Writes nothing. | --to <SEQ>, --json |
execute | Perform the unwind. Refuses a plan carrying any blocker. | --to <SEQ>, --yes, --json |
prove | Verify the chain and prove every unwind recorded on it. | --json |
s9 rewind status
s9 rewind plan --to 42 # dry-run the unwind
s9 rewind execute --to 42 --yes
s9 consent
Operator consent capture, record acceptance of terms addenda, tamper-evidently.
| Subcommand | Description | Key flags |
|---|---|---|
status | Show the gate state and required-addenda matrix. | --json |
show <ADDENDUM_ID> | Print a bundled addendum's canonical text and hash. | --raw (omit framing, for sha256sum) |
accept | Record operator acceptance of an addendum. | --addendum, --by, --from, --notes, --yes, --reviewed-by-counsel |
history | List every recorded acceptance in insertion order. | --json |
verify | Re-hash the bundled text and cross-check the store; flag drift. |
Accepting the tactical addendum non-interactively (--yes) also requires
--reviewed-by-counsel, which is captured in the recorded notes.
s9 consent status
s9 consent accept --addendum tou-baseline --by ops@acme --from cli
s9 telemetry
Off-device telemetry posture, what the device transmits, and the opt-out.
| Subcommand | Description | Key flags |
|---|---|---|
status | Show the current posture and what it transmits. | --json |
set <POSTURE> | Persist a new posture to the effective config file. | --yes |
history | Print the tamper-evident local history of posture changes. | --json |
Posture is one of governed-minimal, full, or off. Setting off is the
air-gapped posture, under it, s9 run has no heartbeats to send and bounds its
local ticks instead.
s9 telemetry status
s9 telemetry set off --yes # air-gapped / sovereign posture
s9 metering
Inference metering, what this device has metered and what no cell has yet
confirmed. On an air-gapped device, status is the only way to see records
sitting on courier media that have not been billed.
| Subcommand | Description | Key flags |
|---|---|---|
status | What is in the metering spool, and what no cell has confirmed. | --json |
s9 metering status --json
s9 sensor
Host sensor inventory, list the on-board sensors this device can observe (hwmon +
IIO). Arming autonomous capture is a flag on s9 run.
| Subcommand | Description | Key flags |
|---|---|---|
list | List the on-board sensors this device can observe. | --json, --hwmon-root, --iio-root |
s9 sensor list
s9 doctor
Run offline diagnostics, print config, identity, certs, journal, and system
stats. With --fix, it walks each detected problem and offers to run the safe
remediation; read-only follow-ups can run inline after a confirm, while steps
that are a security decision (enrollment, model approval, trust provisioning) are
printed as exact commands but never run for you.
| Flag | Description |
|---|---|
--json | Emit the report as JSON. |
--fix | Offer safe remediations after the report. |
s9 doctor
s9 doctor --fix
Related topics
- Security · Compliance · Audit & Tamper-Evidence,
the hash-chained journal model behind
auditandrewind. - Security · Compliance · Metering & Attribution, how metered work is accounted for.
- Daemon & fleet lifecycle, the daemon whose behaviour these controls govern.