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
  • whoami — Print the local operator identity (public key and operator ID)
  • 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

Print the local operator identity (public key and operator ID)

Usage: ordo operator whoami

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 an agent’s assigned modules, plus any named ad-hoc
  • plan — Preview an apply without changing anything
  • 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
  • upload — Validate a local module file and upload it to the orchestrator

Apply an agent’s assigned modules, plus any named ad-hoc.

With no --module, the agent is reconciled to its assignments: the union of the modules of every assignment whose selector matches it. Each --module adds a module on top for this run only — temporary unless the module is itself backed by a matching assignment. With no matching assignments and no --module, the desired set is empty and previously applied resources are removed; run state plan first to preview.

Usage: ordo state apply [OPTIONS] <NODE_ID>

  • <NODE_ID> — Node ID of the agent
  • --module <MODULES> — Extra modules to apply ad-hoc, on top of the agent’s assignments (repeatable)
  • --json — Output the full apply response as JSON

Preview an apply without changing anything.

Resolves the same desired set as state apply — the agent’s assignments plus any --module named here — and reports the diff.

Usage: ordo state plan [OPTIONS] <NODE_ID>

  • <NODE_ID> — Node ID of the agent
  • --module <MODULES> — Extra modules to plan ad-hoc, on top of the agent’s assignments (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

Validate a local module file and upload it to the orchestrator.

The module must exist on the orchestrator (by name) before state plan or state apply can reference it. This validates the file the same way ordo-state validate does, then uploads it over the operator- authenticated channel — keeping the author → validate → upload → plan → apply loop in the CLI.

Usage: ordo state upload <FILE>

  • <FILE> — Path to the *.ordo.yaml module file to upload

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.