$ ottto status --json
{
"protocol_version": 15,
"daemon": "running"
}One CLI for humans, CI, and agents
Send one request to the local daemon. Get a readable answer at the prompt or structured JSON for CI and agents. The daemon owns state and guarded actions.
- Readable output for humans
- JSON and NDJSON for automation
- Daemon-enforced guardrails
Same commands. Output built for the caller.
Humans get concise summaries. CI and agents add --json or --watch without learning a second interface.
Read the answer.
Start with a concise status summary. Add JSON when you need exact fields.
$ ottto statusGate on typed output.
Verify one source, then evaluate its documented exit code and JSON response.
$ ottto verify --app codex --jsonRequest only what you need.
Bound machine-readable context by range, source, and token budget.
$ ottto context --json --range today --app codex --max-tokens 4000The CLI asks. The daemon decides.
Operational commands use the per-user local daemon to read canonical state, evaluate health, or run approved local actions. The CLI renders a human summary or returns JSON or NDJSON.
Clear trust boundary. Agents never need to edit Ottto state or app configuration directly. Diagnosis is read-only. Repair is separate, source-scoped, and daemon-approved.
--jsonstate + guarded actionsConnect. Inspect. Diagnose. Repair.
Read commands report state. doctor diagnoses. A separate repair request crosses an explicit daemon guardrail.
- 01
Connect this Mac
ottto setupreturns a browser claim when the account needs confirmation. - 02
Inspect current state
status,account, andappsreport daemon reachability, account connection, and app readiness. - 03
Verify one source
verify --app …checks configuration and publishes safe setup status. It does not repair by default. - 04
Diagnose the runtime
ottto doctorruns daemon health checks. It reports problems; it does not repair them. - 05
Repair separately
fix --app …requests one daemon-approved, source-scoped repair. - 06
Collect or update
diagnostics collectcreates a redacted local bundle.update checkreturns owner-aware update guidance.
--json returns once. --watch streams progress.
Use --json for one final object. Add --watch for NDJSON progress and a final event your automation can evaluate.
$ ottto status --json
{
"protocol_version": 15,
"daemon": "running"
}$ ottto status --json --watch
{"event":"progress","stage":"request_started","protocol_version":15}
{"event":"final","ok":false,"exit_code":10,"error":{"code":"daemon_unavailable","retryable":true}}Illustrative, shortened output based on public protocol fixtures. Request IDs, socket paths, and messages vary by run.
Ask for evidence, not a data dump.
Through the daemon, a connected Mac can request backend-computed context, costs, sessions, and Advisor recommendations. These commands return JSON-only, parseable responses.
Set the scope first: range, source, machine, session limit, sort order, or token budget.
A context pack capped to your response budget.
ottto context --json --range today --app codex --max-tokens 4000A cost breakdown for one range and source.
ottto costs --json --range today --app codexA limited session list for focused review.
ottto sessions --json --limit 20 --app codexAdvisor recommendations ready for machine review.
ottto recommendations --jsonRead freely. Change state deliberately.
Inspect and diagnose without giving automation direct access to Ottto state. When an action can change local configuration or cloud state, the CLI makes the approval boundary explicit.
Read-only
- Status, account, and app readiness
- App verification
- Local diagnostics collection
- Update state and guidance
Guarded actions
- Browser claim may return
requires_user: true - Repairs are separate and source-scoped
- Diagnostics upload requires approval and retention acceptance
- Cloud register and sync require
--approve
Daemon authority
- Canonical local runtime state
- Health evaluation
- Approved local repairs
- Safe setup-status publication
Install the CLI.
Use the official tap, then run ottto status to check the local daemon. Want a graphical interface too? Install the Mac app separately.
$ brew install ottto-ai/tap/ottto