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.
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.
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_keyBase URL [https://api.avala.ai/api/v1]:Validating API key... OK Organization: Acme RoboticsAdd 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.
# List all datasetsavala datasets list# Limit resultsavala datasets list --limit 10# Get a specific dataset by UIDavala datasets get <uid># Ingest / health snapshot (post-upload validation)avala datasets health <owner> <slug># Inspect a sequenceavala datasets get-sequence <owner> <slug> <sequence_uid># Inspect a single frame's LiDAR JSON metadataavala datasets get-frame <owner> <slug> <sequence_uid> <frame_idx># Inspect the canonicalized rig calibrationavala datasets get-calibration <owner> <slug> <sequence_uid>
list options:
Option
Description
--limit INTEGER
Maximum number of results to return.
get output fields: UID, Name, Slug, Items, Type, Created, Updated.health output fields: dataset UID/status, item/sequence/frame counts, S3 prefix, ingest_ok flag, detected issues, per-sequence frame counts and calibration presence.get-frame output fields: frame index, camera model (pinhole / doublesphere), xi, alpha, device position/heading, number of cameras.get-calibration output fields: per-camera table — camera id, model, intrinsics (fx, fy, cx, cy), double-sphere parameters (xi, alpha) when applicable.
Bring data into Mission Control from outside Avala. import uploads local media and registers a dataset in one step, auto-detecting the data type from file extensions. It is the fast path for “I have a folder of frames / video / LiDAR / MCAP — turn it into an Avala dataset.”
# List the available import sourcesavala import list# Import a local folder (data type auto-detected from extensions)avala import folder \ --source ./my_drive \ --name "My Drive" \ --slug my-drive# Force the data type when extensions are ambiguousavala import folder --source ./scans --name Scans --slug scans --data-type lidar# Import and wait for server-side indexing to finishavala import folder --source ./run01 --name "Run 01" --slug run-01 --wait
The folder source accepts a single file or a directory tree (uploaded recursively, preserving relative paths). Files are uploaded in parallel via presigned URLs, and the dataset is created from the manual-upload batch. Data type is inferred from extensions that the Avala indexer admits — images (.jpg, .png, .webp, .bmp, .tif, …), video (.mp4, .webm, .mkv, .mov), LiDAR (.alp, .alp.gz), MCAP (.mcap), and splats (.ply, .splat, .spz, …). Pass --data-type to override when extensions are ambiguous; the importer refuses up front if none of the files are indexable for the chosen type (so you never finalize an empty dataset).folder options:
Option
Description
--source PATH
Local file or directory to import (required).
--name TEXT
Dataset name (required).
--slug TEXT
Dataset slug (required).
--data-type CHOICE
Override the auto-detected type: image, video, lidar, mcap, splat.
--owner TEXT
Dataset owner username or email (defaults to the API key’s user).
--workers INTEGER
Parallel upload threads (default: 8).
--wait / --no-wait
Wait for server-side indexing to finish (default: --no-wait).
Per-file and per-user upload caps apply (2 GiB per file, 10 GiB per user). For very large or already-cloud-hosted data, connect a bucket with storage-configs for zero-copy ingest instead of re-uploading.
The same importers are available from the Python SDK via avala.importers:
Import a LeRobot robotics dataset — from the Hugging Face Hub or a local directory — as an Avala MCAP dataset. Each episode becomes one .mcap file (one Avala MCAP episode): camera streams are written as foxglove.CompressedImage so they render in the Mission Control viewer, and proprioception (observation.state, action) is written as protobuf Struct messages so the values are preserved in the file.Requires the lerobot extra:
pip install 'avala[lerobot]'
# Import a dataset from the Hugging Face Hubavala import lerobot \ --repo-id lerobot/svla_so101_pickplace \ --name "SO-101 Pick & Place" \ --slug so101-pickplace# Import a local LeRobot dataset, limiting to a few episodesavala import lerobot --root ./my_lerobot_ds --name "My Robot" --slug my-robot --episodes 0,1,2# Wait for server-side indexing to finishavala import lerobot --repo-id lerobot/aloha_static_coffee --name Coffee --slug coffee --wait
lerobot options:
Option
Description
--repo-id TEXT
Hugging Face Hub dataset id (e.g. lerobot/svla_so101_pickplace).
--root PATH
Local LeRobot dataset directory (instead of, or alongside, --repo-id).
--name TEXT
Dataset name (required).
--slug TEXT
Dataset slug (required).
--episodes TEXT
Comma-separated episode indices to import (default: all).
--camera-keys TEXT
Comma-separated camera feature keys (default: all cameras).
--fps FLOAT
Override the dataset frame rate.
--owner TEXT
Dataset owner username or email.
--workers INTEGER
Parallel upload threads (default: 8).
--wait / --no-wait
Wait for server-side indexing to finish (default: --no-wait).
Mission Control’s embedded MCAP viewer renders images, point clouds and logs. Scalar time-series (joint state / actions) are preserved in the .mcap and viewable as raw messages, but are not charted yet.
# List all exportsavala exports list# Get export detailsavala exports get <uid># Create a new exportavala exports create --project <uid>avala exports create --dataset <uid># Wait for an export to finishavala exports wait <uid>
create options:
Option
Description
--dataset TEXT
Dataset UID to export.
--project TEXT
Project UID to export.
wait options:
Option
Description
--interval FLOAT
Seconds between polls (default: 2.0).
--timeout FLOAT
Maximum 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 pipelineavala exports create --project proj_abc123 \ | grep -oP 'exp_\w+' \ | xargs avala exports wait
# List agentsavala agents list# Get agent detailsavala agents get <uid># Create an agentavala 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 agentavala agents executions <uid># Test an agentavala agents test <uid>
# List webhooksavala webhooks list# Get webhook detailsavala webhooks get <uid># Create a webhookavala 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 webhookavala webhooks test <uid># List webhook deliveriesavala webhooks deliveries
# List quality targets for a projectavala quality-targets list --project <uid># Get a specific quality targetavala quality-targets get --project <uid> <target_uid># Create a quality targetavala 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 projectavala quality-targets evaluate --project <uid>
# List inference providersavala inference-providers list# Get provider detailsavala inference-providers get <uid># Create a provideravala 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 connectionavala inference-providers test <uid>
Fleet commands are in preview. Commands described here may change.
Manage fleet devices, recordings, events, rules, and alerts.
# List online devicesavala fleet devices list --status online# Register a new deviceavala fleet devices register --name "robot-arm-01" --type manipulator --firmware "2.4.1"# List recordings for a deviceavala fleet recordings list --device dev_abc123 --since 7d# Create a timeline eventavala fleet events create --recording rec_abc123 --type anomaly --label "Gripper force spike"# List recording rulesavala fleet rules list# List active alertsavala fleet alerts list --status open
devices list options:
Option
Description
--status CHOICE
Filter by status: online, offline, maintenance.
--type TEXT
Filter by device type.
--limit INTEGER
Maximum number of results to return.
recordings list options:
Option
Description
--device TEXT
Filter by device UID.
--since TEXT
Recordings from the last N days (e.g., 7d, 30d).
--status CHOICE
Filter by status: uploading, processing, ready, error, archived.
--limit INTEGER
Maximum number of results to return.
alerts list options:
Option
Description
--status CHOICE
Filter by status: open, acknowledged, resolved.
--severity CHOICE
Filter by severity: info, warning, error, critical.
# See what datasets you haveavala datasets list# Export annotations from a projectavala exports create --project proj_abc123# Check export statusavala exports get exp_xyz789
# In your CI pipelineexport AVALA_API_KEY="${AVALA_API_KEY}"# Trigger an export and wait for it to completeavala exports create --project proj_abc123avala exports wait exp_xyz789 --timeout 600# Use JSON output for scriptingDATASET_COUNT=$(avala -o json datasets list | jq 'length')echo "Found $DATASET_COUNT datasets"
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.