ez, the command line
ez is the native command-line client over the generated @conflict-hq/ezacto-client
package. It supports named organization configs, token login, identity checks,
redacted config output, and both human and JSON output.
Install
npm install -g @conflict-hq/ezacto-cli
ez --help
Node 22 or later. The package is published from
ConflictHQ/ezacto-oss under the
AGPL v3; npx @conflict-hq/ezacto-cli --help runs it without installing.
Use
# Safest for an already-issued scoped API token: it never enters shell history.
printf '%s\n' "$EZACTO_TOKEN" | ez login --token-stdin --org conflict
ez whoami
ez whoami --json
ez config
ez log 2h northpeak devops -m 'release work'
ez timer start northpeak devops -m 'incident follow-up'
ez timer status
ez timer stop
ez week
ez logout
--base-url selects a different ezacto deployment during login. Plain HTTP is
accepted only for localhost development servers; remote credentials require
HTTPS. --org selects a named organization, and the most recent login becomes
active.
The default config is $XDG_CONFIG_HOME/ezacto/config.json, falling back to
~/.config/ezacto/config.json. EZACTO_CONFIG or --config can override it.
Writes are atomic and the credential file is mode 0600; command output never
prints the token. --token is supported for automation but --token-stdin or
the EZACTO_TOKEN environment variable avoids exposing a token in process lists
and shell history.
Time commands resolve project names/codes and task names through the native API.
Durations accept compact hour/minute forms such as 2h, 90m, and 1h30m.
--date selects the spent date for log or timer start; --week accepts any
date in the Monday–Sunday week to render. Starting a timer relies on the same API
invariant as the web app: the previous running timer is stopped atomically before
the new one starts.