# Run and routing commands

Captured help for every execution operation and loaded-package routing command.

Use workflow and run ids from a start or describe receipt. A display name is only a label. Read the intended target before a control operation.

## versions

List every loaded workflow version with its routing flag (operator API)

```text
aion versions [OPTIONS]
```

- `--workflow-type <WORKFLOW_TYPE>`: Show only versions of this workflow type


## venues

Which venues run each role-bound flow, and which are BEHIND the newest source deployed for it (operator API).

```text
aion venues [OPTIONS] [FLOW]
```

- `[FLOW]`: Show only venues of this flow


## route

Re-point routing for a workflow type at an already-loaded version (rollback / roll-forward; operator API)

```text
aion route [OPTIONS] <WORKFLOW_TYPE> <CONTENT_HASH>
```

- `<WORKFLOW_TYPE>`: Logical workflow type
- `<CONTENT_HASH>`: Content hash of the already-loaded target version


## unload

Unload a non-routed, unpinned workflow version (operator API)

```text
aion unload [OPTIONS] <WORKFLOW_TYPE> <CONTENT_HASH>
```

- `<WORKFLOW_TYPE>`: Logical workflow type
- `<CONTENT_HASH>`: Content hash of the version to unload


## start

Start a workflow execution

```text
aion start [OPTIONS] <WORKFLOW_TYPE>
```

- `<WORKFLOW_TYPE>`: Workflow type registered with the server
- `--input <INPUT>`: JSON input payload for the workflow [default: null]
- `--input-file <INPUT_FILE>`: Read the JSON input payload from a UTF-8 file instead of `--input`
- `--name <DISPLAY_NAME>`: Optional display name, trimmed and recorded on the workflow. Commands target the workflow id. Describing any run returns the most recently recorded workflow name; a continue-as-new successor inherits it.


## signal

Send a signal to the latest run of a workflow

```text
aion signal [OPTIONS] <WORKFLOW_ID> <SIGNAL_NAME>
```

- `<WORKFLOW_ID>`: Workflow identifier
- `<SIGNAL_NAME>`: Signal name
- `--run-id <RUN_ID>`: Specific run identifier. Defaults to the latest run when omitted
- `--payload <PAYLOAD>`: JSON signal payload [default: null]
- `--dry-run`: Validate the target, declared signal, and payload schema without delivering it
- `--http-endpoint <HTTP_ENDPOINT>`: HTTP listener used to read the target version's deployed signal contract [env: AION_HTTP_ENDPOINT=] [default: http://127.0.0.1:8080]


## query

Query the latest run of a workflow

```text
aion query [OPTIONS] <WORKFLOW_ID> <QUERY_NAME>
```

- `<WORKFLOW_ID>`: Workflow identifier
- `<QUERY_NAME>`: Query name
- `--run-id <RUN_ID>`: Specific run identifier. Defaults to the latest run when omitted
- `--arguments <ARGUMENTS>`: JSON arguments handed to the workflow's query handler. The default `null` is the canonical "no arguments" document [default: null]


## cancel

Cancel a workflow run, stop its in-flight activities and recursively cancel Running or Paused descendants.

```text
aion cancel [OPTIONS] <WORKFLOW_ID>
```

- `<WORKFLOW_ID>`: Workflow identifier
- `--reason <REASON>`: Cancellation reason [default: "cancelled by aion"]
- `--run-id <RUN_ID>`: Specific run identifier. Defaults to the latest run when omitted
- A single ordinary activity has no public cancellation route. Single agent-attempt Cancel is available through HTTP intervention on an advertised liminal harness; it has no CLI command.


Workflow cancel stops the run’s in-flight activities and recursively cancels Running or Paused descendants. Declared run deadlines use the same cascade. For the narrower HTTP-only agent intervention, read [activity control](/aion/operations/activity-control/).

- `Workflow and descendants`: crates/aion/src/engine/api_workflow_ops.rs:150–190 and lifecycle/cancel_cascade.rs:267–309 record the target cancellation and recursively cancel Running or Paused descendants. Each run uses its own recorder.
- `Deadline cascade`: crates/aion/src/lifecycle/deadline.rs:173–190 starts the same descendant cascade after a declared run deadline.
- `Single agent intervention`: crates/aion-server/src/api/http/router.rs:497–498 and api/http/intervene.rs:66–109 serve HTTP intervention. worker/intervention.rs:301–303 requires the worker’s advertised primitive.
- `Transport boundary`: crates/aion-server/src/state/accessors.rs:229–239 selects liminal intervention transport. state/routing.rs:86–101 supplies an unreachable transport otherwise; an unreachable attempt returns StaleTarget. The CLI has no intervention command.


## retire

Retire a workloop: run its declared `retire` body, record the retirement, and withdraw the loop from the cadence sweep.

```text
aion retire [OPTIONS] <WORKFLOW_ID>
```

- `<WORKFLOW_ID>`: Workloop identifier
- `--reason <REASON>`: Reason recorded on the retirement, verbatim, in the loop's history [default: "retired by aion"]


## reopen

Reopen a terminal-reopenable (Failed or Cancelled) run and re-drive it

```text
aion reopen [OPTIONS] <WORKFLOW_ID>
```

- `<WORKFLOW_ID>`: Workflow identifier
- `--run-id <RUN_ID>`: Specific run identifier. Defaults to the latest run when omitted


## pause

Pause a running workflow, durably holding new activity dispatch

```text
aion pause [OPTIONS] <WORKFLOW_ID>
```

- `<WORKFLOW_ID>`: Workflow identifier
- `--reason <REASON>`: Optional pause reason [default: ""]
- `--run-id <RUN_ID>`: Specific run identifier. Defaults to the latest run when omitted


## resume

Resume a paused workflow, releasing the dispatch hold

```text
aion resume [OPTIONS] <WORKFLOW_ID>
```

- `<WORKFLOW_ID>`: Workflow identifier
- `--run-id <RUN_ID>`: Specific run identifier. Defaults to the latest run when omitted


## list

List one page of workflow executions, newest start first. Pass the returned `next_cursor` as `--cursor` to read another page

```text
aion list [OPTIONS] --limit <LIMIT>
```

- `--status <STATUS>`: Optional workflow status filter. Accepted values: running, completed, failed, cancelled, timed-out, continued-as-new, paused
- `--workflow-type <WORKFLOW_TYPE>`: Exact workflow type to list, as with MCP `list_runs`
- `--limit <LIMIT>`: Maximum rows in this page (required, non-zero)
- `--cursor <CURSOR>`: The `next_cursor` of a previous page under the same filter


## describe

Describe a workflow execution: summary facts, run identity, and the history head sequence. The full event history is `aion inspect`

```text
aion describe [OPTIONS] <WORKFLOW_ID>
```

- `<WORKFLOW_ID>`: Workflow identifier
- `--run-id <RUN_ID>`: Specific run identifier. Defaults to the latest run when omitted
- `--raw`: Show raw payload byte arrays instead of decoded payloads


## tail

Tail this run and its direct child legs as one interleaved transcript. A finished run replays and exits

```text
aion tail [OPTIONS] <WORKFLOW_ID>
```

- `<WORKFLOW_ID>`: Parent workflow identifier. Child identifiers are derived; do not supply them
- `--run-id <RUN_ID>`: Specific parent run. Defaults to the latest recorded run
- `--http-endpoint <HTTP_ENDPOINT>`: HTTP/WebSocket listener used by child and transcript APIs. May also be set with `AION_HTTP_ENDPOINT` [env: AION_HTTP_ENDPOINT=] [default: http://127.0.0.1:8080]
- `--no-follow`: Print the retained transcript snapshot and exit instead of following live sockets


## inspect

Time-travel over a recorded run's event-store oplog.

```text
aion inspect [OPTIONS] <WORKFLOW_ID>
```

- `<WORKFLOW_ID>`: Workflow identifier
- `--run-id <RUN_ID>`: Specific run identifier. Defaults to the latest recorded run
- `--from <FROM>`: Fork the what-if re-run from this recorded event sequence
- `--mock <MOCK>`: Mocked outcome JSON for the what-if fork (see the command help)



List returns one page; carry its cursor with the same filters to continue. Inspect what-if replay is read-only. Read a terminal run through its history.
