> ## Documentation Index
> Fetch the complete documentation index at: https://anaconda.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Getting started with the platform CLI

Anaconda Platform uses the `outerbounds` CLI to interact with your organization from a terminal. It enables you to download models from the [model catalog](https://anaconda.com/docs/platform/concepts/what-is-the-model-catalog.md), run flows on your organization's compute, deploy and manage long-running services, and manage platform resources.

## Installing the CLI

The `outerbounds` CLI is available as a conda package from the `main` channel and as a Python package from PyPI:

> [tab] conda
>
> ```sh theme={null}
> conda install --name <ENVIRONMENT> outerbounds
> ```
>
> Comments
>
> Replace \<ENVIRONMENT> with the name of the environment where you want to install the CLI.

> [tab] uv
>
> ```sh theme={null}
> uv pip install outerbounds
> ```

> [tab] pip
>
> ```sh theme={null}
> python -m pip install -U outerbounds
> ```

The model catalog commands (`outerbounds mc`) require `outerbounds` 0.12.45 or later. To upgrade an existing installation, run `conda update outerbounds` or `pip install --upgrade outerbounds`.

> [!WARNING]
>
> The open-source `metaflow` package conflicts with the Metaflow distribution bundled with the `outerbounds` CLI. If `metaflow` is already installed in your environment, uninstall it by running `python -m pip uninstall metaflow`, then reinstall `outerbounds`.

## Authenticating to your Anaconda Platform organization

Your organization generates a personal configuration string for you, displayed in the Anaconda Platform UI as a ready-to-run `configure` command.

> [!TIP]
>
> On a [workstation](https://anaconda.com/docs/platform/concepts/what-is-a-workstation.md), the CLI is already installed and configured for you. If you're working in a workstation, skip ahead to [Downloading models from the catalog](#downloading-models-from-the-catalog).

To authenticate the CLI:

1. Log in to your Anaconda Platform organization.

2. Open your user settings by clicking on your profile in the lower-left corner, then select **Local Setup**.

3. Under **Configure Outerbounds**, copy the command shown and run it in your terminal. The command includes your personal configuration string.

   ![The Local Setup page showing the Configure Outerbounds section with a ready-to-copy configure command](https://mintcdn.com/anaconda-29683c67/VD0yQ0tXYWIdTsBU/images/platform/plat_local_setup.png?fit=max\&auto=format\&n=VD0yQ0tXYWIdTsBU\&q=85\&s=bf28f2f48912aaf2df4c4c252fa2ceba)

4. To verify your installation and configuration, run:

   ```sh theme={null}
   outerbounds check
   ```

   If the check reports a problem, run `outerbounds check --verbose` for details.

The `configure` command decodes the string and writes a configuration file to `~/.metaflowconfig`. You only need to configure the CLI once per machine for each organization you belong to. Most users only belong to one organization.

The configuration string is specific to you and to the perimeter selected in the UI. If the **Local Setup** page does not show a configuration command, you might not have the required access to the perimeter. Contact your administrator.

### Configure options

Option

Default

Description

`-d, --config-dir <PATH>`

`~/.metaflowconfig`

Path to the Metaflow configuration directory

`-p, --profile <PROFILE>`

Save the configuration as a named profile instead of the default. Use the `METAFLOW_PROFILE` environment variable to switch between profiles. See [Working with multiple organizations](#working-with-multiple-organizations).

`-e, --echo`

`false`

Print the configuration values to stdout

`-f, --force`

`false`

Overwrite an existing configuration without prompting

### Working with multiple organizations

To work with more than one organization, write each organization's configuration to a named profile, then set the `METAFLOW_PROFILE` environment variable to select the profile the CLI uses:

```sh theme={null}
outerbounds configure --profile <PROFILE_NAME> <TOKEN>
export METAFLOW_PROFILE=<PROFILE_NAME>
```

Comments

Replace \<PROFILE\_NAME> with a name for the profile, such as your organization's name.\\

Replace \<TOKEN> with the organization's configuration string, shown on its **Local Setup** page.

## Authenticating the CLI in CI/CD pipelines

Machine users are identities for automated pipelines and jobs, such as deploying a project from a CI/CD workflow. Unlike human users, machine users authenticate with a token issued by their identity provider rather than a configuration string from the UI.

To configure the CLI for a machine user, run:

```sh theme={null}
outerbounds service-principal-configure --name <MACHINE_USER> --deployment-domain <DEPLOYMENT_DOMAIN> --perimeter <PERIMETER> --jwt-token <JWT_TOKEN>
```

Comments

Replace \<MACHINE\_USER> with the name of the machine user to authenticate.\\

Replace \<DEPLOYMENT\_DOMAIN> with the full domain of your organization.\\

Replace \<PERIMETER> with the name of the perimeter where the machine user operates. If you omit the perimeter, the CLI uses the perimeter named default.\\

Replace \<JWT\_TOKEN> with the OIDC token issued by the machine user's identity provider.

> [!TIP]
>
> If your project contains an `obproject.toml` file, you can pass `--from-obproject-toml` instead of `--name`, `--deployment-domain`, and `--perimeter`. The CLI reads those values from the file. For more on project setup, see [Working with projects](https://anaconda.com/docs/platform/guides/projects/working-with-projects).

The token flag depends on the machine user's identity provider:

Provider

How to authenticate

GitHub Actions

Pass `--github-actions` instead of `--jwt-token`. The CLI reads the OIDC token from the workflow environment automatically.

GitLab CI

Pass `--jwt-token "$OUTERBOUNDS_ID_TOKEN"`, issued by GitLab's `id_tokens` keyword

CircleCI

Pass `--jwt-token "$CIRCLE_OIDC_TOKEN_V2"`

Other OIDC providers

Pass `--jwt-token` with the OIDC token your provider issues

The **Use** page for a machine user in the Anaconda Platform UI provides configuration commands and example CI/CD workflows, pre-filled for that machine user. To find it, select  **Users** under **Governance**, open the **Machines** tab, and then select the machine user. For machine users backed by an AWS IAM role, the **Use** page provides an `outerbounds configure` command instead, which retrieves the configuration from AWS Secrets Manager and requires IAM credentials in the environment.

For the full CI/CD setup, see [Working with projects](https://anaconda.com/docs/platform/guides/projects/working-with-projects).

## Downloading models from the catalog

The `outerbounds mc pull` command downloads a model from the [model catalog](https://anaconda.com/docs/platform/concepts/what-is-the-model-catalog.md) to your local machine or a workstation. For usage, options, and examples, see [`outerbounds mc pull`](https://anaconda.com/docs/platform/cli/mc/pull).

## Deploying and managing apps

The `outerbounds app` commands deploy services on the platform and manage their lifecycle:

```sh theme={null}
outerbounds app deploy --config-file <CONFIG_FILE>
```

Comments

Replace \<CONFIG\_FILE> with the path to your deployment configuration file, in YAML or JSON format.

The CLI creates deployments in your active perimeter. To change it, run `outerbounds perimeter switch`. For the full reference, including updating, inspecting, logs, and deletion, see the [app commands](https://anaconda.com/docs/platform/cli/app/deploy.md).

## Command overview

The CLI includes command groups for working with platform resources. For the full reference, see the [command overview](https://anaconda.com/docs/platform/cli/commands).

The `outerbounds` package also bundles Metaflow, the framework you use to develop and run flows:

```sh theme={null}
python myflow.py run
```

For more information on building and running flows, see [Connecting to the platform and running your first flow](https://anaconda.com/docs/platform/getting-started/connect-and-first-run.md).
