Skip to content

ordo

This document contains the help content for the ordo command-line program.

Command Overview:

Ordo — operator CLI for the Ordo orchestrator.

Run without arguments to start an interactive REPL connected to the orchestrator. All commands are also available as subcommands for scripting.

Usage: ordo [OPTIONS] [COMMAND]

  • status — Show orchestrator status
  • agents — List and manage agents
  • discover — Trigger a local network discovery broadcast
  • operator — Manage operators
  • profile — Manage connection profiles
  • terminal — Open and manage remote terminal sessions
  • metrics — Show system metrics for an agent
  • web-login — Authenticate and produce a session token for the web UI
  • audit — Query and manage the audit log
  • channel — Manage notification channels
  • maintenance — Manage maintenance windows
  • notifications — View and manage notifications
  • secrets — Manage secrets
  • state — Apply, plan, and inspect state operations
  • assignments — Manage assignments (named module-to-tag-selector associations)
  • --host <HOST> — Orchestrator API host

    Default value: 127.0.0.1

  • --port <PORT> — Orchestrator API port

    Default value: 4748

  • --danger-trust-orchestrator — Accept and pin the orchestrator’s TLS certificate without prompting.

    DANGER: skips trust-on-first-use verification. Intended for automated and test environments where the orchestrator serves its auto-generated self-signed certificate. Also settable via the ORDO_DANGER_TRUST_ORCHESTRATOR environment variable.

Show orchestrator status

Usage: ordo status

List and manage agents

Usage: ordo agents [COMMAND]

  • list — List agents (default when no subcommand given)
  • approve — Approve a pending agent
  • reject — Reject an agent
  • remove — Remove a rejected agent’s record
  • tag — Set tags on an agent
  • untag — Remove tags from an agent

List agents (default when no subcommand given)

Usage: ordo agents list [OPTIONS]

  • --status <STATUS> — Filter by status: pending, approved, or rejected
  • --filter <FILTER> — Filter by tag expression (e.g. “env=production role=webserver”)

Approve a pending agent

Usage: ordo agents approve --name <NAME> <NODE_ID>

  • <NODE_ID> — Node ID of the agent to approve
  • --name <NAME> — Immutable, human-readable name to assign to the agent.

    Must be 1-64 Unicode letters/digits/-/_, starting with a letter. Once set, it cannot be changed.

Reject an agent

Usage: ordo agents reject <NODE_ID>

  • <NODE_ID> — Node ID of the agent to reject

Remove a rejected agent’s record

Usage: ordo agents remove <NODE_ID>

  • <NODE_ID> — Node ID of the agent to remove

Set tags on an agent

Usage: ordo agents tag <AGENT> <TAGS>...

  • <AGENT> — Node ID or name of the agent
  • <TAGS> — Tags to set (key=value or key for boolean tags)

Remove tags from an agent

Usage: ordo agents untag <AGENT> <KEYS>...

  • <AGENT> — Node ID or name of the agent
  • <KEYS> — Tag keys to remove

Trigger a local network discovery broadcast

Usage: ordo discover

Manage operators

Usage: ordo operator <COMMAND>

  • init — Generate an operator keypair
  • add — Add a new operator
  • list — List operators
  • remove — Remove an operator (soft delete)

Generate an operator keypair

Usage: ordo operator init [OPTIONS]

  • --from-ssh <FROM_SSH> — Import an existing Ed25519 SSH keypair instead of generating a new one

Add a new operator

Usage: ordo operator add [OPTIONS] --username <USERNAME> <PUBLIC_KEY>

  • <PUBLIC_KEY> — Hex-encoded Ed25519 public key of the new operator
  • --username <USERNAME> — Immutable, human-readable username for the new operator.

    Must be 1-64 Unicode letters/digits/-/_, starting with a letter. Once set, it cannot be changed.

  • --role <ROLE> — Role to assign: admin or operator (default: operator)

    Default value: operator

List operators

Usage: ordo operator list [OPTIONS]

  • --include-removed — Include removed operators

Remove an operator (soft delete)

Usage: ordo operator remove <OPERATOR_ID>

  • <OPERATOR_ID> — Operator ID to remove

Manage connection profiles

Usage: ordo profile <COMMAND>

  • create — Create a connection profile
  • update — Update a connection profile
  • list — List connection profiles
  • set-default — Set the default profile
  • remove — Remove a connection profile

Create a connection profile

Usage: ordo profile create [OPTIONS] --host <HOST> <NAME>

  • <NAME> — Profile name
  • --host <HOST> — Orchestrator host

  • --port <PORT> — Orchestrator API port

    Default value: 4748

  • --no-tls — Disable TLS for this profile. Required when the orchestrator was started with --no-tls

Update a connection profile

Usage: ordo profile update [OPTIONS] <NAME>

  • <NAME> — Profile name to update
  • --host <HOST> — New orchestrator host
  • --port <PORT> — New orchestrator API port
  • --no-tls — Switch the profile to plaintext HTTP
  • --tls — Switch the profile to HTTPS
  • --accept-new-certificate — Clear the pinned TLS fingerprint so the next connection accepts whatever certificate the orchestrator now presents

List connection profiles

Usage: ordo profile list

Set the default profile

Usage: ordo profile set-default <NAME>

  • <NAME> — Profile name to set as default

Remove a connection profile

Usage: ordo profile remove <NAME>

  • <NAME> — Profile name to remove

Open and manage remote terminal sessions

Usage: ordo terminal <COMMAND>

  • open — Open an interactive terminal session to an agent
  • list — List terminal sessions
  • show — Show a session transcript

Open an interactive terminal session to an agent

Usage: ordo terminal open [OPTIONS] <NODE_ID>

  • <NODE_ID> — Node ID of the agent
  • --shell <SHELL> — Shell binary path on the agent

  • --cols <COLS> — Terminal width in columns

    Default value: 80

  • --rows <ROWS> — Terminal height in rows

    Default value: 24

List terminal sessions

Usage: ordo terminal list [OPTIONS]

  • --status <STATUS> — Filter by status: active, closed, or interrupted

Show a session transcript

Usage: ordo terminal show <SESSION_ID>

  • <SESSION_ID> — Session ID to display

Show system metrics for an agent

Usage: ordo metrics [OPTIONS] <NODE_ID>

  • <NODE_ID> — Node ID of the agent
  • --history — Show recent history instead of just the latest snapshot
  • --since <SINCE> — Only show samples after this UNIX timestamp (implies —history)
  • --json — Output as JSON

Authenticate and produce a session token for the web UI

Usage: ordo web-login

Query and manage the audit log

Usage: ordo audit <COMMAND>

  • list — List audit events with optional filters
  • prune — Permanently delete audit events older than a cutoff. Admin only
  • retention — Show or update the audit retention setting

List audit events with optional filters

Usage: ordo audit list [OPTIONS]

  • --agent <AGENT> — Filter by agent node ID or operator-assigned name
  • --operator <OPERATOR> — Filter by operator ID or username
  • --type <EVENT_TYPE> — Exact dotted event type (e.g. agent.approved)
  • --category <CATEGORY> — Event-type prefix (e.g. agent matches every agent.*)
  • --after <AFTER> — Lower bound on event timestamp, ISO 8601 / RFC 3339
  • --before <BEFORE> — Upper bound on event timestamp (exclusive), ISO 8601 / RFC 3339
  • --cursor <CURSOR> — Pagination cursor (event ID from a previous page)
  • --limit <LIMIT> — Maximum events to return (default 50, max 500)
  • --json — Output as raw JSON instead of a table

Permanently delete audit events older than a cutoff. Admin only

Usage: ordo audit prune --before <BEFORE>

  • --before <BEFORE> — Cutoff timestamp; events strictly before this point are deleted

Show or update the audit retention setting

Usage: ordo audit retention <COMMAND>

  • show — Show the current retention setting
  • set — Set the retention period in days. Admin only
  • disable — Disable automatic pruning. Admin only

Show the current retention setting

Usage: ordo audit retention show

Set the retention period in days. Admin only

Usage: ordo audit retention set --days <DAYS>

  • --days <DAYS> — Number of days to retain audit events

Disable automatic pruning. Admin only

Usage: ordo audit retention disable

Manage notification channels

Usage: ordo channel <COMMAND>

  • add — Add a notification channel
  • list — List notification channels
  • remove — Remove a notification channel
  • test — Send a test notification through a channel

Add a notification channel

Usage: ordo channel add [OPTIONS] --name <NAME> --type <CHANNEL_TYPE>

  • --name <NAME> — Human-readable channel name
  • --type <CHANNEL_TYPE> — Channel type: webhook, discord, slack, or ntfy
  • --url <URL> — Webhook or service URL (for webhook/discord/slack types)
  • --secret <SECRET> — Webhook signing secret
  • --webhook-url <WEBHOOK_URL> — Discord or Slack webhook URL
  • --topic <TOPIC> — ntfy topic name
  • --token <TOKEN> — ntfy authentication token

List notification channels

Usage: ordo channel list [OPTIONS]

  • --json — Output as raw JSON instead of a table

Remove a notification channel

Usage: ordo channel remove <ID>

  • <ID> — Channel ID to remove

Send a test notification through a channel

Usage: ordo channel test <ID>

  • <ID> — Channel ID to test

Manage maintenance windows

Usage: ordo maintenance <COMMAND>

  • start — Start a maintenance window now
  • schedule — Schedule a future maintenance window
  • list — List maintenance windows
  • end — End a maintenance window early
  • remove — Remove a maintenance window

Start a maintenance window now

Usage: ordo maintenance start --reason <REASON> --ends-at <ENDS_AT>

  • --reason <REASON> — Reason for the maintenance window
  • --ends-at <ENDS_AT> — When the window ends (ISO 8601 / RFC 3339)

Schedule a future maintenance window

Usage: ordo maintenance schedule --reason <REASON> --starts-at <STARTS_AT> --ends-at <ENDS_AT>

  • --reason <REASON> — Reason for the maintenance window
  • --starts-at <STARTS_AT> — When the window starts (ISO 8601 / RFC 3339)
  • --ends-at <ENDS_AT> — When the window ends (ISO 8601 / RFC 3339)

List maintenance windows

Usage: ordo maintenance list [OPTIONS]

  • --json — Output as raw JSON instead of a table

End a maintenance window early

Usage: ordo maintenance end <ID>

  • <ID> — Maintenance window ID to end

Remove a maintenance window

Usage: ordo maintenance remove <ID>

  • <ID> — Maintenance window ID to remove

View and manage notifications

Usage: ordo notifications <COMMAND>

  • list — List notifications
  • read-all — Mark all notifications as read

List notifications

Usage: ordo notifications list [OPTIONS]

  • --unread — Only show unread notifications
  • --limit <LIMIT> — Maximum number of notifications to return
  • --json — Output as raw JSON instead of a table

Mark all notifications as read

Usage: ordo notifications read-all

Manage secrets

Usage: ordo secrets <COMMAND>

  • set — Create or update a secret
  • list — List all secrets (metadata only)
  • get — Get a secret’s details (no value)
  • remove — Remove a secret

Create or update a secret

Usage: ordo secrets set [OPTIONS] <NAME>

  • <NAME> — Secret name
  • --value <VALUE> — Secret value (as a string). Prefer —file or interactive prompt for sensitive values to avoid shell history exposure
  • --file <FILE> — Read the secret value from a file
  • --description <DESCRIPTION> — Human-readable description
  • --restrict-tags <RESTRICT_TAGS> — Restrict to agents matching a tag selection expression
  • --restrict-nodes <RESTRICT_NODES> — Restrict to specific agent node IDs (comma-separated)
  • --expires <EXPIRES> — Expiry date (YYYY-MM-DD or RFC 3339 timestamp)
  • --clear-expires — Clear the expiry date (requires —value or —file)

List all secrets (metadata only)

Usage: ordo secrets list

Get a secret’s details (no value)

Usage: ordo secrets get <NAME>

  • <NAME> — Secret name

Remove a secret

Usage: ordo secrets remove <NAME>

  • <NAME> — Secret name

Apply, plan, and inspect state operations

Usage: ordo state <COMMAND>

  • apply — Apply one or more modules to an agent
  • plan — Preview the changes a module set would produce, without applying
  • drift — Compare the agent’s current machine state against the last successful apply
  • query — Query an agent’s believed machine state (applied, pending removals, unapplied)
  • list — List recent state operations
  • show — Show per-resource results for a state operation
  • drift-list — List drift records, optionally filtered by agent and/or status
  • drift-show — Show details of a single drift record

Apply one or more modules to an agent

Usage: ordo state apply [OPTIONS] --module <MODULES> <NODE_ID>

  • <NODE_ID> — Node ID of the agent
  • --module <MODULES> — Module names to apply (repeatable)
  • --json — Output the full apply response as JSON

Preview the changes a module set would produce, without applying

Usage: ordo state plan [OPTIONS] --module <MODULES> <NODE_ID>

  • <NODE_ID> — Node ID of the agent
  • --module <MODULES> — Module names to plan (repeatable)
  • --json — Output the full plan response as JSON

Compare the agent’s current machine state against the last successful apply

Usage: ordo state drift [OPTIONS] <NODE_ID>

  • <NODE_ID> — Node ID of the agent
  • --json — Output the full drift response as JSON

Query an agent’s believed machine state (applied, pending removals, unapplied)

Usage: ordo state query [OPTIONS] <NODE_ID>

  • <NODE_ID> — Node ID of the agent
  • --json — Output the full state response as JSON

List recent state operations

Usage: ordo state list [OPTIONS]

  • --agent <AGENT> — Restrict to a single agent (node ID or operator-assigned name)
  • --limit <LIMIT> — Maximum number of operations to return
  • --offset <OFFSET> — Zero-based offset into the most-recent-first ordering. Use with --limit to page through history
  • --json — Output the full list response as JSON

Show per-resource results for a state operation

Usage: ordo state show [OPTIONS] <OPERATION_ID>

  • <OPERATION_ID> — Operation ID returned by a previous apply
  • --json — Output the full operation record as JSON

List drift records, optionally filtered by agent and/or status

Usage: ordo state drift-list [OPTIONS]

  • --agent <AGENT> — Restrict to a single agent (node ID or operator-assigned name)
  • --limit <LIMIT> — Maximum number of records to return (default 20, max 500)
  • --status <STATUS> — Filter by status: drifted, in_sync, failed, cancelled
  • --json — Output the full list as JSON

Show details of a single drift record

Usage: ordo state drift-show [OPTIONS] <DRIFT_ID>

  • <DRIFT_ID> — Drift ID returned by ordo state drift or ordo state drift-list
  • --json — Output the full drift record as JSON

Manage assignments (named module-to-tag-selector associations)

Usage: ordo assignments <COMMAND>

  • list — List all assignments
  • show — Show a single assignment, including the agents it currently matches
  • create — Create an assignment
  • remove — Remove an assignment (does not undo any applied state)
  • apply — Apply an assignment to every agent its selector currently matches
  • plan — Plan an assignment against every agent its selector currently matches

List all assignments

Usage: ordo assignments list [OPTIONS]

  • --json — Output the full list response as JSON

Show a single assignment, including the agents it currently matches

Usage: ordo assignments show [OPTIONS] <NAME>

  • <NAME> — Assignment name
  • --json — Output the full assignment as JSON

Create an assignment

Usage: ordo assignments create [OPTIONS] --module <MODULES> --selector <SELECTOR> <NAME>

  • <NAME> — Assignment name
  • --module <MODULES> — Module names in the assignment (repeatable)
  • --selector <SELECTOR> — Tag selector the assignment targets
  • --description <DESCRIPTION> — Human-readable description

Remove an assignment (does not undo any applied state)

Usage: ordo assignments remove <NAME>

  • <NAME> — Assignment name

Apply an assignment to every agent its selector currently matches

Usage: ordo assignments apply [OPTIONS] <NAME>

  • <NAME> — Assignment name
  • --json — Output the full fan-out response as JSON

Plan an assignment against every agent its selector currently matches

Usage: ordo assignments plan [OPTIONS] <NAME>

  • <NAME> — Assignment name
  • --json — Output the full fan-out response as JSON

This document was generated automatically by clap-markdown.