Skip to content

BatleHubYour package hub. Proxy, cache, and host.

Sit between your build tools and the internet. Cache artifacts, enforce access control, and publish private packages โ€” all from one self-hosted server.

BatleHub

Supported registries โ€‹

BatleHub proxies eighteen registry types. Every registry type can run as a pure cache (proxy mode), a fully private registry (local mode), or a hybrid of both โ€” except JetBrains, which is proxy-only.

RegistryProtocolDefault upstream
GitHubReleases, assets, tarballs, raw filesapi.github.com
Forgejo / GiteaReleases, assets, source archives, raw files (/api/v1)codeberg.org
GitLabReleases, release link assets, source archives (/api/v4)gitlab.com
npmFull packument + tarball proxyregistry.npmjs.org
CargoSparse index + .crate downloadcrates.io
OpenVSXVS Code extension VSIXopen-vsx.org
VS Code MarketplaceVS Code extension VSIX via Microsoft Gallery APImarketplace.visualstudio.com
GoGOPROXY protocol (.info, .mod, .zip)proxy.golang.org
MavenMaven Central-compatible metadata XML + JAR / POM downloadsrepo1.maven.org
TerraformProvider and module proxy protocol (v1 API)registry.terraform.io
RubyGemsGem downloads, version listing, REST info APIrubygems.org
ComposerPackagist v2 protocol (packages.json, p2 metadata, dist downloads)repo.packagist.org
PyPISimple Repository API (PEP 503/691) + JSON API; URL-rewriting for pip/uv/Poetrypypi.org
Condarepodata.json channel proxy; .conda and .tar.bz2 package downloadsconda.anaconda.org
NuGetNuGet v3 service index, flat container metadata, .nupkg downloads and publishapi.nuget.org
Deb (APT)Path-based APT repository: Packages/Release proxy + signed private hostingโ€” ยณ
RPM (YUM/DNF)Path-based repodata/ repository proxy + signed private hostingโ€” ยณ
JetBrainsPath-based proxy cache for IDE installer archivesdownload.jetbrains.com โต

The per-package feature matrix below covers the package-centric registries. Forgejo and GitLab behave like GitHub (proxy-only release assets). Deb, RPM, and JetBrains are path-addressed formats (last three columns, โถ): they have no per-package model, so the structural axes do not apply โ€” but they still get registry-level RBAC, multi-upstream fanout, and (Deb/RPM) signed private hosting.

FeatureGitHubnpmCargoOpenVSXVS CodeGoMavenTerraformRubyGemsComposerPyPICondaNuGetDeb โถRPM โถJetBrains โถ
Version listingโœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“ ยนโœ“โ€”โ€”โ€”
Source archiveโœ“โœ“โœ“โ€”โ€”โœ“โœ“โœ“โœ“โœ“โœ“โœ“โ€”โ€”โ€”โ€”
Binary / extensionโœ“โ€”โ€”โœ“โœ“โ€”โœ“โœ“โ€”โ€”โœ“โœ“โœ“โ€”โ€”โ€”
Private publishโ€”โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โ€”
Multi-upstream fanoutโœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“
Release age gateโœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โš  ยฒโœ“โ€”โ€”โ€”
RBACโœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“โœ“
Cache warming (version enumeration)โœ“โœ“โœ“โœ“โœ“โœ“โ€”โ€”โ€”โ€”โœ“โœ“ ยนโœ“โ€”โ€”โ€”
Explorer upstream search โดโ€”โœ“โœ“โœ“โ€”โœ“โœ“โœ“โœ“โœ“โœ“โ€”โœ“โ€”โ€”โ€”

ยน Conda has no dedicated per-package version listing API. BatleHub synthesises one by scanning repodata.json for noarch, linux-64, osx-64, osx-arm64, and win-64. Results are the union of versions found across all available platforms.

ยฒ Conda timestamps come from the timestamp field in repodata.json (ms since epoch). Most packages carry it; packages without one skip the gate by default. Set deny_missing_timestamp = true on the rule to block packages with no timestamp instead.

ยณ Deb / RPM have no universal default upstream โ€” set upstreams explicitly for proxy/hybrid mode. In local mode no upstream is contacted.

โด Package Explorer upstream ("Not Yet Proxied") search. Go uses pkg.go.dev; PyPI is exact-name lookup; Terraform combines module search with namespace/exact provider lookup. The release proxies (GitHub/Forgejo/GitLab), VS Code Marketplace, Conda, Deb/RPM, and JetBrains have no upstream search API โ€” see the Package Explorer guide.

โต JetBrains is proxy-only. The default upstream (download.jetbrains.com) serves IDE installer archives; override upstreams to cache another host (e.g. plugins.jetbrains.com). IDE archives are large (~1โ€“1.7 GB), so raise limits.max_artifact_size_bytes (default 500 MiB).

โถ Deb, RPM, and JetBrains are path-addressed: artifacts are fetched by file path with no per-package version model, so the version/source/binary/age-gate/warming/search axes do not apply (โ€”). They do support multi-upstream fanout and registry-level RBAC; Deb/RPM additionally support signed private hosting (local/hybrid), while JetBrains is proxy-only.

Released under the MIT License.