Skip to content

Events and diagnostics

Every meaningful step — observations, applies, cleanups, daemon iterations, health checks — lands in the event ledger of the explicit state database, so failures are explainable after the fact. Three read-only commands expose it. All three read an already-migrated database and fail rather than creating or migrating one as a side effect.

Terminal window
hostwright events --state-db /tmp/hostwright.sqlite \
[--project <name>] [--type <event>] [--service <name>] \
[--severity info|warning|error] [--limit <n>] [--sort asc|desc] \
[--output text|json]

Events render in deterministic timestamp/id order. Types include status observations, logs.read, apply start/success/failure, cleanup.*, team.profile.selected, team.approval.recorded, daemon.started, daemon.reconcile.succeeded, daemon.reconcile.failed, daemon.backoff, daemon.sleep_wake_resumed, daemon.stopped, health.check.*, and restart.policy.state. Payloads are redacted before persistence, so the ledger is safe to read but still local-context-rich.

Terminal window
hostwright recovery --state-db /tmp/hostwright.sqlite [--project <name>]

Apply persists an operation recovery group with step records — intent, checkpoints, forward runtime steps, rollback-unavailable markers, and redacted manual recovery hints — before and during mutation. recovery reads those groups and reports, per operation:

  • no automatic recovery required — it completed;
  • manual inspection required — it failed or was interrupted;
  • rollback unsupported — no safe inverse operation is proven.

Active groups show their redacted lock owner and lease expiry. A group with no persisted mutation intent can be reacquired after lease expiry (the old group is marked interrupted). A recorded intent stays blocked unless its checkpoint proves runtime execution never began (pre-runtime-state-incomplete); ambiguous or post-runtime interruptions require manual inspection. Older databases with legacy restart recovery records render those as legacy entries.

Terminal window
hostwright diagnostics --state-db /tmp/hostwright.sqlite \
--bundle /tmp/hostwright-diagnostics.json [--project <name>] [--manifest <path>]

Writes a local redacted JSON bundle containing:

  • the telemetry policy statement (local-only, no upload);
  • state schema and version metadata;
  • an optional manifest summary (omitting --manifest makes the bundle state-only — the current directory is never searched);
  • redacted events, operations, operation groups and steps, health results, restart policy state, restart recovery records, ownership records, and observed snapshots.

It refuses to overwrite an existing bundle path (HW-CLI-002) and never inspects or mutates the runtime, creates or migrates a database, or uploads anything. Bundles can still contain sensitive local context — project names, service names, paths, hostnames, identifiers — review before sharing.

Hostwright’s telemetry policy is local-only and is itself reported in doctor, status, and diagnostics output. There is no external telemetry, hosted diagnostics, automatic upload, or OSLog integration. See Limitations.