Command line interface (CLI)

Global flags, verbs, remote driving, and machine-readable output envelopes.

The exocomp binary functions as both the server daemon (exocompd / exocomp serve) and the primary operator CLI client.

Global flags

These flags apply across all CLI commands:

Flag Env Variable Description
--output <format> EXOCOMP_OUTPUT Output formatting: text (default) or json (also yaml for export)
--remote <target> EXOCOMP_REMOTE Drive a remote daemon over HTTPS / LAN (pinned name or URL)
--token <token> EXOCOMP_TOKEN Bearer token for remote daemon authentication
--idempotency-key <key> EXOCOMP_IDEMPOTENCY_KEY Deduplicate mutating commands to one job
-y, --assume-yes — Answer yes to destructive confirmations (scripts, CI)
--no-input — Refuse confirmations instead of waiting on stdin

(Note: Data directory defaults to $XDG_DATA_HOME/exocomp or /var/lib/exocomp, and can be customized via EXOCOMP_DATA_DIR or --data-dir on lifecycle commands).

Primary verbs

Automation & Execution

  • exocomp playbook run <path>: Run an Ansible playbook against a source.
  • exocomp command run <cmd>: Run an ad-hoc shell command on target nodes.
  • exocomp workspace plan <name>: Generate and seal an OpenTofu execution plan.
  • exocomp workspace apply <name>: Apply an OpenTofu workspace or sealed plan.
  • exocomp provision run <workspace> <playbook>: Execute chained apply → await SSH → onboard → configure workflow.
  • exocomp handoff run <workspace>: Execute the Terraform → Ansible inventory handoff.
  • exocomp jobs list: View active and historic queue jobs.
  • exocomp jobs follow <id>: Stream live events for a running job until terminal.
  • exocomp jobs events <id>: Show a job's append-only event log.
  • exocomp jobs redrive: Idempotently re-run jobs cut off by restart or failure.

State & Secrets

  • exocomp source add/list/sync/rm: Manage registered Git and local sources.
  • exocomp secrets add/list/replace/rm: Manage age secrets envelope entries.
  • exocomp run-secret add/list/rm: Bind sealed secrets to named environment sets for runs.
  • exocomp host onboard/known-hosts: Onboard fleet nodes and inspect trusted host keys.

Checks & Reactive

  • exocomp check add/list/enable/disable/rm: Manage network reachability probe checks.
  • exocomp netgroup add/list/rm: Manage named CIDR network groups.
  • exocomp rule add/list/enable/disable/rm: Manage CEL event-to-job rules.
  • exocomp silence add/list/rm: Temporarily swallow matching reactive events.

Cluster & Maintenance

  • exocomp setup: First-run interactive wizard (identity, recovery kit, backup drill, hand over).
  • exocomp serve: Run the control plane daemon.
  • exocomp doctor: Run environment, permissions, and toolchain checks.
  • exocomp drain: Cordon the daemon and await completion of in-flight work before host reboots.
  • exocomp reload: Reload schedules and push transports from the store without stopping.
  • exocomp restart: Drain in-flight jobs and re-exec the binary in place.
  • exocomp upgrade: Run zero-sudo staged self-upgrade with automated rollback.
  • exocomp backup: Assemble a snapshot and fan it out to configured targets.
  • exocomp restore: Rebuild data directory from a Restic, S3, or Git snapshot.
  • exocomp recovery-kit: Re-render recovery kit structure from stored public data.
  • exocomp kit derive/verify: Derive secrets from the recovery card and verify printed pages.

Machine-readable JSON output

Passing --output json emits a structured RFC 9457-compatible envelope with schema version:

{
  "schema_version": 1,
  "kind": "job",
  "data": {
    "id": "job_01j7abc...",
    "kind": "ansible.playbook",
    "exit_code": 0,
    "duration_ms": 1420
  }
}