Hosted by us, nothing to install or upgrade

Private Python packages for your conda environments

Host private Python packages for conda environments. A CloudRepo PyPI index serves them to pip inside the environment, so you can start immediately.

Simple, published pricing. No per-seat fees like Anaconda.org's paid plans, no surprises.

Works with conda + pip today
Setup in under 5 minutes
Enterprise security included
Terminal
# Install from CloudRepo in conda environment
conda activate myproject

# pip reads the login for the host from ~/.netrc
pip install my-ml-model --index-url \
  https://your-org.mycloudrepo.io/repositories/your-repo/simple/

Included on every plan

Plans differ only in storage and transfer allowance.

Coming soon: Access log

Start Using CloudRepo with Conda Today

CloudRepo's PyPI repositories serve your private packages to pip inside a conda environment.

✓

What You Get

  • • Full PyPI repository support for Python packages
  • • Works seamlessly with pip in conda environments
  • • Compatible with environment.yml files
  • • Private, secure package hosting

Why use it? A conda environment installs a Python package with pip when no conda package exists. CloudRepo is a private, secure place to host those packages.

Enterprise Features for Data Science Teams

Host private Python packages with repository tokens, team access controls and encryption at rest.

Immediate PyPI Support
Start today with CloudRepo's PyPI repositories - fully compatible with conda environments using pip.
Conda Packages Stay on Their Channels
CloudRepo hosts your private Python packages. Conda packages install from conda-forge or your own channel, as before.
Private & Secure
Private repositories with API tokens, team management, and encryption at rest.
Version Control
Track package versions, manage dependencies, and maintain reproducible environments.
Fast Downloads
US-based infrastructure ensures fast package installation for your team.

Quick Setup: Conda + CloudRepo

Get your team using private packages in conda environments in under 5 minutes.

1

Create Your CloudRepo Repository

Sign up for CloudRepo and create a private Python repository (for example ml-packages or data-science-tools) for your Python packages.

2

Configure Conda Environment with pip

Set up your conda environment to use CloudRepo for pip packages.

Terminal
# Create and activate your conda environment, with pip in it
conda create --name myproject python=3.12 pip
conda activate myproject

# Credentials go in ~/.netrc, not in the index URL. The login is the email
# of the user who created the repository token, in lower case.
# 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
3

Install Packages from CloudRepo

Install your private packages alongside conda packages: public packages as usual, private packages from CloudRepo alone in a pip step of their own.

Terminal
# Install conda packages as usual
conda install numpy pandas scikit-learn

# Install private packages from CloudRepo via pip. pip reads the login
# from ~/.netrc
pip install -r requirements-private.txt
requirements-private.txt
--index-url https://your-org.mycloudrepo.io/repositories/your-repo/simple/
your-private-ml-model
company-data-utils==2.1.0
environment.yml
# Keep the pip: section for public packages. Do not put the CloudRepo URL
# or a token in this file: conda installs every line of the pip: section
# with one pip run.
name: data-science-project
channels:
  - conda-forge
dependencies:
  - python=3.12
  - numpy
  - pip
  - pip:
      - requests
Terminal
conda env create --file environment.yml
conda activate data-science-project
pip install -r requirements-private.txt
4

Upload Your Python Packages

Build and upload Python packages for use in conda environments.

Terminal
# Install build tools
pip install build twine

# Build your Python package
python -m build

# Upload to CloudRepo. 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/*

Built for Data Science Teams

CloudRepo delivers secure package management for data science teams.

🧠

Data Science & Machine Learning

Share trained models, custom preprocessing libraries, and proprietary algorithms across your research team. Version control ensures reproducible experiments.

🔬

Scientific Computing

Distribute computational packages, simulation tools, and analysis scripts. Perfect for data science and R&D teams.

🧬

Bioinformatics

Host genomics pipelines, biological analysis tools, and custom bioinformatics packages privately within your organization.

📊

Quantitative Finance

Host trading algorithms, risk models, and financial analysis tools privately within your organization.

Every plan includes human support and SSO. See pricing

Works with Your Entire Data Science Stack

CloudRepo integrates seamlessly with the tools your team already uses.

Jup
Jupyter
VS
VS Code
GH
GitHub Actions
GL
GitLab CI

Example: GitHub Actions CI/CD with Conda + CloudRepo

.github/workflows/test.yml
name: Test and Deploy
on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    defaults:
      run:
        shell: bash -el {0}
    steps:
      - uses: actions/checkout@v6
      - uses: conda-incubator/setup-miniconda@v3
        with:
          python-version: 3.11

      - name: Configure CloudRepo
        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: |
          conda install numpy pandas scikit-learn
          pip install --index-url https://your-org.mycloudrepo.io/repositories/your-repo/simple/ \
            our-ml-model our-data-utils

      - name: Run tests
        run: pytest

Frequently Asked Questions

Can I use CloudRepo with conda today?

Yes! CloudRepo's PyPI repositories work perfectly with pip inside conda environments. This covers most use cases since conda users commonly use pip for packages not available in conda channels.

Does CloudRepo host conda packages or a conda channel?

No. CloudRepo hosts Python packages in a PyPI index and does not serve a conda channel. Conda packages install from conda-forge or your own channel, and your private Python packages install with pip inside the environment.

How does CloudRepo compare to Anaconda.org for private packages?

CloudRepo offers simple, published pricing and included support on all plans. Anaconda.org hosts conda packages and CloudRepo does not; CloudRepo hosts the private Python packages your team installs with pip.

Can I migrate from Anaconda.org to CloudRepo?

Your Python packages, yes: upload them to CloudRepo and update your pip configuration. Conda packages stay on Anaconda.org or your own channel. Support can help plan the move.

What happens if I exceed my transfer allowance?

If you exceed your monthly transfer allowance, we reach out first. Nothing is throttled, no build ever stops, and there are no automatic charges. Occasional spikes are simply fine. Sustained overage is billed at $120 per additional TB, always rounded down in your favor (2.9 TB over = 2 TB billed = $240). Storage growth is a prorated one-click plan upgrade, not per-GB fees.

Start Hosting Private Packages for Conda Today

14 days free. No credit card required. Full PyPI support for conda environments available immediately.

5 minutes
Setup time
$0
Per-seat fees