Skip to main content

CLI overview

The ECI CLI is the command-line interface for Elice Cloud Infrastructure. It lets you manage VMs, networks, and storage from a terminal and integrate them into automation scripts and CI/CD.

eci-cli

Install

Releases / issues

For release notes and bug reports, see github.com/elice-dev/eci-cli.

curl -fsSL https://raw.githubusercontent.com/elice-dev/eci-cli/main/scripts/install.sh | sh
eci --version # confirm install

Supported platforms:

  • macOS (arm64, Apple Silicon)
  • Linux (x86_64)

Configure

You can configure the CLI in two ways depending on your environment.

MethodCommandNotes
Interactiveeci config initPrompts for endpoint, token, and zone in one go
Non-interactiveeci config set <key> <value>Set each value individually. Good for scripts and AI agents
With AI agents

AI agents like Claude Code sometimes have trouble with interactive prompts, so eci config set works more reliably.

Interactive (eci config init)

eci config init
FieldValue
EndpointCommercial: https://portal.elice.cloud/api
Public sector: https://portal.gov.elice.cloud/api
TokenSign in to the portal → User Management → User Access Tokens → create a token → paste the issued value
ZoneAuto-selected if there's only one; otherwise you pick from a list

Token issuance screen

Non-interactive (eci config set)

eci config set api_endpoint https://portal.elice.cloud/api
eci config set api_token <TOKEN>
eci config set zone_id auto # auto-select zone

Config is saved to ~/.eci/config.yaml (mode 0600).

Verify

eci config verify # auth + zone validation
When verification fails

Hints and setup commands are printed for each failing item — follow the guidance.

Resource query pattern

Every resource uses the same shape.

eci <group> <resource> list # list
eci <group> <resource> get <name|id> # single

Examples:

eci compute vm list
eci compute vm get my-vm
eci storage block snapshot list --block-storage my-disk
eci image get "Ubuntu 24.04 LTS (Standard)"
Common optionDescription
--format {table,json,csv}Output format (default table)
--query col1,col2,...Pick columns

Global options

OptionDescription
-V, --versionPrint the version
--zone <name | uuid>Use a different zone for this command
-h, --helpHelp

Environment variables

Precedence

Environment variables take precedence over ~/.eci/config.yaml. In CI or container environments you can rely on env vars alone, with no config file.

VariablePurpose
ECI_API_ENDPOINTAPI base URL
ECI_API_TOKENBearer token
ECI_ZONE_IDDefault zone
ECI_CONFIGConfig file path
ECI_DEBUG1 prints internal warnings to stderr

Shell completion

# Bash (~/.bashrc)
eval "$(_ECI_COMPLETE=bash_source eci)"

# Zsh (~/.zshrc)
eval "$(_ECI_COMPLETE=zsh_source eci)"

# Fish (~/.config/fish/config.fish)
_ECI_COMPLETE=fish_source eci | source

Update

Re-running the install script upgrades to the latest version. For a specific version, prefix with VERSION=0.2.0:

curl -fsSL https://raw.githubusercontent.com/elice-dev/eci-cli/main/scripts/install.sh | sh

Highlights

  • Reference resources by name: use human-readable names instead of long UUIDs (like --image "Ubuntu 24.04 LTS")
  • One-shot provisioning with launch: create the VM, disk, NIC, and public IP and boot in one go. If something fails mid-flight, created resources are cleaned up automatically
  • Multiple output formats: table, JSON, or CSV — pick the columns you need
  • Automatic retries: if the server hiccups, the CLI retries automatically (up to 3 times)

Next