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

Installation

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):
Or pass it as a flag on any command:
To set up credentials interactively:
This walks you through entering your API key and base URL, then prints the export statements to add to your shell profile.

Global Options

Version

Print the installed CLI version:

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.
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.
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.
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.
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:

Commands

datasets

list options: 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.

import

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.”
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:
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:

LeRobot / Hugging Face Hub

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:
lerobot options:
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.

ROS bags

Import a ROS bag (ROS1 .bag or ROS2 .db3) as an Avala MCAP dataset. Camera topics (sensor_msgs/Image and sensor_msgs/CompressedImage) are re-encoded as foxglove.CompressedImage so they render in the Mission Control viewer. Reading uses the pure-Python rosbags library — no ROS install required. Requires the rosbag extra:
rosbag options:
This increment carries camera topics only. Non-image topics (point clouds, TF, joint states, …) are reported but not yet carried over — faithfully copying ROS-encoded messages through (preserving their schemas) is a planned follow-up.

Cloud buckets (S3 / GCS) — zero-copy

Import data you already have in an S3 or GCS bucket without re-uploading it. Avala points the dataset at your bucket + prefix and indexes the objects in place — nothing is copied. Ideal for terabyte-scale data that already lives in the cloud.
The server lists the bucket under the prefix and registers every object whose extension matches --data-type (image / video / lidar / mcap / splat) — the same indexer filter as uploads. Use --include-extensions / --ignore-paths to narrow the scope. cloud options:
For keyless S3 access, the customer grants Avala’s account + external ID via an IAM trust policy — run avala storage-configs ... setup or call client.storage_configs.setup_info() to get the account ID and external ID for the trust policy. GCS uses a service-account JSON key.

projects

list options: get output fields: UID, Name, Status, Created, Updated.

tasks

list options: get output fields: UID, Name, Type, Status, Project, Created, Updated.

exports

create options: wait options: 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:

storage-configs

Manage cloud storage connections (AWS S3, Google Cloud Storage).
create options: AWS S3 options: Google Cloud Storage options:

agents

Manage automation agents.
create options: list options: executions options:

webhooks

Manage webhook subscriptions.
create options: list / deliveries options:

quality-targets

Manage quality targets for projects.
create options: list options:

consensus

Manage consensus scoring for projects.
summary / scores / compute options: scores options: config options (pass any to update, omit all to view):

inference-providers

Manage inference providers.
create options: list options:

auto-label

Manage auto-label jobs.
create options: list options:

fleet

Fleet commands are in preview. Commands described here may change.
Manage fleet devices, recordings, events, rules, and alerts.
devices list options: recordings list options: alerts list options:

configure

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

Examples

List datasets and export a project

Set up cloud storage

Use with CI/CD

Environment Variables

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.