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

# Private PyPI Registry Mirror

> Mirror the CrewAI Enterprise Python package index to a private PyPI registry for air-gapped or network-restricted environments

# Private PyPI Registry Mirror

For air-gapped environments or organizations that restrict outbound network access, you can mirror the CrewAI Enterprise Python package index (`pypi.crewaifactory.com`) to a private PyPI-compatible registry. This ensures crew builds can install enterprise Python packages without direct internet access.

<Warning>
  The private PyPI mirror must stay synchronized with the CrewAI Enterprise index. New platform releases may introduce updated or additional packages. Plan for regular sync operations as part of your upgrade process.
</Warning>

## Prerequisites

* A PyPI-compatible registry server (e.g., JFrog Artifactory, Sonatype Nexus, devpi, or pypiserver)
* Access credentials for the CrewAI Enterprise Python registry (same credentials used for Docker/Helm registry authentication)
* Network access from your mirror server to `pypi.crewaifactory.com` (one-time or scheduled sync)

## Step 1: Obtain Your CrewAI Registry Credentials

Your CrewAI Enterprise PyPI credentials are derived from your Replicated license:

* **Username**: Your Replicated customer ID (found at `https://enterprise.crewai.com/crewai/license`)
* **Password**: A service account token (create one at `https://enterprise.crewai.com/crewai/team-settings/service-accounts`)

Verify access to the upstream registry:

```bash theme={null}
export CREWAI_CUSTOMER_ID="your-customer-id"
export CREWAI_REGISTRY_TOKEN="your-registry-token"

pip install --dry-run \
  --index-url "https://${CREWAI_CUSTOMER_ID}:${CREWAI_REGISTRY_TOKEN}@pypi.crewaifactory.com/simple/" \
  crewai
```

## Step 2: Mirror Packages to Your Private Registry

Configure your PyPI registry to mirror or proxy packages from the CrewAI Enterprise index:

* **Upstream URL**: `https://pypi.crewaifactory.com/simple/`
* **Authentication**: Your CrewAI customer ID and registry token (from Step 1)

Most enterprise registries (Artifactory, Nexus, etc.) support configuring an authenticated remote/proxy PyPI repository. Refer to your registry's documentation for setup instructions.

For fully air-gapped environments, you can use `pip download` to fetch packages on a machine with internet access, transfer them to your isolated network, and host them with any PEP 503-compatible server.

<Note>
  Include all CrewAI packages your crews depend on. The exact list may vary based on your crew configurations.
</Note>

## Step 3: Configure the Helm Chart

Point the CrewAI Platform at your private mirror by setting `secrets.UV_DEFAULT_INDEX` to your mirror's URL:

```yaml theme={null}
secrets:
  UV_DEFAULT_INDEX: "https://username:password@pypi.your-company.com/repository/crewai-enterprise/simple/"
```

The URL must:

* Use HTTPS protocol
* Include authentication credentials if your mirror requires them
* End with `/simple/` for PEP 503 compatibility

<Note>
  Setting `secrets.UV_DEFAULT_INDEX` manually overrides the auto-generated value from Replicated license credentials. This is the expected behavior when using a private mirror.
</Note>

## Step 4: Verify the Configuration

After deploying with the updated values, verify that the secret was created and crew builds can resolve packages:

```bash theme={null}
# Check the secret was created correctly
kubectl get secret crewai-platform-secrets -o jsonpath='{.data.UV_DEFAULT_INDEX}' | base64 -d

# Run the Helm test suite (includes UV_DEFAULT_INDEX format validation)
helm test crewai-platform
```

Then trigger a test crew build to confirm packages install successfully from your private mirror.

## Keeping the Mirror in Sync

CrewAI platform updates may require new or updated Python packages. Include mirror synchronization in your upgrade process:

1. **Before upgrading** the Helm chart, sync your mirror with the upstream CrewAI Enterprise index
2. **After upgrading**, verify crew builds succeed with the new package versions

For proxy-based registries, synchronization happens automatically when packages are requested. For manual mirrors, you must re-run the download and transfer process before each upgrade.

## Troubleshooting

### Crew builds fail with package resolution errors

* Verify the `UV_DEFAULT_INDEX` URL is reachable from within the cluster
* Check that your mirror contains the required packages and versions
* Ensure the URL ends with `/simple/`

### Authentication failures

* Confirm credentials in the `UV_DEFAULT_INDEX` URL are correct
* For registries behind a reverse proxy, ensure the proxy passes authentication headers

### Stale packages after platform upgrade

* Re-sync your mirror with the upstream CrewAI Enterprise index
* For proxy registries, clear the cache if the registry is serving outdated versions

## Related Documentation

* [Using a Private Docker Registry](/configuration/private-registry) — for mirroring container images
* [Secrets Configuration Reference](/reference/chart-values/secrets) — `UV_DEFAULT_INDEX` details
* [ArgoCD Deployment Guide](/configuration/argocd) — additional secret management considerations
