Your package hub. Proxy, cache, and host. https://batleforc.git.batleforc.fr/batlehub/
  • Rust 79.4%
  • Shell 6.7%
  • TypeScript 5.8%
  • Vue 4.6%
  • JavaScript 1.8%
  • Other 1.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Max Batleforc 6818d6cba3
Some checks failed
Publish / Publish batlehub website (push) Failing after 1m34s
chore(version): v1.8.1
2026-10-21 18:57:07 +00:00
.cargo feat: impl local registry and let the IA work on reducing the CVE 2026-05-22 16:16:36 +02:00
.claude feat: Change the Logo! 2026-09-20 11:17:35 +00:00
.forgejo feat: Registry Devfile ++ Doc (#195) 2026-10-11 12:54:12 +02:00
.github feat(helm): Helm chart repositories as a registry kind (RFC 0029) (#214) 2026-10-19 20:43:34 +02:00
.impeccable Feat: rework UI (#106) 2026-08-16 02:35:21 +02:00
.rtk feat: Squashed commit of the following: 2026-07-09 20:32:27 +02:00
.sonarlint feat: wip 2026-06-13 13:53:31 +02:00
.tasks feat(helm): Helm chart repositories as a registry kind (RFC 0029) (#214) 2026-10-19 20:43:34 +02:00
.updatecli feat: wip 2026-06-09 18:41:47 +02:00
.vscode feat: wip 2026-06-28 18:23:07 +00:00
cli fix: catalogue freshness, cache size on the health page, replica drift warning (#217) 2026-10-21 14:01:09 +02:00
crates fix: catalogue freshness, cache size on the health page, replica drift warning (#217) 2026-10-21 14:01:09 +02:00
deploy feat(helm): Helm chart repositories as a registry kind (RFC 0029) (#214) 2026-10-19 20:43:34 +02:00
dev/dex feat: update package (#124) 2026-08-23 21:30:01 +02:00
docs chore(version): v1.8.1 2026-10-21 18:57:07 +00:00
examples fix(ci): db_calls budget for the publish ownership check, Sonar triage 2026-10-17 09:22:10 +00:00
fuzz feat(helm): Helm chart repositories as a registry kind (RFC 0029) (#214) 2026-10-19 20:43:34 +02:00
helm/batlehub chore(version): v1.8.1 2026-10-21 18:57:07 +00:00
patches feat: New registry, New Test Suit, New RFC SKILL (#167) 2026-09-19 14:22:59 +02:00
perf feat(helm): Helm chart repositories as a registry kind (RFC 0029) (#214) 2026-10-19 20:43:34 +02:00
scripts Feat: rework UI (#106) 2026-08-16 02:35:21 +02:00
server fix: catalogue freshness, cache size on the health page, replica drift warning (#217) 2026-10-21 14:01:09 +02:00
tests feat(helm): Helm chart repositories as a registry kind (RFC 0029) (#214) 2026-10-19 20:43:34 +02:00
ui chore(version): v1.8.1 2026-10-21 18:57:07 +00:00
vex fix(deps): refuse distrusted emSign intermediates (CVE-2026-111943) (#222) 2026-10-21 20:55:47 +02:00
.cspell.json feat: wip 2026-06-13 13:53:31 +02:00
.dockerignore feat: step one 2026-05-16 19:21:04 +02:00
.gitignore feat: Registry Devfile ++ Doc (#195) 2026-10-11 12:54:12 +02:00
.gitleaksignore feat: update package (#124) 2026-08-23 21:30:01 +02:00
.noidle feat: wip 2026-05-20 22:42:24 +00:00
.semgrepignore feat: New registry, New Test Suit, New RFC SKILL (#167) 2026-09-19 14:22:59 +02:00
.spectral.yaml feat: security fixes, fuzz hardening, OpenAPI lint gate 2026-10-17 08:52:35 +00:00
.trivyignore.yaml feat(helm): Helm chart repositories as a registry kind (RFC 0029) (#214) 2026-10-19 20:43:34 +02:00
Cargo.lock chore(version): v1.8.1 2026-10-21 18:57:07 +00:00
Cargo.toml chore(version): v1.8.1 2026-10-21 18:57:07 +00:00
CHANGELOG.md docs(changelog): 1.8.1 2026-10-21 18:57:05 +00:00
CLAUDE.md feat: New registry, New Test Suit, New RFC SKILL (#167) 2026-09-19 14:22:59 +02:00
clippy.toml feat(security): 1.1.0 security remediation and release prep (#95) 2026-08-10 20:03:34 +02:00
cog.toml feat: Mr Wrapper pour remise d'équerre et finalisation des RFC (#146) 2026-09-09 23:15:41 +02:00
config.example-s3.toml feat: cleanup taskfile 2026-08-24 23:16:10 +02:00
config.example-space.toml feat: New registry, New Test Suit, New RFC SKILL (#167) 2026-09-19 14:22:59 +02:00
config.example.toml feat: New registry, New Test Suit, New RFC SKILL (#167) 2026-09-19 14:22:59 +02:00
config.s3.toml feat: Mise en place de nouveau verbe pour les habilitation (#138) 2026-08-31 00:13:27 +02:00
Containerfile feat: new test suit 2026-09-11 14:28:44 +00:00
Containerfile.hardened feat: New registry, New Test Suit, New RFC SKILL (#167) 2026-09-19 14:22:59 +02:00
Containerfile.worker fix(deps): refuse distrusted emSign intermediates (CVE-2026-111943) (#222) 2026-10-21 20:55:47 +02:00
Containerfile.worker-guarddog feat(helm): Helm chart repositories as a registry kind (RFC 0029) (#214) 2026-10-19 20:43:34 +02:00
CONTRIBUTING.md feat: add docs 2026-09-20 13:00:52 +00:00
deny.toml fix: cicd and apply update 2026-10-11 14:15:18 +00:00
DESIGN.md feat: Change the Logo! 2026-09-20 11:17:35 +00:00
devfile.yaml feat: update package (#124) 2026-08-23 21:30:01 +02:00
docker-compose.s3.yml feat: New registry, New Test Suit, New RFC SKILL (#167) 2026-09-19 14:22:59 +02:00
docker-compose.yml feat: trully deserved rebranding 2026-05-21 00:19:05 +02:00
gitleaks.toml feat: 1.4.0 2026-09-20 13:31:33 +00:00
LICENSE feat: prepare v1 2026-07-01 23:21:38 +00:00
mise.lock feat(helm): Helm chart repositories as a registry kind (RFC 0029) (#214) 2026-10-19 20:43:34 +02:00
mise.toml feat: Registry Devfile ++ Doc (#195) 2026-10-11 12:54:12 +02:00
PRODUCT.md Feat: rework UI (#106) 2026-08-16 02:35:21 +02:00
README.md feat(helm): Helm chart repositories as a registry kind (RFC 0029) (#214) 2026-10-19 20:43:34 +02:00
ROADMAP.md feat(helm): Helm chart repositories as a registry kind (RFC 0029) (#214) 2026-10-19 20:43:34 +02:00
scorecard.png feat: Squashed commit of the following: 2026-07-09 20:32:27 +02:00
SECURITY.md feat: Registry Devfile ++ Doc (#195) 2026-10-11 12:54:12 +02:00
sonar-project.properties fix(ci): db_calls budget for the publish ownership check, Sonar triage 2026-10-17 09:22:10 +00:00
Taskfile.yml feat: Mr Wrapper pour remise d'équerre et finalisation des RFC (#146) 2026-09-09 23:15:41 +02:00
updatecli-compose.yaml feat: wip 2026-06-08 20:05:27 +02:00

BatleHub — Your package hub. Proxy, cache, and host.

BatleHub - Proxy Cache

A self-hosted smart proxy and cache for package registries. It sits between your build tools and the internet, caches artifacts after the first download, and enforces access-control rules before any package reaches a developer or CI pipeline.


Quick start

With Docker Compose

git clone https://github.com/batlehub/batlehub
cd batlehub/deploy/compose/min
BATLEHUB_ADMIN_TOKEN=$(openssl rand -hex 32) docker compose up -d   # or podman compose

The server listens on http://localhost:8080, and npm is proxied at /proxy/npm/. deploy/compose/base adds an OIDC login (Dex) and deploy/compose/max adds Valkey and S3 storage — see Docker Compose.

Build from source

Prerequisites: Rust 1.87+, Node 24+, PostgreSQL

# Backend
cargo build --release -p batlehub-server

# Frontend (optional — embeds the SPA into the server)
cd ui && pnpm install --frozen-lockfile && pnpm run build && cd ..

# Generate the OpenAPI spec and TypeScript client
cargo run -p batlehub-server -- --config config.example.toml dump-spec > ui/openapi.json
cd ui && pnpm run generate && pnpm run build && cd ..

# Run
./target/release/batlehub --config config.toml

Or use the Task shortcuts:

task compose:db    # start only postgres
task run           # cargo run with example config
task ui:dev        # vite dev server (proxies /api and /proxy to :8080)
task test          # cargo test --workspace

Documentation

Document Contents
Supported Registry List of supported Registries and how to use them
Installation Choosing a method: Docker Compose, container image, binary, source, Helm
Helm chart Kubernetes: three complete values files — basic, S3, production-ready
Administration Administration: config, auth, S3, health, package management
User guide User guide: client setup and publishing for all registry types
Configuration Full TOML reference, permissions, worked examples
Configuration § Registry modes Private registry modes (local / hybrid)
Private upstreams Upstream auth (Bearer / Basic / header) and custom CA certificates
Publishing Step-by-step guide for publishing packages (npm, Cargo, VSIX, Go modules, gems, Maven artifacts, Terraform modules/providers, PyPI wheels, conda packages)
SBOM SBOM configuration, format reference, API endpoints, and export guide
Adding a registry Step-by-step guide for implementing a new registry adapter
/swagger-ui/ (runtime) Interactive API docs

Development, Contributing, security, and license

task build          # cargo build --workspace
task test           # cargo test --workspace
task lint           # cargo clippy --workspace
task fmt            # cargo fmt --all
task dump-spec      # regenerate ui/openapi.json
task ui:generate    # regenerate TypeScript client from openapi.json
task coverage       # generate HTML coverage report (requires PostgreSQL + RustFS)
task coverage-check # enforce ≥80% line coverage (fails the build if below threshold)