Skip to main content
The Avala CLI lets you list datasets, create exports, manage cloud storage, and more — directly from the command line.

Installation

curl -fsSL https://avala.ai/install.sh | bash
The install script detects your Python version, installs avala[cli] via pip, and verifies the setup. Requires Python 3.9+. This installs the avala command along with Click and Rich for formatted terminal output.

Authentication

Set your API key as an environment variable (recommended):
export AVALA_API_KEY="avk_your_api_key"
Or pass it as a flag on any command:
avala --api-key avk_your_api_key datasets list
To set up credentials interactively:
avala configure
This walks you through entering your API key and base URL, then prints the export statements to add to your shell profile.

Global Options

OptionDescription
--api-key TEXTAvala API key (or set AVALA_API_KEY env var).
--base-url TEXTAPI base URL (or set AVALA_BASE_URL env var). Default: https://api.avala.ai/api/v1.
--output, -oOutput format: table (default) or json.
--versionShow CLI version and exit.
--helpShow help for any command.

Version

Print the installed CLI version:
avala --version
avala, version 0.8.1

JSON Output

Pass --output json (or -o json) to any command to get machine-readable JSON instead of Rich tables. This is useful for scripting and piping into tools like jq.
avala -o json datasets list | jq '.[].name'
When -o json is set, all output goes to stdout as valid JSON. Progress indicators and status messages are sent to stderr, so piping works cleanly.

Shell Completion

Enable tab-completion for all avala commands and options. The CLI supports bash, zsh, and fish.
avala shell-completion bash >> ~/.bashrc
source ~/.bashrc
If you omit the shell argument, the CLI auto-detects your current shell from the SHELL environment variable.

Configure

Interactive setup wizard that prompts for your API key and base URL, validates the key against the API, and prints the export statements to add to your shell profile.
avala configure
Configure your Avala CLI credentials.

API Key: avk_your_api_key
Base URL [https://api.avala.ai/api/v1]:

Validating API key... OK
  Organization: Acme Robotics

Add these to your shell profile (.zshrc):

  export AVALA_API_KEY='avk_your_api_key'
If validation fails (wrong key, network issue), the wizard asks whether to save anyway. This is useful for offline setup or when working with a custom base URL.

Status Dashboard

Get a quick overview of your organization — datasets, projects, pending exports, and fleet health — in a single command.
avala status
The dashboard shows:
  • Organization name from your API key
  • Recent datasets (up to 5)
  • Recent projects with status
  • Pending exports (if any are processing)
  • Fleet devices online/offline count (if Fleet is enabled)
Use -o json for a machine-readable snapshot:
avala -o json status | jq '.datasets.showing'

Commands

datasets

# List all datasets
avala datasets list

# Limit results
avala datasets list --limit 10

# Get a specific dataset
avala datasets get <uid>
list options:
OptionDescription
--limit INTEGERMaximum number of results to return.
get output fields: UID, Name, Slug, Items, Type, Created, Updated.

projects

# List all projects
avala projects list

# Get a specific project
avala projects get <uid>
list options:
OptionDescription
--limit INTEGERMaximum number of results to return.
get output fields: UID, Name, Status, Created, Updated.

tasks

# List all tasks
avala tasks list

# Limit results
avala tasks list --limit 50

# Get a specific task
avala tasks get <uid>
list options:
OptionDescription
--limit INTEGERMaximum number of results to return.
get output fields: UID, Name, Type, Status, Project, Created, Updated.

exports

# List all exports
avala exports list

# Get export details
avala exports get <uid>

# Create a new export
avala exports create --project <uid>
avala exports create --dataset <uid>

# Wait for an export to finish
avala exports wait <uid>
create options:
OptionDescription
--dataset TEXTDataset UID to export.
--project TEXTProject UID to export.
wait options:
OptionDescription
--interval FLOATSeconds between polls (default: 2.0).
--timeout FLOATMaximum seconds to wait (default: 300).
The wait command polls the export until it reaches a terminal state (completed or failed), then prints the final export details. Progress dots are printed to stderr so you can pipe the result:
# Create and wait in one pipeline
avala exports create --project proj_abc123 \
  | grep -oP 'exp_\w+' \
  | xargs avala exports wait

storage-configs

Manage cloud storage connections (AWS S3, Google Cloud Storage).
# List storage configurations
avala storage-configs list

# Add an S3 bucket
avala storage-configs create \
  --name "Production S3" \
  --provider aws_s3 \
  --s3-bucket-name my-bucket \
  --s3-bucket-region us-west-1 \
  --s3-access-key-id $AWS_ACCESS_KEY_ID \
  --s3-secret-access-key $AWS_SECRET_ACCESS_KEY

# Add a GCS bucket
avala storage-configs create \
  --name "Production GCS" \
  --provider gc_storage \
  --gc-bucket-name my-gcs-bucket \
  --gc-auth-json '{"type":"service_account",...}'

# Test a storage connection
avala storage-configs test <uid>

# Delete a storage config (prompts for confirmation)
avala storage-configs delete <uid>
create options:
OptionDescription
--name TEXTName for the storage configuration (required).
--provider CHOICEaws_s3 or gc_storage (required).
AWS S3 options:
OptionDescription
--s3-bucket-name TEXTS3 bucket name.
--s3-bucket-region TEXTAWS region (e.g., us-west-1).
--s3-bucket-prefix TEXTObject key prefix.
--s3-access-key-id TEXTAWS access key ID.
--s3-secret-access-key TEXTAWS secret access key.
Google Cloud Storage options:
OptionDescription
--gc-bucket-name TEXTGCS bucket name.
--gc-prefix TEXTObject key prefix.
--gc-auth-json TEXTService account JSON credentials.

agents

Manage automation agents.
# List agents
avala agents list

# Get agent details
avala agents get <uid>

# Create an agent
avala agents create \
  --name "QA Bot" \
  --events "task.completed,result.submitted" \
  --callback-url https://example.com/hook

# Delete an agent (prompts for confirmation)
avala agents delete <uid>

# List executions for an agent
avala agents executions <uid>

# Test an agent
avala agents test <uid>
create options:
OptionDescription
--name TEXTAgent name (required).
--events TEXTComma-separated list of event types.
--callback-url TEXTWebhook callback URL (HTTPS).
--description TEXTAgent description.
--project TEXTProject UID to scope the agent to.
--task-types TEXTComma-separated list of task types.
list options:
OptionDescription
--limit INTEGERMaximum number of results to return.
executions options:
OptionDescription
--limit INTEGERMaximum number of results to return.

webhooks

Manage webhook subscriptions.
# List webhooks
avala webhooks list

# Get webhook details
avala webhooks get <uid>

# Create a webhook
avala webhooks create \
  --target-url https://example.com/webhook \
  --events "task.completed,export.ready"

# Delete a webhook (prompts for confirmation)
avala webhooks delete <uid>

# Test a webhook
avala webhooks test <uid>

# List webhook deliveries
avala webhooks deliveries
create options:
OptionDescription
--target-url TEXTWebhook target URL, HTTPS (required).
--events TEXTComma-separated list of event types (required).
--secret TEXTHMAC signing secret (auto-generated if omitted).
list / deliveries options:
OptionDescription
--limit INTEGERMaximum number of results to return.

quality-targets

Manage quality targets for projects.
# List quality targets for a project
avala quality-targets list --project <uid>

# Get a specific quality target
avala quality-targets get --project <uid> <target_uid>

# Create a quality target
avala quality-targets create \
  --project <uid> \
  --name "Accuracy Target" \
  --metric accuracy \
  --threshold 0.95 \
  --operator gte \
  --severity critical

# Delete a quality target (prompts for confirmation)
avala quality-targets delete --project <uid> <target_uid>

# Evaluate all quality targets for a project
avala quality-targets evaluate --project <uid>
create options:
OptionDescription
--project TEXTProject UID (required).
--name TEXTTarget name (required).
--metric TEXTMetric to monitor (required).
--threshold FLOATThreshold value (required).
--operator TEXTComparison operator (gt, lt, gte, lte).
--severity CHOICEAlert severity: warning or critical.
list options:
OptionDescription
--project TEXTProject UID (required).
--limit INTEGERMaximum number of results to return.

consensus

Manage consensus scoring for projects.
# Get consensus summary for a project
avala consensus summary --project <uid>

# List consensus scores
avala consensus scores --project <uid>

# Compute consensus scores
avala consensus compute --project <uid>

# View or update consensus config
avala consensus config --project <uid>
avala consensus config --project <uid> --iou-threshold 0.7 --min-annotations 3
summary / scores / compute options:
OptionDescription
--project TEXTProject UID (required).
scores options:
OptionDescription
--limit INTEGERMaximum number of results to return.
config options (pass any to update, omit all to view):
OptionDescription
--project TEXTProject UID (required).
--iou-threshold FLOATIoU threshold (0.0-1.0).
--min-agreement-ratio FLOATMinimum agreement ratio (0.0-1.0).
--min-annotations INTEGERMinimum annotations required.

inference-providers

Manage inference providers.
# List inference providers
avala inference-providers list

# Get provider details
avala inference-providers get <uid>

# Create a provider
avala inference-providers create \
  --name "My SageMaker" \
  --provider-type sagemaker \
  --config '{"endpoint": "my-endpoint", "region": "us-east-1"}'

# Delete a provider (prompts for confirmation)
avala inference-providers delete <uid>

# Test provider connection
avala inference-providers test <uid>
create options:
OptionDescription
--name TEXTProvider name (required).
--provider-type CHOICEhttp or sagemaker (required).
--config TEXTProvider config as JSON string (required).
--description TEXTProvider description.
--project TEXTProject UID to scope the provider to.
list options:
OptionDescription
--limit INTEGERMaximum number of results to return.

auto-label

Manage auto-label jobs.
# List auto-label jobs
avala auto-label list

# Filter by project
avala auto-label list --project <uid>

# Get job details
avala auto-label get <uid>

# Create an auto-label job
avala auto-label create \
  --project <uid> \
  --model-type sam3 \
  --confidence-threshold 0.85 \
  --labels "car,truck"

# Cancel a running job (prompts for confirmation)
avala auto-label cancel <uid>
create options:
OptionDescription
--project TEXTProject UID (required).
--model-type CHOICEInference model: sam3 or yolo.
--confidence-threshold FLOATMinimum confidence (0.0-1.0).
--labels TEXTComma-separated list of labels to filter.
--dry-runRun inference without saving results.
list options:
OptionDescription
--project TEXTFilter by project UID.
--limit INTEGERMaximum number of results to return.

fleet

Fleet commands are in preview. Commands described here may change.
Manage fleet devices, recordings, events, rules, and alerts.
# List online devices
avala fleet devices list --status online

# Register a new device
avala fleet devices register --name "robot-arm-01" --type manipulator --firmware "2.4.1"

# List recordings for a device
avala fleet recordings list --device dev_abc123 --since 7d

# Create a timeline event
avala fleet events create --recording rec_abc123 --type anomaly --label "Gripper force spike"

# List recording rules
avala fleet rules list

# List active alerts
avala fleet alerts list --status open
devices list options:
OptionDescription
--status CHOICEFilter by status: online, offline, maintenance.
--type TEXTFilter by device type.
--limit INTEGERMaximum number of results to return.
recordings list options:
OptionDescription
--device TEXTFilter by device UID.
--since TEXTRecordings from the last N days (e.g., 7d, 30d).
--status CHOICEFilter by status: uploading, processing, ready, error, archived.
--limit INTEGERMaximum number of results to return.
alerts list options:
OptionDescription
--status CHOICEFilter by status: open, acknowledged, resolved.
--severity CHOICEFilter by severity: info, warning, error, critical.
--limit INTEGERMaximum number of results to return.

configure

Interactive setup wizard for CLI credentials. See the Configure section above for the full walkthrough.
avala configure

Examples

List datasets and export a project

# See what datasets you have
avala datasets list

# Export annotations from a project
avala exports create --project proj_abc123

# Check export status
avala exports get exp_xyz789

Set up cloud storage

# Connect an S3 bucket
avala storage-configs create \
  --name "Training Data" \
  --provider aws_s3 \
  --s3-bucket-name ml-training-data \
  --s3-bucket-region us-east-1 \
  --s3-access-key-id $AWS_ACCESS_KEY_ID \
  --s3-secret-access-key $AWS_SECRET_ACCESS_KEY

# Verify the connection works
avala storage-configs test sc_abc123

Use with CI/CD

# In your CI pipeline
export AVALA_API_KEY="${AVALA_API_KEY}"

# Trigger an export and wait for it to complete
avala exports create --project proj_abc123
avala exports wait exp_xyz789 --timeout 600

# Use JSON output for scripting
DATASET_COUNT=$(avala -o json datasets list | jq 'length')
echo "Found $DATASET_COUNT datasets"

Environment Variables

VariableDescriptionDefault
AVALA_API_KEYYour Avala API key.Required
AVALA_BASE_URLAPI base URL override.https://api.avala.ai/api/v1

Output Format

The CLI uses Rich for formatted output:
  • List commands display results in formatted tables.
  • Get commands display a key-value detail view.
  • Create/delete commands print confirmation messages.
Colors and formatting are automatically disabled when output is piped or redirected. Pass --output json (or -o json) to any command for machine-readable JSON output. See the JSON Output section for examples.