Basic Configuration
Add an S3 bucket as a channel in yourpixi.toml:
pixi.toml
Repository Structure
Your S3 bucket must follow the standard conda repository structure:Authentication Methods
Pixi supports two mutually exclusive authentication methods:- AWS Credentials - Standard AWS configuration files and environment variables
- Pixi Configuration - Custom S3-compatible storage with Pixi’s auth system
Using AWS Configuration
Use standard AWS credentials without any special Pixi configuration.Environment Variables
Set AWS credentials in your environment:AWS Configuration File
Use AWS profiles for more complex setups:aws.config
1
Configure AWS
2
Login via SSO
3
Use Pixi
GitHub Actions with OIDC
Use temporary credentials via OpenID Connect:ci.yml
Using Pixi’s Configuration
For S3-compatible storage providers or custom setups.Workspace Configuration
Configure S3 options per bucket inpixi.toml:
pixi.toml
You must configure
s3-options for each bucket you use: [workspace.s3-options.<bucket-name>]Authentication
Store credentials using Pixi’s auth system:Global Configuration
Alternatively, configure S3 options globally:config.toml
GitHub Actions with Pixi Auth
ci.yml
Public S3 Buckets
Public buckets can be accessed via standard HTTPS URLs without authentication:pixi.toml
AWS Bucket Policy
Configure your bucket for public access:S3-Compatible Storage Providers
Pixi works with various S3-compatible storage services.MinIO
pixi.toml
Cloudflare R2
pixi.toml
Cloudflare R2 supports public buckets via
r2.dev subdomains or custom domains. See Cloudflare R2 docs.Wasabi
pixi.toml
Backblaze B2
pixi.toml
Google Cloud Storage
pixi.toml
Pixi also supports
gcs:// URLs for Google Cloud Storage.Hetzner Object Storage
pixi.toml
Uploading Packages to S3
Using Pixi
Upload packages directly with Pixi:pixi upload s3 --help for all available options.
Using rattler-build
If you’re building packages with rattler-build:Re-indexing After Upload
S3 buckets require manual reindexing after uploading new packages, unlike managed package servers.1
Install rattler-index
pixi exec:2
Re-index the channel
repodata.json files to include newly uploaded packages.
Configuration Options
S3 Options Reference
Path Style URLs
- Path-style:
https://s3.amazonaws.com/bucket/key - Virtual-hosted-style:
https://bucket.s3.amazonaws.com/key
force-path-style = true for providers that require path-style URLs (MinIO, Backblaze B2).
Best Practices
Use IAM Roles
In AWS environments, use IAM roles instead of long-lived access keys for better security.
Separate Channels
Organize packages into separate channels (e.g., dev, staging, prod) within the same bucket.
Automate Indexing
Integrate reindexing into your CI/CD pipeline after package uploads.
Enable Versioning
Enable S3 bucket versioning to protect against accidental deletions.
Monitor Costs
Monitor S3 costs, especially for public buckets with high traffic.
Troubleshooting
Access Denied Errors
Ensure your credentials have the required permissions:s3:GetObject- Download packagess3:ListBucket- List package contentss3:PutObject- Upload packages (if needed)
Invalid Endpoint
Verify the endpoint URL matches your provider’s documentation and includes the protocol (https://).
Repository Structure Issues
Confirm your bucket follows the conda channel structure withrepodata.json in each platform subdirectory.