Private PyPI, plus Docker, npm, Debian, Conda and Maven

The Private PyPI That Follows Every Python Packaging Standard

pip, uv, Poetry and twine work exactly as they do with PyPI, down to metadata files, yanked releases and project status. Docker, npm, Debian, Conda and Maven registries are on the same account.

uv add mypackage --index https://api.repoforge.io/my-repoforge-id/

14-day free trial. No card required.

Used by teams at

  • Sainsbury's
  • Dover
  • Keenious
  • Aiwizo
  • Odyssey
  • Inocean
  • Sevan SSP
  • G2M Insights
Standards

Every Python Packaging Standard, Implemented

pip, uv, Poetry and twine talk to RepoForge.io the same way they talk to PyPI, because the index follows the same PyPA specifications. Metadata files mean uv resolves your dependency tree without downloading every wheel.

Full list of supported standards
PEP 503PEP 691

Simple Repository API

The HTML and JSON indexes every Python installer reads.

PEP 658PEP 714

Core Metadata Files

Resolvers read a release's dependencies without downloading the wheel.

Requires-Python

Python Version Checks

Installers skip releases that don't support the interpreter they're running on.

PEP 592

Yanked Releases

Pull a bad release from resolution without breaking installs that pin it.

PEP 792

Project Status

Mark a package archived, deprecated or quarantined, and installers can tell your users.

PEP 427PEP 625

Checked Uploads

Filenames follow the wheel and sdist rules, digests are verified, and a file can't be overwritten.

Security

Your Package Names Stay Yours

Dependency confusion works by publishing a public package with the same name as a private one. RepoForge.io closes that gap, and tells you when your dependencies have known vulnerabilities.

Dependency-Confusion Protection

With upstream mirroring on, one RepoForge.io URL serves your private packages and PyPI. Any name that exists in your account, or ever did, is never fetched from PyPI, so a deleted private package can't quietly resolve to someone else's.

Standard plan and up

Vulnerability Scanning on Publish

Every Python package you publish is checked for known CVEs in its pinned dependencies, with severity and fixed versions in the dashboard. On Advanced, packages keep being monitored and you're alerted when a new CVE affects one.

All paid plans; active monitoring on Advanced

What You Get

01

Access Control

Tokens scoped to a package or a registry, read-only or read-write. Rotate or revoke any token from the dashboard.

02

Ship Libraries to Your Customers

Selling a Python library? Give each customer a read-only token for the packages they've paid for, and revoke it when they stop paying.

03

Works in Any CI

Publish with our GitHub Action, or from GitLab CI or any pipeline with a token. Install with the same index URL locally and in CI.

04

Upstream Mirroring and Edge Caching

One index for private and public packages, served from a global CDN. In our tests a cold install dropped from 18s to 4s. Standard plan and up.

05

SSO and Two-Factor

SAML/OIDC single sign-on on Standard and up. Authenticator-app two-factor on every paid plan.

06

Custom Domains

Serve from pkg.yourcompany.com on Advanced. HTTPS, no RepoForge branding in your config.

Registry support

Python First, Five More Formats Alongside

Python Packages

Your private PyPI server, compatible with uv, pip, Poetry and twine. Mirror upstream PyPI for consistent, fast installs across every environment.

uvpippoetrytwinesetuptools

Upstream mirroring and vulnerability scanning are available for Python registries

uv
# pyproject.toml
[[tool.uv.index]]
name = "repoforge"
url = "https://api.repoforge.io/my-repoforge-id/"
authenticate = "always"

# Publish with uv
export UV_PUBLISH_USERNAME=__token__
export UV_PUBLISH_PASSWORD=$REPOFORGE_TOKEN
uv publish \
  --publish-url https://api.repoforge.io/my-repoforge-id/

# Or install with pip
pip install mypackage \
  --index-url https://api.repoforge.io/my-repoforge-id/

Pricing

Per user, per month. Only people who sign in to the dashboard need a seat: CI pipelines and anyone who only installs packages use access tokens, and you can create as many as you like. Storage is per plan; bandwidth isn't metered.

Monthly Yearly Save 20%
Free
For open source projects
£0/ user / mo
  • 100 MB storage
  • Free forever
  • Unlimited public packages
  • Not for commercial use
Sign up now
Basic
Billed monthly
£12/ user / mo
  • All free features
  • 1 GB storage per user
  • Unlimited private packages
  • Unlimited access tokens
  • REST API access
  • Python vulnerability scanning
Start free trial
Advanced
Billed monthly
£69/ user / mo
  • All standard features
  • 30 GB storage per user
  • Active vulnerability monitoring
  • Custom domain names
Start free trial

Need self-hosted or a bigger plan? Email us.

How It Compares

Prices checked October 2026.

Feature RepoForge JFrog Artifactory Cloudsmith Packagecloud Gemfury GitHub Packages GitLab AWS CodeArtifact
Private repositories ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
Python ✓ ✓ ✓ ✓ ✓ ✗ ✓ ✓
Docker ✓ ✓ ✓ ✓ ✗ ✓ ✓ ✗
npm ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
Debian ✓ ✓ ✓ ✓ ✓ ✗ Experimental ✗
Conda ✓ ✓ ✓ ✗ ✗ ✗ ✗ ✗
Maven ✓ ✓ ✓ ✓ ✓ Login to read ✓ ✓
CI/CD integration ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
Security scanning ✓ ✓ ✓ ✓ ✗ ✗ ✗ ✗
Pricing (starting at) £10/user/month, billed yearly $150/month Free tier; Pro $149/month $89/month $9/month (1 user), $14/month (5 users) 500 MB free, then usage-based Free Per GB + per request

From Customers

"

RepoForge.io is great and a vital part of our inner source ecosystem now.

PV
Per Erland Voie
Sevan SSP
"

I'm very impressed by your response times and always able to solve our RepoForge.io problems even if they are actually on our side!

MK
Marius Karlsson
Inocean.no
"

Very satisfied when we found RepoForge.io. Solved our day to day challenges with ease dealing with private Python packages.

PL
Peter Lapalus
Odyssey.se

RepoForge SFTP

Managed SFTP with SSH key and password logins, per-user folders, an activity log and encrypted storage on S3. £20 a month.

Find out more

Try It

Free tier for open source, 14-day trial on paid plans. No card needed.