Private Packages,
Published From Your GitHub Actions Workflow
Python, Docker, npm, Debian, Conda and Maven. pip, uv, Poetry and twine work unchanged.
pip install mypackage --index-url https://api.repoforge.io/my-repoforge-id/14 day free trial - no credit card required
Full GitHub Actions guide →Python Packages for GitHub Teams
Publish from a GitHub Actions workflow, install with the same index URL locally and in CI.
Full GitHub Actions guidename: Publish to RepoForge.io on: push: tags: ['v*'] jobs: publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: RepoForge-io/repoforge-publish-action@v1.1.1 with: package_type: python api_token: ${{ secrets.REPOFORGE_TOKEN }} hash_id: ${{ secrets.REPOFORGE_HASH_ID }} package_dir: ./dist # Then, anywhere: pip install mypackage \ --index-url https://api.repoforge.io/my-repoforge-id/
What You Get
Edge-Cached Installs
Dependencies are served from cache, so pip install isn't waiting on PyPI. In our tests a cold install dropped from 18s to 4s.
Python Vulnerability Scanning
Automated CVE scanning for every Python package on publish. The Advanced plan adds active monitoring, so you get alerted when new CVEs emerge for packages already sitting in your registry.
Upstream Mirroring
Mirror PyPI and npm through your RepoForge URL, so one index serves private and public packages. Standard plan and up.
Access Control
Tokens scoped to a package or a registry, read-only or read-write. SAML/OIDC SSO on Standard and up.
CI/CD Native
GitHub Actions. Publish and install from a pipeline with a token.
Custom Domains
Serve from pkg.yourcompany.com on Advanced. HTTPS, no RepoForge branding in your config.
Supported Formats
Python Packages
Your private PyPI server, compatible with pip, poetry, uv, and twine. Mirror upstream PyPI for consistent, fast installs across every environment.
Upstream mirroring and vulnerability scanning are available for Python registries
# Install from your private registry pip install mypackage \ --index-url https://api.repoforge.io/my-repoforge-id/ # Publish a package with twine twine upload \ --repository-url https://api.repoforge.io/my-repoforge-id/ \ dist/mypackage-1.0.0.tar.gz # Set globally in ~/.pip/pip.conf index-url = https://api.repoforge.io/my-repoforge-id/
Docker Images
Host private Docker images in a fully OCI-compliant registry. Authenticate with credentials or an access token, push and pull with the standard Docker CLI.
# Log in (Docker hash is always lowercase) docker login docker.repoforge.io/my-repoforge-id/my-registry # Build and tag your image docker build -t my-app . docker tag my-app \ docker.repoforge.io/my-repoforge-id/my-registry:latest # Push to RepoForge docker push docker.repoforge.io/my-repoforge-id/my-registry:latest
npm Packages
A private npm registry for your Node.js packages. Scope packages to your organisation, authenticate with an access token, and publish with the standard npm CLI.
# Point your scope at RepoForge npm config set @myorg:registry \ https://api.repoforge.io/npm/my-repoforge-id/ # Authenticate with an access token npm config set \ //api.repoforge.io/npm/my-repoforge-id/:_authToken $REPOFORGE_TOKEN npm publish npm install @myorg/package-name
Debian Packages
Host private .deb packages in a fully APT-compatible repository. Configure any Debian or Ubuntu system to install from your private registry using standard apt tools.
# /etc/apt/sources.list.d/repoforge.list deb https://api.repoforge.io/debian/my-repoforge-id/ stable main apt-get update apt-get install my-private-package # Push a .deb via the REST API curl -X POST \ https://api.repoforge.io/debian/my-repoforge-id/ \ -F package=@mypackage_1.0_amd64.deb
Conda Packages
Host private Conda packages for your data science and ML teams. Create named channels within your registry and point conda or mamba at them directly.
# Add your private channel (define your channel name) conda config --add channels \ https://api.repoforge.io/conda/my-repoforge-id/my-channel conda install \ -c https://api.repoforge.io/conda/my-repoforge-id/my-channel \ my-private-package # Upload via the REST API curl -X POST \ https://api.repoforge.io/conda/my-repoforge-id/my-channel \ -F package=@mypkg-1.0-py311_0.conda
Maven Artifacts
Publish Java and Kotlin libraries with mvn deploy or Gradle, and resolve them in any Maven or Gradle build. Keep artifacts private, or make an SDK public so your customers need no credentials.
<!-- pom.xml --> <distributionManagement><repository> <id>repoforge</id> <url>https://api.repoforge.io/maven/my-repoforge-id/</url> </repository></distributionManagement> # Token in ~/.m2/settings.xml, then publish mvn deploy # Or with Gradle's maven-publish plugin ./gradlew publish
Pricing
Per user, per month, with unlimited access tokens on every paid plan. Storage is per plan; bandwidth isn't metered.
- 100 MB storage
- Free forever
- Unlimited public packages
- Not for commercial use
- All free features
- 1 GB storage per user
- Unlimited private packages
- Unlimited access tokens
- REST API access
- Python vulnerability scanning
- All basic features
- 5 GB storage per user
- Upstream mirroring
- Edge caching
- SSO authentication
- All standard features
- 30 GB storage per user
- Active vulnerability monitoring
- Custom domain names
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.
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!
Very satisfied when we found RepoForge.io. Solved our day to day challenges with ease dealing with private Python packages.
Try It
Free tier for open source, 14-day trial on paid plans. No card needed.