Last updated: 2026-09-06
orca workflows works with workflows: reusable definitions (a graph of steps, each bound to an agent profile), the runs instantiated from them, and the cron schedules that launch them. A definition id looks like wfdef-...; a run id looks like workflow-....
Every subcommand accepts the global flags. All positionals on this page are required; there is no interactive picker. Destructive subcommands prompt for confirmation in a terminal; in a script --yes is required or the command refuses (exit code 2).
Terminal and plain output print statuses as labels; --json output carries the API’s integer enums. A run is pending (0), running (1), paused (2), completed (3), failed (4), or cancelled (5). A step is pending (0), ready (1), running (2), ok (3), error (4), skipped (5), or cancelled (6).
orca workflows list
name, id, step count, updated.
orca workflows get
--json the full definition object is printed. The plain view prints one row per step in dependency order: step name, profile, and the comma-separated ids it depends on.
orca workflows delete
orca workflows runs
runs list.
id, status, step count, created, duration.
orca workflows runs get
--json the full run object is printed, including every step’s status, attempt, runId, output, and error. The plain view prints one row per step in dependency order: step name, profile, status, attempt number, duration.
orca workflows start
- A definition id (anything that does not start with
workflow-) launches a new run. The CLI fetches the definition, takes its steps, and resolves the user prompt from--promptor the definition’s ownuserPrompt; a definition with no prompt and no--prompt, or with no steps, exits 2. By default the new run is handed straight to the engine; with--no-autostartit is created inpendingso you can start it later. - A run id (starts with
workflow-) hands an existing pending run to the engine.--promptand--no-autostartare ignored on this path. A run that is already pastpendingis left as is.
Without
--json, stdout carries only the new run id and a status line goes to stderr, so the id can be captured directly. With --json the server’s accepted-action envelope is printed: workflowRunId, plus status or ok when the server sets them.
orca workflows tail
completed, failed, or cancelled). In a terminal the step tree updates live. When stdout is a pipe, each step status change is printed as one line: the step name, its previous status label, and its new status label; a workflow <id> finished: <status> line goes to stderr at the end. With --json the output is NDJSON: one { "type": ..., "workflowRun": ... } frame per line, where type is snapshot for the initial state and plan_status for each later change, and workflowRun is the full run object at that moment.
The exit code is 0 when the run completes and 1 when it fails or is cancelled. Ctrl-C detaches the tail only (exit code 130): the run keeps going server-side and can be reattached with the same command or stopped with orca workflows cancel. A dropped connection is reconnected automatically with backoff.
orca workflows cancel
With
--json the server’s accepted-action envelope is printed: workflowRunId, plus status or ok when the server sets them.
orca workflows repair
The other repair actions (
replace_node, add_dependency) need a full step body and are only available through the API. With --json the server’s accepted-action envelope is printed.
orca workflows schedules
schedules list, and there is no create subcommand (schedules are created outside the CLI).
id, definition id, cron, timezone, status (active or paused), last run time.
orca workflows schedules get
--json the full schedule object is printed (workflowDefinitionId, cron, timezone, status, lastRunAt, lastError, and so on). The plain view prints the same single row as the listing.
orca workflows schedules pause
--json the updated schedule object is printed.
orca workflows schedules resume
--json the updated schedule object is printed.
orca workflows schedules delete
Verified against orca-cli
cli-v0.5.0.