# Introduction

> Welcome to Qualia

## What is Qualia?

Qualia is a cloud platform for robot data. Upload robot recordings, curate their
episodes, and save immutable, reproducible dataset versions that you can
download.

Qualia takes three kinds of input:

- **MCAP ROS 2** recordings, from a teleoperated arm or similar rig
- **UMI** handheld recordings, which convert as they upload when you pass `--rig`
- **LeRobot** datasets, v2.1 or v3

## Getting Started

1. **Install the CLI.** The `qualia` CLI wraps the Python SDK and installs it
   for you. The commands below have the exact version for this deployment;
   see [Installation](https://junction-docs.qualiastudios.dev/cli/overview.md#installation).

   ```bash
   pip install 'qualia-cli==0.3.0rc14'

   # or with uv
   uv tool install 'qualia-cli==0.3.0rc14' --with 'qualia-sdk==0.8.0rc14'
   ```

   This deployment runs ahead of the public release, so it needs the matching pre-release wheel — `0.3.0rc14`. Pin it rather than upgrading: the upload protocol is negotiated exactly, so the client and the endpoint it talks to have to be the same generation. A plain `pip install qualia-cli` resolves to the current public release and will be turned away by this deployment.

2. **Create an API key.** In the [Qualia dashboard](https://junction.qualiastudios.dev/),
   open **Settings** → **Account** → **API keys** → **New key**. Leave it on the
   whole organization: a key for one workspace is refused on tasks, which the
   data workflow below needs ([Keys](https://junction-docs.qualiastudios.dev/global/guides/agents.md#keys)). Copy it when it appears; it is shown once. Viewers need a workspace owner to grant write
   access before uploading data.

3. **Log in.** Use the API origin for your deployment:

   ```bash
   qualia auth login --base-url https://junction-api.qualiastudios.dev --api-key <YOUR_KEY>
   ```

   Replace `<YOUR_KEY>` with your API key. For an interactive prompt that hides
   the key, omit `--api-key`. Scripts and CI can set `QUALIA_API_KEY`
   and `QUALIA_BASE_URL` instead; set both together. The key names its own
   account. See [Authentication](https://junction-docs.qualiastudios.dev/cli/overview.md#authentication) for the API
   origin and where the key is saved.

4. **Upload.** Upload a local directory:

   ```bash
   qualia dataset upload <dir> <name> --source-format mcap_ros2
   ```

   Replace `<dir>` with your recording directory and `<name>` with a dataset
   name. For LeRobot v3, use `--source-format lerobot_v3`. See
   [Upload](https://junction-docs.qualiastudios.dev/global/guides/data-collection.md) for other formats.

## The Data Workflow

1. **[Upload](https://junction-docs.qualiastudios.dev/global/guides/data-collection.md)** an MCAP ROS 2 or UMI recording,
   or a LeRobot dataset, with `qualia dataset upload`.
2. **[Add a robot and a task](https://junction-docs.qualiastudios.dev/global/guides/robots-and-tasks.md)**: add the robot
   from its URDF, set it as the dataset's target robot, and link the dataset to
   a task.
3. **[Curate](https://junction-docs.qualiastudios.dev/global/guides/curation.md)** the episodes: keep or reject them, trim
   them, mark subtasks and issues, and save versions.
4. **[Download](https://junction-docs.qualiastudios.dev/global/guides/download.md)** a saved version as a LeRobot
   directory.

## Resources

- [CLI Commands](https://junction-docs.qualiastudios.dev/cli/commands.md) - every `qualia` command and its options
- [SDK Documentation](https://junction-docs.qualiastudios.dev/sdk/overview.md) - Python SDK for programmatic access
- [API Reference](https://junction-docs.qualiastudios.dev/api/reference.md) - REST API documentation
- [qualia.v1 API Reference](https://junction-docs.qualiastudios.dev/api/qualia-v1.md) - datasets, episodes, issues, versions, robots, rigs and tasks, under `/v1/accounts/{account}`
- [Discord Community](https://discord.gg/9K4dpAAvyV) - Get help and share your projects
