Getting Started
CLI commands for Global Infra Cloud services.
Installation
gi allows you to manipulate items of Global Infrastructure — providers, tenants, services, platforms, regions, subscriptions, users, groups, events, change pipelines, repositories, access control, action types, asset actions, asset types, change components, change processes, datacenters, frameworks, OIDC tokens, service categories, and tenant platforms.
gi [GLOBAL OPTIONS] command [COMMAND OPTIONS] [ARGUMENTS...]Download the latest binary for your platform from the releases page.
Platform / Architecture Matrix
| Platform | Architecture | Asset name |
|---|---|---|
| Linux | amd64 | gi-linux-amd64 |
| Linux | arm64 | gi-linux-arm64 |
| macOS | Intel | gi-darwin-amd64 |
| macOS | Apple Silicon | gi-darwin-arm64 |
| Windows | amd64 | gi-windows-amd64.exe |
| Windows | arm64 | gi-windows-arm64.exe |
Install
# Get the download URL for a specific asset (example for Linux amd64)
export GITLAB_TOKEN="your-gitlab-token"
export PLATFORM_ARCH="linux-amd64"
curl -sL --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
"https://gitlab.core.emea.giservices.io/api/v4/projects/17157/releases" \
| jq -r --arg name "gi-$PLATFORM_ARCH" '.[0].assets.links[] | select(.name == $name) | .url' \
| sed 's|.*/cli/-/jobs/\([0-9]*\)/artifacts/raw/|https://gitlab.core.emea.giservices.io/api/v4/projects/17157/jobs/\1/artifacts/|' \
| xargs curl -L -o gi --header "PRIVATE-TOKEN: $GITLAB_TOKEN"
# Make it executable
chmod +x gi
# Move it to a directory in your PATH
sudo mv gi /usr/local/bin/# Get the download URL for a specific asset (example for Windows amd64)
$env:GITLAB_TOKEN = "your-gitlab-token"
$env:PLATFORM_ARCH = "windows-amd64"
$headers = @{ "PRIVATE-TOKEN" = $env:GITLAB_TOKEN }
$release = Invoke-RestMethod -Headers $headers `
-Uri "https://gitlab.core.emea.giservices.io/api/v4/projects/17157/releases" | Select-Object -First 1
$url = ($release.assets.links | Where-Object { $_.name -eq "gi-$($env:PLATFORM_ARCH).exe" }).url
$apiUrl = $url -replace '.*/cli/-/jobs/(\d+)/artifacts/raw/', 'https://gitlab.core.emea.giservices.io/api/v4/projects/17157/jobs/$1/artifacts/'
Invoke-WebRequest -Headers $headers -Uri $apiUrl -OutFile gi.exe
# Move it to a directory in your PATH
Move-Item gi.exe "$env:LOCALAPPDATA\Microsoft\WindowsApps\gi.exe"Alternatively, download directly from the releases page in your browser.
Verify
gi --versionUpdate
To update gi, repeat the installation steps with the latest release. Download the new binary and replace the existing one.
Authentication
gi supports two authentication methods. Token auth takes precedence over username/password when both are provided.
Token Authentication
Generate a personal access token from your profile: https://console.core.emea.giservices.io/-/self/tokens
# Via environment variable (recommended)
export GI_TOKEN="pat:..."
gi tenant list
# Via flag
gi --token my-api-token tenant listBasic Authentication (username / password)
# Via environment variables
export GI_USERNAME="admin"
export GI_PASSWORD="s3cret"
gi tenant list
# Via flags
gi -U admin -P s3cret tenant listConfiguration
Global Flags
All global flags can be set via environment variables. Flags take precedence over environment variables.
| Flag | Alias | Env Vars | Default | Description |
|---|---|---|---|---|
--host | -H | GI_HOST, CONSOLE_CLI_HOST | https://console.core.emea.giservices.io/api/v1/ | Console API host |
--username | -U | GI_USERNAME, CONSOLE_CLI_USERNAME | Username for console APIs | |
--password | -P | GI_PASSWORD, CONSOLE_CLI_PASSWORD | Password for console APIs | |
--token | -T | GI_TOKEN, CONSOLE_CLI_TOKEN | API token (takes precedence over username/password) | |
--debug | -D | GI_DEBUG, CONSOLE_CLI_DEBUG | false | Show debug output |
--output | -o | GI_OUTPUT, CONSOLE_CLI_OUTPUT | pretty | Output format: pretty, json |
Output Formats
pretty (default)
Renders a styled Unicode table with color-coded status indicators and bold headers.
╭────────────┬──────────────┬──────────────┬────────╮
│ ID │ Name │ Provider │ Status │
├────────────┼──────────────┼──────────────┼────────┤
│ tnt-001 │ acme-prod │ ops-emea │ ● │
│ tnt-002 │ acme-staging │ ops-emea │ ● │
│ tnt-003 │ beta-test │ ops-apac │ ● │
╰────────────┴──────────────┴──────────────┴────────╯Status color coding
| Color | Statuses |
|---|---|
| Green | SUCCESS, READY |
| Cyan | RUNNING, WAITING, IN_PROGRESS, ACCEPTED, CREATED, PENDING |
| White | SKIPPED |
| Red | Any other status (errors, failures) |
json
Outputs raw JSON to stdout with no log decoration — suitable for piping into jq or other tools.
gi -o json tenant list | jq '.[].name'[
{
"id": "tnt-001",
"name": "acme-prod",
"provider": "ops-emea",
"status": "READY"
}
]When using json output, all log messages are suppressed — only the JSON payload is written to stdout.