# Distribution

---

## Overview

Distribute your artifacts to customers with a shareable download URL and track every download.

You shipped a release you're confident in -- now get it to your customers. With Fly, pick the artifact version you want to share, distribute it, and your customers can download it immediately.

Currently available for generic artifacts. Docker, npm, and other package types coming soon.

---

## Generic Packages Distribution

### Distribute

#### From Fly Web

1. Find the artifact or release you want to distribute -- from the **Artifacts** page or from a **Release** page
2. Open the actions menu and select **Manage Distribution**
3. Toggle distribution on to make the artifact version public

Once toggled, the artifact version is publicly available and Fly generates a download URL you can share with your customers.

#### From CI

Add the distribute step to your workflow after uploading:

```yaml
- uses: jfrog/fly-action@v1                  # Setup Fly

- uses: jfrog/fly-action/distribute@v1       # Distribute publicly
  with:
    name: my-app
    version: '1.0.0'
    type: generic
```

| Input | Required | Description |
|-------|----------|-------------|
| `name` | Yes | Package name to distribute |
| `version` | Yes | Version to distribute |
| `type` | No | Package type (defaults to `generic`) |

To distribute multiple artifacts, add a separate step for each one.

### Download

Once distributed, your customers download the artifact directly -- no authentication needed.

**Download URL:**

```
https://<your-fly-subdomain>.jfrog.io/public/generic/<name>/<version>/<file>
```

| Parameter | Description | Example |
|-----------|-------------|---------|
| `<your-fly-subdomain>` | Your Fly organization subdomain | `acme` |
| `public` | The public registry path (fixed) | `public` |
| `generic` | The package type (fixed) | `generic` |
| `<name>` | The generic package name | `my-app`, `ml-models` |
| `<version>` | The distributed version | `2.1.0`, `nightly-2025-03-18` |
| `<file>` | The filename to download | `my-app.dmg`, `checksums.txt` |

**Example:**

```bash
curl -O https://acme.jfrog.io/public/generic/my-app/2.1.0/my-app.dmg
```

#### Latest Version

To always point to the most recently distributed version, use `[LATEST]` in place of the version:

```
https://<your-fly-subdomain>.jfrog.io/public/generic/<name>/[LATEST]/<file>
```

`[LATEST]` resolves to the most recently distributed version **by time**, not by version number. If you distribute versions `1.0.0`, `2.0.0`, and then `1.9.9` in that order, `[LATEST]` serves `1.9.9`. `[latest]`, `[Latest]`, and `[LATEST]` all work the same way.

### Track Distribution

Once an artifact version is distributed, Fly surfaces its distribution status and download activity directly in the UI.

**Public badge** -- Distributed versions display a **Public** badge on the artifact version, and on the release the version belongs to. Hover the badge to see who distributed the version and when.

**Per-file activity** -- Expand a distributed version on the **Artifacts** page to see every file inside it. For each file, Fly shows:

- **Download count** -- how many times the file was downloaded publicly. Updates in real time.
- **Copy link** -- copy the file's public download URL to share with customers.
- **Download** -- download the file directly from Fly Web.

### Remove Distribution

#### From Fly Web

1. Find the distributed artifact or release -- from the **Artifacts** page or a **Release** page
2. Open the actions menu and select **Manage Distribution**
3. Toggle distribution off

The download URL stops working immediately. Your customers can no longer access the file.

The original artifact in your private registry is not affected. You can re-distribute the same version later.

> [!NOTE]
> If you delete the original artifact, Fly removes the public copy and all distribution data automatically.

---

## Next Steps

- [Generic →](../../package-managers/generic/) - Full reference for generic artifact uploads, downloads, and CI examples
- [Artifacts →](../artifacts/) - Browse and manage all your artifacts
- [Releases →](../releases/) - Releases that produce artifacts
- [Automate Releases →](../../developer-workflow/ci-cd/) - Connect your CI to Fly
