Skip to content

CLI ​

aral is the unified command-line tool for Aral Cloud. It manages servers, projects, volumes, DNS, S3 buckets and Git repositories from your terminal, and is designed to be AI-agent and CI friendly thanks to machine-readable JSON output.

Install ​

Install the latest release with the official one-liner:

bash
curl -fsSL https://aralcloud.uz/dl/install | sh

The installer detects your OS and CPU architecture, places the aral binary in /usr/local/bin (falling back to ~/.local/bin when that directory is not writable) and prints where it landed. Check it works:

bash
aral --version

Prebuilt binaries for every supported platform can also be downloaded directly from aralcloud.uz/cli.

TIP

Set ARAL_INSTALL_DIR before running the installer to choose a different destination directory.

Authentication ​

Log in with your Aral Cloud email and password. The token is stored in ~/.aral/config.yaml and reused on every command.

bash
aral auth login --email you@example.com --password 'your-password'

If your account has more than one organization, pass --org_id to select one on login. Confirm who you are with:

bash
aral auth whoami

For automation (CI pipelines, AI agents), mint a long-lived API token instead of using your password:

bash
aral auth token --name ci --scope servers:read --scope servers:write --expires-in-days 90

A token has to say what it may do. Pass --scope once per operation, or --all to grant everything your account can do — including deleting every server, volume and database in the organization. There is no default: leaving both out is refused, so an unrestricted token is only ever one you asked for.

WARNING

The nex_... API token is shown only once when it is created. Store it securely and pass it via the ARAL_TOKEN environment variable rather than committing it to a repository.

To clear the stored token:

bash
aral auth logout

Configuration ​

Configuration lives in ~/.aral/config.yaml. The default API endpoint is https://aralcloud.uz. You can override the endpoint, token and output format globally on any command, or through environment variables.

FlagEnvironment variableDescription
--endpoint <url>ARAL_ENDPOINTAPI endpoint override (default https://aralcloud.uz)
--token <token>ARAL_TOKENBearer token override (JWT or nex_ API token)
--output <table|json>, -oARAL_OUTPUTOutput format (default table)
bash
export ARAL_TOKEN=nex_xxxxxxxxxxxx
export ARAL_ENDPOINT=https://aralcloud.uz
aral server list

JSON output for scripts and AI agents ​

Add --output json (or -o json) to any command to get machine-readable JSON instead of a table. This is the recommended mode for scripting and AI agents.

bash
aral server list --output json
aral -o json auth whoami

You can also set it once for the whole session:

bash
export ARAL_OUTPUT=json

Commands reference ​

Authentication — aral auth ​

CommandDescription
auth loginLog in with email + password and store the token
auth whoamiShow the current authenticated user
auth tokenCreate a non-interactive API token (nex_...) for AI agents / CI; needs --scope or --all
auth logoutRemove the stored token
bash
aral auth login --email you@example.com --password 'secret' --org_id org_123
aral auth whoami
aral auth token --name ci --scope servers:read --expires-in-days 365
aral auth logout

Projects — aral project ​

CommandDescription
project listList projects in the active organization
project use <project_id>Switch the active project (re-mints the token scoped to it)
project create --name <name>Create a project
project delete <project_id>Delete a project; refused while it still holds resources
bash
aral project list
aral project use proj_abc123
aral project delete proj_abc123

Deleting a project never deletes what is inside it. A project that still holds servers, volumes, buckets, databases or anything else is refused, and the error names what is blocking it — remove or move those first. The default project cannot be deleted at all.

Servers / VMs — aral server ​

CommandDescription
server listList servers in the active project
server get <id>Show one server
server createCreate a server
server start <id>Start a server
server stop <id>Stop a server
server reboot <id>Reboot a server
server delete <id>Delete a server
server ssh <id>Print the ssh command to reach a server
server plansList available plans
server regionsList available regions
server imagesList available OS images
bash
aral server plans
aral server regions
aral server create \
  --name web-1 \
  --plan-id <plan-id> \
  --region hel1 \
  --os-image ubuntu-24.04 \
  --ssh-key "ssh-ed25519 AAAA... you@host"
aral server list
aral server ssh srv_123
aral server reboot srv_123
aral server delete srv_123

TIP

Run aral server plans and aral server regions first — plan ids are catalogue values and change over time, so copy the id you want from that output instead of guessing one.

TIP

--ssh-key can be repeated to add multiple keys. server ssh just prints the ssh command — pipe it or run it yourself.

Volumes — aral volume ​

CommandDescription
volume listList volumes
volume createCreate a volume
volume delete <id>Delete a volume
volume attach <id> --server-id <id>Attach a volume to a server
volume detach <id>Detach a volume
bash
aral volume create --name data --size 50 --region hel1
aral volume attach vol_123 --server-id srv_123
aral volume detach vol_123
aral volume delete vol_123

DNS — aral dns ​

CommandDescription
dns zonesList DNS zones
dns add-zone --name <domain>Create a DNS zone
dns delete-zone <id>Delete a DNS zone
dns records <zone>List records in a zone
dns add-record <zone>Create a record in a zone
bash
aral dns add-zone --name example.com
aral dns zones
aral dns add-record example.com --name www --type A --content 203.0.113.10
aral dns records example.com

S3 object storage — aral s3 ​

CommandDescription
s3 listList S3 buckets
s3 create --name <name>Create a bucket (optional --region)
s3 delete <name>Delete a bucket
bash
aral s3 create --name my-bucket --region hel1
aral s3 list
aral s3 delete my-bucket

Git repositories — aral git ​

CommandDescription
git listList repositories in the active project
git get <name>Show one repository
git create <name>Create a repository (optional --description, --private)
git delete <name>Delete a repository
git clone <name>Clone a repository into the current directory
git runs <name>Show CI/CD pipeline runs for a repository
bash
aral git create my-app --description "My app" --private
aral git list
aral git clone my-app
aral git runs my-app
aral git delete my-app

TIP

git clone shells out to your local git, so make sure git is installed and your SSH/HTTPS credentials are set up.