---
title: Devices
sidebar:
  order: 16
---
## Overview

A **device** in Roboto represents a robot, upload station, or other non-human entity which can be associated with datasets and files in the system.

Devices can be linked to data in several ways:

- A device can upload data directly using the [Roboto CLI](/docs/getting-started/programmatic-access#cli-section), and the resulting datasets are automatically associated with it.
- An upload station or user can upload data on behalf of a device, specifying a `--device-id` at upload or dataset creation time, or via the SDK with `Dataset.create(..., device_id=X, create_device_if_missing=True)`.
- Existing datasets or files can be associated with a device after the fact, using the CLI (`roboto datasets update --device-id <device-id>`) or SDK (`dataset.set_device_id(...)`).

This means a device does not need to run any Roboto software itself — it only needs to be registered in your organization.

## Registration

To register a device, you must have the [Roboto CLI](/docs/getting-started/programmatic-access#cli-section) installed, and must have configured it with a personal [access token](/docs/getting-started/programmatic-access#access-token-section).

Once installed and configured, you can run the following:

```bash
roboto devices register <device-id>
```

For `device-id`, use a meaningful unique identifier for the device, such as its serial number.

This command will provision a [device access token](/docs/getting-started/programmatic-access#device-token-section) for the specified device, and save the generated credentials to a file named `config.json` in the current directory. The output location of this file can be controlled with the `--config-file` optional parameter.

If you were in an org with ID *og\_123456789012* and called `roboto devices register mk2_sn0014`, the `config.json` would look like this:

```json
{
  "version":"v1",
  "profiles": {
    "og_12345689012_mk2_sn0014": {
      "api_key":"roboto_pat_XXXXXXXXXXXXXXXXXXXXXXXX",
      "endpoint":"https://api.roboto.ai"
    }
  },
  "default_profile":"og_12345689012_mk2_sn0014"
}
```

After running this command, you should copy the `config.json` file to the device's operating system. By default, Roboto tools will look for this file in `$HOME/.roboto/config.json`, but you can put it anywhere in the filesystem, and set the `ROBOTO_CONFIG_FILE` environment variable to point to its location.

Once registered, a device can use its credentials with the [CLI](/docs/getting-started/programmatic-access#cli-section) or [SDK](/docs/getting-started/programmatic-access#cli-section) to interact with Roboto directly. Alternatively, data can be uploaded on its behalf and associated with the device by specifying its ID.
