Skip to main content
The engini CLI is machine-first: human-readable output on a TTY, JSON when piped or with --json, stable exit codes, and agent-resumable flows.
The CLI ships on npm only - pip install engini is the Python SDK and includes no CLI.

Upgrading

On an interactive terminal, the CLI checks once a day whether a newer release is available on your current channel (stable or beta - a beta install compares against beta, never against latest) and prints a one-line notice to stderr after the command’s own output:
This check never runs under --json, --quiet, in CI (CI set), or when output is piped - only a human at a terminal sees it. Set ENGINI_NO_UPDATE_CHECK=1 - or the conventional NO_UPDATE_NOTIFIER=1 - to disable it entirely.

Commands at a glance

Quickstart

Universal flags

Every command accepts:

Authentication & configuration

Two ways to authenticate:
  • engini login --api-key eng_… - stores the credential in a 0600 TOML config file (~/.config/engini/config.toml; %APPDATA%\engini\config.toml on Windows), alongside api_url (default https://api.engini.io).
  • Environment variables - ENGINI_API_KEY (preferred) or ENGINI_API_TOKEN; no login needed. Useful for CI and agents.
Verify with engini whoami (exit code 3 means the credential is missing/invalid). Point at another environment with engini login --api-url <url>. What the two credential types mean: Authentication.

Errors & big results

  • Failures print a structured JSON error (with a hint where applicable) and exit with a stable code - 2 usage, 3 auth, 4 not found, 5 needs-input, 124 timeout. Full table: machine contract.
  • API rate limiting surfaces as an error - honor Retry-After per the rate-limit rules.
  • List commands return complete results (pagination is handled for you). Large tool outputs become a result handle - drill in with engini tools result <handle> instead of re-fetching.
Full per-command reference: CLI commands.