Skip to main content
Ottili Coder

Installing the Ottili Coder CLI

How to install and authenticate the Ottili Coder CLI (the coder command group of the unified ottili CLI) and verify your environment before the first run.

Overview

Ottili Coder is not only driven from the desktop app and the dashboard — it can also be controlled directly from the terminal. The Ottili Coder CLI* is the coder command group of the unified `ottili` developer CLI* in the Ottili ONE repository. It submits missions in the same chat-first format used by the cloud and desktop surfaces — the CLI is not a second system, just another client of the same engine.

The CLI is part of Ottili Coder, which is publicly available as Public Beta (BETA)*. The coder commands talk to the Unified API (locally on http://localhost:8100 or your deployed instance). Cloud runs are in Beta (BETA)*, and direct delivery (deployment) is planned (PLANNED)*.

Prerequisites

  • Python 3.11 or newer* (the CLI uses click and click-completion).
  • Git*, so Coder can work inside your repository.
  • Access to the Unified API* (locally on port 8100 or your deployed instance).
  • A workspace* in Ottili ONE with Ottili Coder enabled, plus an API token.
  • Network access for auth, queue sync, credits, and audit.

Installation

The CLI lives in the repository at cli/ottili.py. There is no separately packaged binary to install.

1. Get the repository* — clone or use an existing checkout of Ottili ONE and change into its root directory.

2. Install the Python dependencies*:

   pip install -r requirements.txt

At minimum it needs click>=8.0.0, click-completion>=0.5.2 and pyyaml>=6.0.

3. Make it executable or set an alias* — call it directly:

   python3 cli/ottili.py --help

More convenient as an alias (in your shell rc, e.g. ~/.bashrc or ~/.zshrc):

   alias ottili='python3 /path/to/ottili_one_v1/cli/ottili.py'

Optionally make it executable:

   chmod +x cli/ottili.py

Authentication

The coder commands send requests to the Unified API. There is no separate login command; you configure the connection through environment variables:

  • OTTILI_WORKSPACE_SLUG – your workspace slug (or --workspace per command).
  • OTTILI_API_TOKEN (or OTTILI_CODER_TOKEN) – your API bearer token.
  • OTTILI_CLOUD_URL – the Unified API base URL (default: http://localhost:8100).
export OTTILI_WORKSPACE_SLUG="your-workspace"
export OTTILI_API_TOKEN="your-token"
export OTTILI_CLOUD_URL="http://localhost:8100"

Verify your environment

Before your first run, check the connection with a probe intake:

ottili coder mission-intake "Add a health-check endpoint" --workspace your-workspace

If the CLI returns a normalized mission, auth, workspace and API are reachable. Add --json to get the raw MissionIntake wire shape (identical to cloud and desktop).

Available commands

  • ottili coder mission-intake "<request>" – normalize a raw request into a Coder mission.
  • ottili coder mission-refine "<request>" --answer field=answer – re-normalize after clarifying answers.
  • ottili coder mission-action <mission-id> --action <clarify|plan|dispatch|cancel|retry|reset> – apply a lifecycle action.
  • ottili coder mission-generate-plan <mission-id> – generate a reviewable technical plan.
  • ottili coder job-dependency-graph <job-id> – show the validated, ordered task dependency graph.
  • ottili coder job-dependency-evaluate <job-id> – evaluate the dependency graph with gate/barrier overrides (what-if).

List all commands with ottili coder --help.

Next steps

  • How a [mission](/docs/coder-missions) becomes a run.
  • The [modes](/docs/coder-modes) of Ottili Coder.
  • [Local, cloud and hybrid runs](/docs/coder-local-cloud-hybrid-runs).

Was this article helpful?