# AO CLI Reference The `ao` CLI is the control interface for Agent Orchestrator. Most commands are used by the **orchestrator agent itself** to manage sessions, not by humans directly. Humans typically only need `ao start` and the web dashboard. ## Commands humans use ```bash ao start # Auto-detect, generate config, start dashboard + orchestrator ao start # Clone repo, auto-configure, and start ao start ~/other-repo # Add a new project and start ao stop # Stop everything (dashboard, orchestrator, lifecycle worker) ao status # Overview of all sessions ao status --watch # Live-updating terminal status view ao dashboard # Open web dashboard in browser ao setup dashboard # Configure dashboard notification retention/routing ao setup desktop # Install/configure native macOS desktop notifications ao notify test --to desktop # Send a manual notifier test without starting AO ao completion zsh # Print the zsh completion script ``` ## Commands the orchestrator agent uses These are primarily invoked by the orchestrator agent running inside a runtime session (a tmux window on macOS/Linux; a ConPTY pty-host on Windows). You can use them manually if needed, but the orchestrator handles this automatically. ```bash ao spawn [issue] # Spawn an agent (project auto-detected from cwd) ao spawn 123 --agent codex # Override agent for this session ao batch-spawn 101 102 103 # Spawn agents for multiple issues at once ao send "Fix the tests" # Send instructions to a running agent ao session ls # List active sessions (terminated hidden) ao session ls --include-terminated # Include killed/done/merged/errored/cleanup sessions ao session ls --json # Machine-readable session inventory (see note below) ao session kill # Kill a session ao session restore # Revive a crashed agent ``` > **JSON output:** `ao session ls --json` and `ao status --json` emit > `{ "data": [...], "meta": { "hiddenTerminatedCount": N } }`. Terminated sessions > (`killed`, `terminated`, `done`, `merged`, `errored`, `cleanup`) are filtered from > `data` by default; `meta.hiddenTerminatedCount` reports how many were dropped. > Pass `--include-terminated` to include them and reset the count to `0`. ## Maintenance commands ```bash ao doctor # Check install, runtime, and stale temp issues ao doctor --fix # Apply safe fixes automatically ao setup openclaw # Connect AO notifications to OpenClaw ao update # Update local AO install (source installs only) ao config-help # Show full config schema reference ``` ## Zsh completion ```bash mkdir -p ~/.zsh/completions ao completion zsh > ~/.zsh/completions/_ao ``` Add the directory to `fpath` before running `compinit`: ```zsh fpath=(~/.zsh/completions $fpath) autoload -Uz compinit compinit ``` With Oh My Zsh, write the generated file to `${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/ao/_ao` and add `ao` to the `plugins=(...)` list in `~/.zshrc`. `ao doctor` checks PATH and launcher resolution, required binaries, configured plugin resolution, terminal-runtime health (tmux on Unix; PowerShell / `runtime-process` on Windows), GitHub CLI health, config support directories, stale AO temp files, and core build/runtime sanity. Runs and is supported on macOS, Linux, and Windows. `ao update` fast-forwards the local install on `main`, reinstalls dependencies, clean-rebuilds core packages, refreshes the launcher, and runs smoke tests. Works on macOS, Linux, and Windows (Windows uses the bundled `ao-update.ps1` script automatically). Use `ao update --skip-smoke` to stop after rebuild, or `ao update --smoke-only` to rerun just the smoke checks. ## Multi-Project Rollout Portfolio mode is enabled by default. Users do not need to set `AO_ENABLE_PORTFOLIO` unless they explicitly want to disable portfolio/project-management flows.