Skip to main content
The orca CLI was built to be driven by scripts and agents, not just humans. This page is the machine contract in one screen; the full documentation lives in the CLI section and the command reference.

Install

Standalone binary (macOS and Linux, arm64 and x64), no Node required, SHA256-verified, installed to ~/.local/bin. Details: Installation.

Output contract (gh-style)

  • --json on any command: machine-readable JSON on stdout. Nothing else is ever printed to stdout in this mode.
  • Streaming commands (orca run, orca runs tail, orca workflows tail, orca chat) emit NDJSON: one JSON object per line, exiting when the stream ends.
  • Without --json, a non-TTY stdout gets plain tab-separated lines; a TTY gets rich output.
  • All errors and hints go to stderr.
  • Optional positionals that open a picker for humans are required in a non-TTY (exit 2). Destructive commands need --yes in a non-TTY (exit 2).

Exit codes

0 ok, 1 failure (API or network, or a tailed run that ended in any status other than ok), 2 usage, 3 auth (401, 403, no key configured), 4 not found, 130 interrupted. Full table: Output and scripting.

Zero-config CI

No config file needed:
Contexts (orca context use prod) live in ~/.config/orca/config.json, kubectl-style; ORCA_CONTEXT selects one per invocation. Precedence everywhere: flag, then environment, then config file, then baked-in production defaults. Details: Authentication and contexts.

Golden path

Health

Prefer MCP when you can

The same binary runs an MCP server: orca mcp serve. It exposes the control plane as typed tools and reuses the CLI’s credentials, so a coding agent does not need to shell out at all. See MCP server.

Next

Build it with your coding agent puts these commands in order: the ask, the two files, the create, the test, and the loop that fixes whatever the test finds.
Last modified on September 6, 2026