Skip to main content
olympus is a terminal client for the Olympus Agent. It signs in through your browser, then runs scripted turns from a shell, from CI, or from inside a host coding agent such as Claude Code, Codex, or Cursor. The agent itself still runs on Olympus’s servers. The CLI streams its replies and lets you approve or deny what it wants to do. This page covers installing the CLI, signing in, running it headlessly, and setting it up inside a host coding agent. The full interactive terminal session arrives in a later update; this page will grow to cover it then.

Install

This detects your OS and CPU architecture, downloads the matching binary, verifies its checksum, and installs it to ~/.olympus/bin. No Node.js install is required. macOS (Intel and Apple Silicon, including under Rosetta) and Linux (x64 and arm64) are supported. If ~/.olympus/bin isn’t already on your PATH, the installer prints the line to add:
Add that to your shell profile to keep it across sessions. Environment variables the installer reads:

Sign in

This prints a short code and opens https://app.etho.net/cli/authorize in your browser (or prints the URL if it can’t: olympus login detects an SSH session automatically and skips trying). Enter the code, pick a workspace, and the CLI finishes signing in once you approve it. Signing in needs an Olympus account with an active paid subscription on the workspace you choose. Use --no-browser to always print the URL instead of opening it. For CI or other non-interactive hosts, mint a personal API key from Settings > API keys in the app instead and pipe it in:
A personal key doesn’t expire in v1 and should be rotated by whoever manages your CI secrets. A browser-minted token is sliding-window: it expires 30 days after its last use, and 90 days after it was issued either way. Other account commands:
OLYMPUS_TOKEN in the environment overrides everything stored on disk. That’s useful for CI, and for running as a different workspace than the one you’re signed into locally.

Run it headlessly

run and its -p alias run one turn and print the result, without ever prompting for input. Use /<workflow-name> to run a saved workflow and $<skill-name> anywhere in the text to attach a skill:
Useful flags:
--json is what a host coding agent should use. See Approvals and exit codes below for the contract. An unattended run can use default, auto, or plan mode, never full: full lets the agent act without approval, and a script shouldn’t be able to grant itself that.

Approvals and exit codes

The Olympus Agent asks for approval before anything that sends, publishes, or deletes something. A headless run never makes that call for you. It stops and reports the approval instead:
run and -p exit with: approve and deny exit with: A pending send approval expires 24 hours after it’s created; an expired or already-decided approval is reported, not re-run. olympus approve reads an edited message body from a file with --edit-file <path>, for the rare case where a send approval’s edited text belongs in the approval itself rather than the original message.

Set up a host coding agent

This writes the hosted Olympus MCP server into that tool’s config, using your signed-in token, so the host can read and write your CRM directly. It preserves every other MCP server already configured there. For the full agent, not just the MCP tools, the host can shell out to olympus run --json. By default the config file holds the literal token (and is written 0600, readable only by you). Pass --env to reference OLYMPUS_TOKEN instead:
To see the MCP configuration without writing it anywhere:

Getting help

Every command documents its own flags and exit codes:
If something looks wrong (a stuck sign-in, a workspace that won’t switch, an approval that won’t resolve), start with olympus whoami: it shows exactly who’s signed in, to which workspace, and when that token expires.