dci is the command-line interface for the DoiT Cloud Intelligence API. Manage budgets, reports, alerts, and run analytics queries directly from your terminal.
# macOS (Homebrew) — the `brew trust` step is required once on Homebrew 6+
brew trust doitintl/dci-cli
brew install doitintl/dci-cli/dci
# Windows (WinGet)
winget install DoiT.dci
# Windows (Scoop)
scoop bucket add doitintl https://github.com/doitintl/dci-cli
scoop install dci
# Linux (.deb)
sudo dpkg -i dci_*_linux_amd64.deb
# Linux (.rpm)
sudo rpm -i dci_*_linux_amd64.rpmPrebuilt binaries for all platforms are available on the Releases page.
On first run, dci automatically configures itself and opens a browser window for authentication via the DoiT Console. You can also sign in explicitly:
# Sign in to the DoiT Console
dci login
# Check your CLI configuration
dci status
# List your budgets
dci list-budgets
# List reports as a table
dci list-reports
# Run an analytics query
dci query body.query:"SELECT * FROM aws_cur_2_0 LIMIT 10"# See all available commands
dci --help
# Get help for a specific command
dci list-budgets --helpThe default output format is table. Override it with the --output flag:
dci list-budgets --output json
dci list-budgets --output yaml
dci list-budgets --output table
dci list-budgets --output toontoon emits Token-Oriented Object Notation — a
compact, lossless format that uses ~40% fewer tokens than JSON for list-shaped
data. It is opt-in and most useful when driving the CLI from an LLM agent.
# Wrap long cell values instead of truncating
dci list-budgets --table-mode wrap
# Show only specific columns
dci list-budgets --table-columns id,name,amountdci adapts its output depending on whether a human or an AI agent is driving it.
In human mode (the default in an interactive terminal) you get tables, color,
and contextual hints. In agent mode the CLI emits clean, deterministic output
that is cheap to parse and free of decoration:
- Default
--outputbecomestoon(compact, token-efficient) instead oftable - No color, spinners, or other terminal decoration
- Banners, tips, and status chatter go to stderr, leaving stdout for data only
- The request
User-Agentcarries amode=token —agent(explicit flag/env or a known AI-agent environment),noninteractive(piped/redirected output or CI/CD), orinteractive(human at a terminal) — so API traffic can be segmented by interface
Detection runs in priority order — the first match wins:
DCI_AGENT_MODEenvironment variable —DCI_AGENT_MODE=1forces agent mode,DCI_AGENT_MODE=0forces human mode. Always wins.--agent/--no-agentflags — explicit, per-invocation override.- Known agent environment variables — if any of these are set, agent mode is
assumed:
CLAUDECODE,CLAUDE_CODE,CURSOR_AGENT,KIRO_AGENT,AIDER_SESSION,GEMINI_CLI,REPLIT_AGENT,WINDSURF_AGENT,OPENHANDS_AGENT,DEVIN_AGENT. (Open a PR to extend this list.) - Non-TTY stdout — a soft signal: when output is piped or redirected and no setting above applies, agent mode is assumed.
# Force agent mode
DCI_AGENT_MODE=1 dci list-budgets
dci --agent list-budgets
# Force human mode (tables, color) even when piping or running under an agent
dci --no-agent list-budgets | less -SRun dci status to see whether agent mode is active and why.
# macOS (Homebrew)
brew update && brew upgrade dci
# Windows (WinGet)
winget upgrade DoiT.dci
# Windows (Scoop)
scoop update dciNote (Homebrew 6+): if
dcistops appearing inbrew upgrade, the tap is untrusted and Homebrew skips it silently. Runbrew trust doitintl/dci-clionce to fix it.
By default, dci authenticates interactively via the DoiT Console (OAuth). For CI pipelines and non-interactive environments, set the DCI_API_KEY environment variable:
export DCI_API_KEY=<your-api-key>
dci list-budgets --output jsonWhen DCI_API_KEY is set, the CLI skips the browser-based login and authenticates using the API key directly. Run dci status to verify the active auth method.
Configuration is stored in your OS user config directory:
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/dci/apis.json |
| Linux | ~/.config/dci/apis.json |
| Windows | %APPDATA%\dci\apis.json |
The config file is created automatically on first run. Delete it to reset to defaults.
This repo ships a reusable agent skill at skills/dci-cli that teaches AI coding agents how to operate the dci CLI safely and effectively.
Install it with the built-in subcommand:
dci skill claude # installs to ~/.claude/skills/dci-cli/
dci skill codex # installs to ~/.codex/skills/dci-cli/
dci skill kiro # installs to ~/.kiro/skills/dci-cli/
dci skill gemini # installs to ~/.gemini/skills/dci-cli/Run dci skill --help for the full list of supported agents.
Alternatively, for Codex you can use the skill-installer helper:
python3 ~/.codex/skills/.system/skill-installer/scripts/install-skill-from-github.py \
--repo doitintl/dci-cli \
--path skills/dci-cliSee LICENSE for details.