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

# Channels and packages

noindex: true

A channel is a repository location for storing software packages. Users with access to a given channel can download and install the software packages available within the channel.

If you’ve [built a conda package](./build), you can upload it to a channel to make it available for others to use.

Data Science & AI Workbench allows all users to create channels in the internal Workbench repository, and allows users with the `ae-uploader` role to upload packages to channels that they have read-write permissions for.

<Note>
  * For more information about user permissions, see [roles](../../admin/user-mgmt/groups#roles).
  * For more information about channel permissions, see [sharing channels](#sharing-channels).
  * For more information about how Workbench manages channels, see [configuring conda in Workbench](../../admin/chan-pkg/conda-config).
</Note>

## Viewing channels

To view channels you have access to:

1. Log in to Workbench.
2. Select <Icon icon="clone" iconType="light" /> **Channels** from the left-hand menu.

<Note>
  Channels that display a <Icon icon="lock" iconType="solid" /> lock beside their name are private. For more information about private channels, see [sharing channels](#sharing-channels).
</Note>

## Creating a channel

To create a channel in the internal Workbench repository:

1. Select <Icon icon="clone" iconType="light" /> **Channels** from the left-hand menu.
2. Click  <Icon icon="plus" iconType="light" /> **Create** in the upper-right corner.
3. Set the channel to public or private access.
4. Enter a name for the channel, then click **Create**.

## Viewing channel packages

From the <Icon icon="clone" iconType="light" /> **Channels** page, click on a channel name to view its packages. You can see the supported platforms, latest versions, when each package in the channel was last modified, and the number of times each package has been downloaded.

## Viewing package details

Each package in Workbench presents valuable information pertaining to the package, such as its platform architecture, version, license, number of downloads, and the last time the package was updated. You can also find [a command on this page to assist you with installing the package](#installing-a-package-from-a-channel) in your environment.

From the channel packages page, select any package to view the package details page.

<Tip>
  You can <Icon icon="magnifying-glass" iconType="light" /> **Search** for packages by name to locate them more efficiently.
</Tip>

## Uploading a package to a channel

To add a package to an existing channel:

1. Select  <Icon icon="clone" iconType="light" /> **Channels** from the left-hand menu.
2. Click  <Icon icon="upload" iconType="light" /> **Upload**.
3. Click **Browse** and locate the package in your file system.
4. Click **Upload**.

<Note>
  * There is a 1GB file size limit for package file uploads.
  * If the **Upload** option is not available, you don’t have permission to upload packages to the channel.
</Note>

You can [share the channel](#sharing-channels) with others to provide them with access to the packages it contains.

## Installing a package from a channel

To install a package from an internal Workbench channel:

1. From the <Icon icon="clone" iconType="light" /> **Channels** page, click on a channel name to view its packages.
2. Select any package to view the package details page.
3. Copy the installation command provided.
4. Run the copied command in the environment you want to install the package in.

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/kBuj3mPdZoBk8YoG/images/user_install_package_from_channel_2.png?fit=max&auto=format&n=kBuj3mPdZoBk8YoG&q=85&s=2b70de7320f5fb512ddec3d623d53e15" alt="" width="1922" height="978" data-path="images/user_install_package_from_channel_2.png" />
</Frame>

## Removing a package from a channel

To remove a package from an internal Workbench channel:

1. From the <Icon icon="clone" iconType="light" /> **Channels** page, click on a channel name to view its packages.
2. Open the package’s <Icon icon="ellipsis-vertical" iconType="light" /> actions dropdown menu, then select *Delete*.
3. Click **Delete**.

<Note>
  If the **Delete** option is not available, you don’t have permission to remove packages from the channel.
</Note>

## Sharing channels

There are two types of channels within the internal Workbench repository, public and private. Channels are set to public access by default.

### Sharing public channels

Public channels are accessible by non-authenticated users. In other words, people that do not have access to Workbench can still access packages in the internal Workbench repository channels.

To share a public channel:

1. From the <Icon icon="clone" iconType="light" /> **Channels** page, click on a channel name to view its details.
2. Select <Icon icon="share-nodes" iconType="light" /> **Share** from the left-hand navigation.
3. Copy the channel address and distribute it to individuals who need access to the channel.

### Sharing private channels

Private channels are accessible only to other Workbench users that you have added as collaborators to the channel.

To mark a channel as private:

1. From the <Icon icon="clone" iconType="light" /> **Channels** page, click on a channel name to view its details.
2. Select <Icon icon="share-nodes" iconType="light" /> **Share** from the left-hand navigation.
3. Set the **Sharing** toggle to **Private**.

To share a private channel with other workbench users:

1. From the <Icon icon="clone" iconType="light" /> **Channels** page, click on a channel name to view its details.
2. Select <Icon icon="share-nodes" iconType="light" /> **Share** from the left-hand navigation.
3. Begin typing a user or group name in the **Add New Collaborator** dropdown to search for matches. Select the correct entry, then click **Add**.

<Note>
  By default, collaborators are granted read-write access to your shared channel. If you want to prevent collaborators from adding or removing packages in your channel, you’ll need to [restrict them to read-only access using the CLI](#managing-channels-using-the-cli).
</Note>

## Managing channels using the CLI

[Log in to the CLI](../../admin/advanced/ae-cli#logging-in-to-the-cli) before you begin attempting to manage channels.

### Creating a channel

Create a new channel in the internal Workbench repository by running the following command:

```sh theme={null}
# Replace <CHANNEL_NAME> with the name of the channel you want to create
anaconda-enterprise-cli channels create <CHANNEL_NAME>
```

### Uploading a package to a channel

Upload a conda package to a channel by running the following command:

```sh theme={null}
anaconda-enterprise-cli upload --channel <path/to/package>
```

### Listing all channels

Get a list of all the channels on the platform with the `channels list` command:

```sh theme={null}
anaconda-enterprise-cli channels list
```

### Sharing channels

Share and manage permissions for channels with the `share` command:

<Tabs>
  <Tab title="Share with user">
    ```sh theme={null}
     # Replace <CHANNEL_NAME> with the name of the channel you want to share
     # Replace <USERNAME> with the username of the user you want to share the channel with
     anaconda-enterprise-cli channels share --user <USERNAME> <CHANNEL_NAME>
    ```
  </Tab>

  <Tab title="Share with group">
    ```sh theme={null}
     # Replace <CHANNEL_NAME> with the name of the channel you want to share
     # Replace <GROUP_NAME> with the name of group you want to share with
     anaconda-enterprise-cli channels share --group <GROUP_NAME> <CHANNEL_NAME>
    ```
  </Tab>
</Tabs>

<Note>
  By default, sharing a channel with a user or group provides them with read-write access to the channel. Restrict access to the channel to read-only by including `--level r` to before the `<CHANNEL_NAME>`.

  For example:

  ```sh theme={null}
  anaconda-enterprise-cli channels share --group <GROUP_NAME> --level r <CHANNEL_NAME>
  ```
</Note>

### Revoking channel access

Revoke a user’s or a group’s access to a channel by running one of the following commands:

<Tabs>
  <Tab title="Revoke user access">
    ```sh theme={null}
     # Replace <CHANNEL_NAME> with the name of the channel you want to revoke access to
     # Replace <USERNAME> with the username of the user whose access you want to revoke
     anaconda-enterprise-cli channels share --user <USERNAME> --remove <CHANNEL_NAME>
    ```
  </Tab>

  <Tab title="Revoke group access">
    ```sh theme={null}
     # Replace <CHANNEL_NAME> with the name of the channel you want to revoke access to
     # Replace <GROUP_NAME> with the name of the group whose access you want to revoke
     anaconda-enterprise-cli channels share --group <GROUP_NAME> --remove <CHANNEL_NAME>
    ```
  </Tab>
</Tabs>

### Setting a default channel

The `default_channel` value is not set when `anaconda-enterprise-cli` is installed. This means every time you run an `upload` command, you need to supply a specific channel name.

If you don’t want to include the `--channel` option with each command, you can set a default channel by running the following command:

```sh theme={null}
# Replace <CHANNEL_NAME> with the name of the channel you want to upload to by default
anaconda-enterprise-cli config set default_channel <CHANNEL_NAME>
```

View your current default channel by running the following command:

```sh theme={null}
# Replace <CHANNEL_NAME> with the name of the channel you want to upload to by default
anaconda-enterprise-cli config get default_channel '<CHANNEL_NAME>'
```

<Note>
  For more information about actions you can take with channels in the CLI, run the following command:

  ```sh theme={null}
  anaconda-enterprise-cli channels --help
  ```
</Note>
