# JFrog Artifactory

Configure Valohai to pull private images from JFrog Artifactory.

> Private registries are restricted to organization projects. Personal projects don't have access to private repositories.

## Generate an access token

1. Log in to your JFrog Cloud Platform
2. Navigate to **User Management** → **Access Tokens**
3. Click **Generate Token**
4. Configure the token:
   * **Description**: Valohai Docker Registry Credentials
   * **Token Scope**: User
   * **Service**: Artifactory
   * **Expiration Time**: Set according to your security policy
5. Save the token

> When the token expires, you'll need to generate a new one and update it in Valohai.

## Add credentials to Valohai

1. Navigate to `Hi, <n>` (top-right menu) → `Manage <organization>`
2. Go to **Registries** under organization controls
3. Click **Add a new entry**
4. Configure:
   * **Match pattern**: `<domain>/<repository>/*`
     * Example: `mycompany.jfrog.io/docker-images/*`
     * Matches all images in the specified repository
   * **Registry type**: Docker (username and password authentication)
   * **Username**: Your JFrog username
   * **Password**: The access token you generated
5. Save

## Use the private image

Reference your JFrog image in `valohai.yaml`:

```yaml
- step:
    name: train
    image: mycompany.jfrog.io/docker-images/ml-training:v1.0
    command:
      - python train.py
```

Valohai handles authentication automatically.
