Pixi Private Packages with CloudRepo PyPI Index
Host private Python packages in a PyPI index that Pixi installs from, next to the conda packages it takes from conda-forge.
# Add a private package, pinned to your CloudRepo index
# (pixi reads the login from ~/.netrc)
pixi add --pypi internal-sdk \
--index https://your-org.mycloudrepo.io/repositories/your-repo/simple/
# Mix conda and private PyPI
pixi add numpy # conda-forge
pixi add --pypi my-lib \
--index https://your-org.mycloudrepo.io/repositories/your-repo/simple/ # CloudRepo Included on every plan
Plans differ only in storage and transfer allowance.
- SSO (SAML, OIDC)
- Multi-factor authentication (MFA)
- Audit log
- Repository tokens
- Unlimited users, no per-seat pricing
- Human support
- Maven, npm, Python, Docker with Helm charts, and plain files
- Proxy repositories
- SCIM
Coming soon: Access log
Why CloudRepo for Pixi Package Management?
Compare CloudRepo's prices with Anaconda and JFrog Artifactory
| Feature | CloudRepo (Recommended) | Anaconda | JFrog Artifactory |
|---|---|---|---|
| Starting Price | $99/month billed annually | $15 per user a month (Starter; billing basis not stated) | $150/month list, billed monthly |
Competitor figures were read on 2026-10-06 from: Anaconda pricing (archived), JFrog pricing (archived), JFrog Pro checkout (archived). Vendors change prices and plans, so check each page before you decide.
CloudRepo includes single sign-on and human support from the people who build CloudRepo on every plan.
| Feature | JFrog Pro | CloudRepo, every plan |
|---|---|---|
| Single sign-on (SSO) | Not in Pro: JFrog lists SAML and OAuth sign-on for Enterprise X Enterprise X is for organizations who need multi-site capabilities, uptime and support guarantees, and enterprise access controls (ie. OAuth, SAML, CName). JFrog’s pricing page, archived | Included |
| Support | Community support: public documentation, a knowledge base and Stack Overflow Community Support - Available for Free solutions and Pro subscriptions - JFrog maintains public documentation, knowledge base, and engages in conversations on Stack Overflow. JFrog’s pricing page, archived | Human support from the people who build CloudRepo |
Built for Modern Cross-Platform Python
CloudRepo perfectly complements Pixi's next-generation package management
- Cross-Platform Excellence
- Perfect for teams building Python applications that run seamlessly on Windows, macOS, and Linux with reproducible environments.
- PyPI Index Support
- CloudRepo provides a fully compatible PyPI index that Pixi uses for private Python packages alongside conda-forge.
- Private Packages in pixi.lock
- Pixi resolves the private Python packages your CloudRepo index serves and locks them in pixi.lock.
- Conda Packages Stay on Their Channels
- CloudRepo hosts your private Python packages. Conda packages install from conda-forge or your own channel, as before.
Quick Pixi Setup with CloudRepo
Configure Pixi to use CloudRepo for private Python packages in minutes
Configure Pixi with CloudRepo
Pin each private package to your CloudRepo index in pixi.toml. pixi looks up a package that names its index on that index, not on PyPI.
[project]
name = "my-project"
version = "0.1.0"
channels = ["conda-forge"]
platforms = ["linux-64", "osx-arm64", "win-64"]
[dependencies]
python = "3.12.*"
[pypi-dependencies]
# Public packages come from PyPI. Each private package names the
# CloudRepo index, including the private packages it depends on.
acme-internal-sdk = { version = "*", index = "https://your-org.mycloudrepo.io/repositories/your-repo/simple/" }
acme-utils = { version = "*", index = "https://your-org.mycloudrepo.io/repositories/your-repo/simple/" } # a private dependency of acme-internal-sdk Install Private Packages
Add private Python packages from CloudRepo alongside conda packages in your Pixi project.
# Credentials go in ~/.netrc, not in pixi.toml. The login is the email
# address of the account that created the token.
# The subshell's umask keeps the file private from the moment it is created;
# >> adds the entry without replacing an existing ~/.netrc.
(umask 077 && printf 'machine your-org.mycloudrepo.io\nlogin you@example.com\npassword %s\n' \
"$CLOUDREPO_TOKEN" >> ~/.netrc)
chmod 600 ~/.netrc
# Add a private PyPI package, pinned to CloudRepo, with its private
# dependencies in the same command: pixi installs at once, and a private
# dependency it meets unpinned comes from PyPI
pixi add --pypi acme-internal-sdk acme-utils --index https://your-org.mycloudrepo.io/repositories/your-repo/simple/
# Add with specific version
pixi add --pypi "acme-internal-sdk==2.3.0" --index https://your-org.mycloudrepo.io/repositories/your-repo/simple/
# Mix conda and PyPI packages
pixi add numpy pandas # from conda-forge
pixi add --pypi acme-ml-lib --index https://your-org.mycloudrepo.io/repositories/your-repo/simple/ # from CloudRepo
# Install all dependencies
pixi install
# Run in isolated environment
pixi run python app.py Publish Packages to CloudRepo
Build and publish your Python packages to CloudRepo for team-wide distribution.
# Build your package with standard tools
python -m build
# Upload to CloudRepo using twine. twine reads its credential from these
# variables, so the token is not an argument. The username is the email
# address of the account that created the token.
export TWINE_USERNAME="you@example.com"
export TWINE_PASSWORD="$CLOUDREPO_TOKEN"
twine upload --non-interactive \
--repository-url https://your-org.mycloudrepo.io/repositories/your-repo \
dist/* Perfect for Modern Python Teams
How teams pair Pixi + CloudRepo for better Python development
Cross-Platform Development
Build Python applications that work identically across Windows, macOS, and Linux without environment conflicts.
- Reproducible environments on all platforms
- No more "works on my machine" issues
- Simplified onboarding for new developers
- Consistent CI/CD across platforms
Scientific Computing Teams
Perfect for teams mixing conda scientific packages with proprietary Python libraries.
- Access conda-forge alongside private packages
- Share internal research libraries securely
- Version control for experimental code
Modern Python Tooling
Pixi manages the environment. CloudRepo hosts the private Python packages it installs.
- Built-in environment isolation
- Task runner integration
- Future-proof package management
Real-World Pixi Workflows
Production-ready examples for CI/CD and deployment
Multi-Platform CI/CD
Use CloudRepo with Pixi in GitHub Actions for cross-platform builds
name: Cross-Platform Tests
on: [push]
jobs:
test:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: prefix-dev/setup-pixi@v0.4.0
- name: Configure CloudRepo
shell: bash
env:
CLOUDREPO_TOKEN: ${{ secrets.CLOUDREPO_TOKEN }}
run: |
(umask 077 && printf 'machine your-org.mycloudrepo.io\nlogin you@example.com\npassword %s\n' \
"$CLOUDREPO_TOKEN" >> ~/.netrc)
- name: Install dependencies
run: pixi install
- name: Run tests
run: pixi run test Docker Deployment
Build minimal Docker images with Pixi and CloudRepo packages
# syntax=docker/dockerfile:1
FROM ghcr.io/prefix-dev/pixi:latest AS builder
WORKDIR /app
COPY pixi.toml pixi.lock ./
# Pixi reads CloudRepo credentials from a netrc file. Keep one that holds
# only the CloudRepo entry, outside the build context:
# machine your-org.mycloudrepo.io
# login you@example.com
# password YOUR_REPOSITORY_TOKEN
# Mount it as a build secret for this one step, never a build argument,
# so the token is not saved in the image:
# docker build --secret id=netrc,src=$HOME/cloudrepo.netrc -t my-app .
RUN --mount=type=secret,id=netrc,target=/root/.netrc \
pixi install --frozen
# Copy application
COPY . .
# Production stage
FROM python:3.11-slim
COPY --from=builder /app /app
ENV PATH="/app/.pixi/envs/default/bin:$PATH"
CMD ["python", "/app/main.py"] Every plan includes human support and SSO. See pricing
Frequently Asked Questions
Everything about using CloudRepo with Pixi
- How does CloudRepo work with Pixi?
- CloudRepo provides a PyPI-compatible index that Pixi can use for private Python packages, alongside conda packages from conda-forge. Name the CloudRepo index on each private package under pypi-dependencies in your pixi.toml, and Pixi looks that package up there and every other package on PyPI. Do not set pypi-options index-url to a hosted repository: it replaces PyPI for the whole environment, so a public package such as six is not found.
- Can I use CloudRepo for conda packages with Pixi?
- No. CloudRepo hosts Python packages in a PyPI index and does not serve a conda channel. Pixi installs conda packages from conda-forge or your own channel, and your private Python packages from CloudRepo.
- How is CloudRepo different from Anaconda for Pixi users?
- CloudRepo offers unlimited users, with plans from $99/month billed annually. Anaconda's Starter plan is $15 per user a month and its Business plan $50 per user a month (its pricing page states no billing basis).
- Does Pixi lock packages from the CloudRepo index?
- Pixi resolves the packages that your CloudRepo index serves and locks them in pixi.lock, as it does for any index. The lock file itself belongs to Pixi.
- Can I migrate from self-hosted PyPI to CloudRepo?
- Absolutely! Migration is simple - upload your existing packages to CloudRepo and update your pixi.toml configuration. Our support team provides free migration assistance to ensure a smooth transition.
- What's the setup time for CloudRepo with Pixi?
- Less than 2 minutes! Create your CloudRepo account, get your repository URL, add it to your pixi.toml, and you're ready to install private packages. No complex infrastructure or maintenance required.
Complete Python Package Management with CloudRepo
Pixi is part of CloudRepo's comprehensive Python ecosystem support.
UV - Python Package Manager
A Python package manager from Astral, written in Rust. Host your private packages on CloudRepo and pin each one to your index in pyproject.toml.
Explore UV integrationPoetry
A widely used Python packaging tool. CloudRepo provides native Poetry support with lock files and dependency resolution.
Learn about PoetryConda & Miniconda
Use CloudRepo's PyPI repositories with pip inside conda environments.
Learn about CondaTraditional pip & setuptools
Full PyPI API compatibility. Works with pip, easy_install, and setuptools out of the box.
View documentationCloudRepo also supports JVM languages - mix Python and Java/Scala/Clojure artifacts in one account.
Start Using CloudRepo with Pixi Today
Join teams building cross-platform Python applications with Pixi and CloudRepo. 14 days free. No credit card required.
Why Pixi Users Choose CloudRepo
Pixi installs conda and PyPI packages together and locks them in pixi.lock for Windows, macOS and Linux. CloudRepo hosts the private Python packages it installs.
The Perfect Match for Cross-Platform Development
If your team develops Python applications that need to run identically across different operating systems, the combination of Pixi and CloudRepo eliminates the traditional pain points. Pixi ensures your environments are reproducible, while CloudRepo ensures your private packages are always available.
Modern Python Tooling at Its Best
Pixi brings task runners, lock files and multi-platform support. CloudRepo adds a private PyPI index with instant setup and published pricing.
Scientific Computing and Data Science
For teams working in scientific computing, machine learning, or data science, the ability to mix conda packages from conda-forge with private Python packages from CloudRepo is a real advantage. Share proprietary algorithms, internal ML models, and research code securely while drawing on the vast ecosystem of scientific Python packages.
Enterprise-Ready Without Enterprise Complexity
CloudRepo with Pixi takes minutes to set up, and SSO and team-based access controls are included.
Each Package From Its Own Source
Pixi installs conda packages from conda channels and Python packages from a PyPI index. CloudRepo is the PyPI index for your private Python packages; conda packages install from conda-forge or your own channel.
Migration Made Simple
Whether you're coming from pip, conda, Poetry, or other package managers, migrating to Pixi with CloudRepo is straightforward. Our PyPI-compatible API means your existing Python packages work immediately, and our support team provides free migration assistance to ensure a smooth transition.