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

# Registering your conda client

export const Comments = ({children}) => {
  return <div class="my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-zinc-500/20 bg-zinc-50/50 dark:border-zinc-500/30 dark:bg-zinc-500/10" data-callout-type="comments">
      <div class="w-4">
        <svg width="14" height="14" viewBox="0 0 640 640" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" aria-label="Comments">
            <path d="M320 112C434.9 112 528 205.1 528 320C528 434.9 434.9 528 320 528C205.1 528 112 434.9 112 320C112 205.1 205.1 112 320 112zM320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576zM280 400C266.7 400 256 410.7 256 424C256 437.3 266.7 448 280 448L360 448C373.3 448 384 437.3 384 424C384 410.7 373.3 400 360 400L352 400L352 312C352 298.7 341.3 288 328 288L280 288C266.7 288 256 298.7 256 312C256 325.3 266.7 336 280 336L304 336L304 400L280 400zM320 256C337.7 256 352 241.7 352 224C352 206.3 337.7 192 320 192C302.3 192 288 206.3 288 224C288 241.7 302.3 256 320 256z" />
        </svg>
      </div>
      <div class="text-sm prose min-w-0 w-full">
        {children}
      </div>
    </div>;
};

export const TroubleshootSolution = ({children}) => <>
    <hr className="my-3 w-full" />
    <details className="mt-3">
      <summary className="cursor-pointer font-semibold text-base mb-1">
        Solution
      </summary>
      <div className="mt-2 ml-4" data-component-part="step-content">
        {children}
      </div>
    </details>
  </>;

export const TroubleshootCause = ({children}) => <details className="mt-3 mb-2">
    <summary className="cursor-pointer font-semibold text-base mb-1">
      Cause
    </summary>
    <div className="mt-2 ml-4" data-component-part="step-content">
      {children}
    </div>
  </details>;

export const TroubleshootTitle = ({children}) => <>
    <p className="m-0 font-semibold text-xl leading-tight mb-2" role="heading" aria-level={3}>
      {children}
    </p>
    <hr className="my-3 w-full" />
  </>;

export const Troubleshoot = ({children}) => <div className="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border troubleshoot-admonition dark:troubleshoot-admonition" data-callout-type="troubleshoot">
    <div className="mt-0.5 w-4">
      <svg width="14" height="14" viewBox="0 0 640 640" fill="currentColor" className="w-4 h-4" aria-label="Troubleshoot">
        <path d="M541.4 162.6C549 155 561.7 156.9 565.5 166.9C572.3 184.6 576 203.9 576 224C576 312.4 504.4 384 416 384C398.5 384 381.6 381.2 365.8 376L178.9 562.9C150.8 591 105.2 591 77.1 562.9C49 534.8 49 489.2 77.1 461.1L264 274.2C258.8 258.4 256 241.6 256 224C256 135.6 327.6 64 416 64C436.1 64 455.4 67.7 473.1 74.5C483.1 78.3 484.9 91 477.4 98.6L388.7 187.3C385.7 190.3 384 194.4 384 198.6L384 240C384 248.8 391.2 256 400 256L441.4 256C445.6 256 449.7 254.3 452.7 251.3L541.4 162.6z" />
      </svg>
    </div>
    <div className="prose min-w-0 w-full">{children}</div>
  </div>;

Anaconda requires a one-time registration when connecting from certain networks or IP addresses. If your conda client directed you to this page, it's because you're connecting from a network that requires registration. Registration is quick and painless, and gives you access to powerful cloud features like browser-hosted notebooks, environment backups, project syncing, and effortless notebook sharing. Once registered, your conda client is automatically authenticated going forward.

<Note>
  If you are an administrator, you can streamline registration for your organization. For more information, see [Registering conda for your organization](/anaconda-platform/cloud/admin/conda-registration-admin).

  ***

  If you encounter any issues with the registration process, please contact [support@anaconda.com](mailto:support@anaconda.com) for help.
</Note>

Follow the steps below to link your desktop conda client to your Anaconda account. If you use conda in Docker or CI/CD workflows, additional steps are provided below after you've registered your client.

1. Open Anaconda Prompt (Terminal on macOS/Linux).

2. If necessary, activate your base environment:

   ```sh theme={null}
   conda activate base
   ```

3. Install `anaconda-registration`:

   ```sh wrap theme={null}
   conda install --name base anaconda-registration --channel https://repo.anaconda.cloud/repo/anaconda-tools --override-channels
   ```

   <Note>
     The `--channel` and `--override-channels` command options allow installation to succeed, despite the registration block.

     ***

     If you encounter an error at this point, see [Troubleshooting](#troubleshooting) below.
   </Note>

4. Log in to Anaconda:

   ```sh theme={null}
   anaconda login --at anaconda.com
   ```

   A browser window opens to authenticate you to Anaconda. Sign in with your Anaconda account credentials, or create an account, to complete authentication in the browser. If you are already signed in to Anaconda, authentication completes automatically.

   <Note>
     If your organization has configured SSO, you are redirected to your company's SSO login page.
   </Note>

   Your conda client is now registered to your Anaconda account.

## Next steps for automated workflows

If your conda client runs as part of an automated process, such as a CI/CD pipeline, or if you are using conda within Docker builds on your desktop, configure them to use your local API key (generated when you logged in using `anaconda-auth`) to authenticate conda using one of the following methods:

<Tabs>
  <Tab title="Using an environment variable">
    1. Open Anaconda Prompt or Powershell (Terminal on macOS/Linux).
    2. Set your API key as an environment variable:

           <CodeGroup>
             ```sh Anaconda Prompt theme={null}
             for /f "usebackq delims=" %i in (`anaconda auth api-key`) do set ANACONDA_AUTH_API_KEY=%i
             ```

             ```sh Anaconda Powershell theme={null}
             $env:ANACONDA_AUTH_API_KEY = (anaconda auth api-key)
             ```

             ```sh Terminal theme={null}
             export ANACONDA_AUTH_API_KEY="$(anaconda auth api-key)"
             ```
           </CodeGroup>
  </Tab>

  <Tab title="Using the keyring">
    1. Verify `preferred_token_storage` is set to `"anaconda-keyring"`. See `anaconda-auth` [configuration parameters](/cli-reference/anaconda-auth/getting-started#configuration).
    2. Open Anaconda Prompt (Terminal on macOS/Linux).
    3. Copy the `~/.anaconda/keyring` file to your automated workflow system:

       ```sh theme={null}
       scp ~/.anaconda/keyring user@<TARGET_SYSTEM>:~/.anaconda/keyring
       ```
  </Tab>

  <Tab title="Docker">
    If you use conda in Docker builds, you can securely provide your Anaconda API key during build time using Docker secrets. This allows authenticated commands to run without exposing your API key in an image layer.

    1. Open Anaconda Prompt or Powershell (Terminal on macOS/Linux).

    2. Set your API key as an environment variable:

           <CodeGroup>
             ```sh Anaconda Prompt theme={null}
             for /f "usebackq delims=" %i in (`anaconda auth api-key`) do set ANACONDA_AUTH_API_KEY=%i
             ```

             ```sh Anaconda Powershell theme={null}
             $env:ANACONDA_AUTH_API_KEY = (anaconda auth api-key)
             ```

             ```sh Terminal theme={null}
             export ANACONDA_AUTH_API_KEY="$(anaconda auth api-key)"
             ```
           </CodeGroup>

    3. Each Dockerfile *must* also contain the `anaconda-registration` package:

       ```dockerfile wrap theme={null}
       RUN conda install --name base anaconda-registration --channel https://repo.anaconda.cloud/repo/anaconda-tools --override-channels
       ```

    4. For all other `conda` or `anaconda` commands that require authentication, provide the following:

       ```sh theme={null}
       RUN --mount=type=secret,id=ANACONDA_AUTH_API_KEY 
       ```

       ```sh Example command requiring auth theme={null}
       RUN --mount=type=secret,id=ANACONDA_AUTH_API_KEY conda create -p /opt/env -y "python=3.13" "anaconda-client"
       ```

    5. When building your image, pass the key as a Docker secret:

       ```bash theme={null}
       docker build --secret id=ANACONDA_AUTH_API_KEY -t <IMAGE_NAME> .
       ```

           <Comments>
             Replace \<IMAGE\_NAME> with the name for your Docker image.
           </Comments>
  </Tab>
</Tabs>

## Troubleshooting

<Troubleshoot>
  <TroubleshootTitle>
    AnacondaAuthError: Token not found
  </TroubleshootTitle>

  <TroubleshootCause>
    This error occurs if you've previously installed a version of `anaconda-auth` that is not compatible with the registration process.
  </TroubleshootCause>

  <TroubleshootSolution>
    To resolve the error, run the command:

    ```sh theme={null}
    conda remove --name base anaconda-auth --force
    ```

    Then repeat the command to install `anaconda-registration`.
  </TroubleshootSolution>
</Troubleshoot>
