pixi upload#
About#
Upload conda packages to various channels
The pixi upload command supports uploading conda packages to various server types:
| Server Type | Description |
|---|---|
prefix |
Upload to prefix.dev or self-hosted instances |
anaconda |
Upload to Anaconda.org |
quetz |
Upload to a Quetz server |
artifactory |
Upload to JFrog Artifactory |
s3 |
Upload to S3-compatible object storage |
Usage#
Subcommands#
| Command | Description |
|---|---|
quetz |
Upload to a Quetz server. Authentication is used from the keychain / auth-file |
artifactory |
Options for uploading to a Artifactory channel. Authentication is used from the keychain / auth-file |
prefix |
Options for uploading to a prefix.dev server. Authentication is used from the keychain / auth-file |
anaconda |
Options for uploading to a Anaconda.org server |
s3 |
Options for uploading to S3 |
Arguments#
-
<PACKAGE_FILES>- The package file to upload
May be provided more than once.
Options#
-
--allow-insecure-host <ALLOW_INSECURE_HOST>- List of hosts for which SSL certificate verification should be skipped
May be provided more than once.
Description#
Upload conda packages to various channels
Supported server types: prefix, anaconda, quetz, artifactory, s3, conda-forge
Use pixi auth login to authenticate with the server.
Examples#
Uploading to prefix.dev#
# Upload a package to a channel on prefix.dev
pixi upload prefix --channel my-channel my_package-1.0.0-h123abc_0.conda
# Upload with an explicit API key
pixi upload prefix --channel my-channel --api-key $PREFIX_API_KEY my_package.conda
# Skip upload if package already exists
pixi upload prefix --channel my-channel --skip-existing my_package.conda
Uploading to Anaconda.org#
# Upload to your personal channel
pixi upload anaconda --owner my-username my_package.conda
# Upload to a specific label/channel
pixi upload anaconda --owner my-username --channel dev my_package.conda
# Force replace existing package
pixi upload anaconda --owner my-username --force my_package.conda
Uploading to S3#
# Upload to an S3 bucket (using AWS credentials from environment)
pixi upload s3 --channel s3://my-bucket/my-channel my_package.conda
# Upload with explicit credentials
pixi upload s3 \
--channel s3://my-bucket/my-channel \
--region us-east-1 \
--access-key-id $AWS_ACCESS_KEY_ID \
--secret-access-key $AWS_SECRET_ACCESS_KEY \
my_package.conda
# Upload to S3-compatible storage (MinIO, Cloudflare R2, etc.)
pixi upload s3 \
--channel s3://my-bucket/my-channel \
--endpoint-url https://minio.example.com \
--region us-east-1 \
--addressing-style path \
my_package.conda
# Force replace existing package
pixi upload s3 --channel s3://my-bucket/my-channel --force my_package.conda
Uploading to Quetz#
# Upload to a Quetz server
pixi upload quetz \
--url https://my-quetz-server.com \
--channel my-channel \
my_package.conda
# Upload with explicit API key
pixi upload quetz \
--url https://my-quetz-server.com \
--channel my-channel \
--api-key $QUETZ_API_KEY \
my_package.conda
Uploading to Artifactory#
# Upload to Artifactory
pixi upload artifactory \
--url https://my-artifactory.com \
--channel conda-local \
my_package.conda
# Upload with explicit token
pixi upload artifactory \
--url https://my-artifactory.com \
--channel conda-local \
--token $ARTIFACTORY_TOKEN \
my_package.conda
Uploading Multiple Packages#
All server types support uploading multiple packages at once:
Authentication#
For most server types, authentication can be provided in multiple ways:
-
Keychain / auth-file: Use
pixi auth loginto store credentials -
Environment variables: Each server type supports specific environment variables
PREFIX_API_KEYfor prefix.devANACONDA_API_KEYfor Anaconda.orgQUETZ_API_KEYfor QuetzARTIFACTORY_TOKENfor ArtifactoryS3_ACCESS_KEY_ID,S3_SECRET_ACCESS_KEYfor S3
-
Command-line arguments: Pass credentials directly via
--api-key,--token, etc.
S3 Re-indexing#
When uploading packages to S3, the repodata.json file needs to be updated manually since S3 is just storage, not a package server.
Use rattler-index to re-index your S3 bucket after uploading:
pixi exec rattler-index s3 s3://my-bucket/my-channel \
--endpoint-url https://my-s3-host \
--region us-east-1
See the S3 deployment documentation for more details.