2025-11-07 - 2026-11-07
Overview
60 Releases published by 2 users
Published
v3.25.1
Published
v3.25.0
Published
v3.24.0
Published
v3.23.0
Published
v3.22.0
Published
v3.21.0
Published
v3.20.0
Published
v3.19.0
Published
v3.18.0
Published
v3.17.1
Published
v3.17.0
Published
v3.16.0
Published
v3.15.0
Published
v3.14.0
Published
v3.13.1
Published
v3.13.0
Published
v3.12.0
Published
v3.11.2
Published
v3.11.1
Published
v3.11.0
Published
v3.10.1
Published
v3.10.0
Published
v3.9.1
Published
v3.9.0
Published
v3.8.0
Published
v3.7.7
Published
v3.7.6
Published
v3.7.5
Published
v3.7.4
Published
v3.7.3
Published
v3.7.2
Published
v3.7.1
Published
v3.7.0
Published
v3.6.5
Published
v3.6.4
Published
v3.6.3
Published
v3.6.2
Published
v3.6.0
Published
v3.6.1
Published
v3.5.0
Published
v3.4.0
Published
v3.3.0
Published
v3.2.0
Published
v3.1.0
Published
v3.0.0
Published
v2.7.3
Published
v2.7.2
feat: cache parsed member indexes as msgpack to skip YAML re-parse on rebuild (#40)
Published
v2.7.1
Published
v2.7.0
Published
v2.6.0
Published
v2.5.0
Published
v2.4.0
Published
v2.3.0
Published
v2.2.1
Published
v2.2.0
Published
v2.1.3
Published
v2.1.2
Published
v2.1.1
Published
v2.1.0
Published
v2.0.4
148 Pull requests merged by 3 users
Merged
#179 Preserve repo_type on remote update
Merged
#178 Document the repodata fingerprint invariant
Merged
#177 Make repodata coalescing tests deterministic
Merged
#176 Document sync_interval for deb/alpine and fix created_at gate on existing rows
Merged
#173 Show virtual parallel_fetch in UI and TUI
Merged
#171 Keep stale virtual member copy when the remote lookup fails
Merged
#175 Require both members in RPM member-order test
Merged
#174 Cap sync_interval at 30 days
Merged
#172 Make serve_stale refresh test deterministic
Merged
#168 Add cache_repodata toggle for github_rpm remotes
Merged
#166 Add per-remote sync_interval and spread GitHub syncs
Merged
#167 Serve stale virtual members while they refresh
Merged
#169 Gate local repo writes behind OIDC tokens
Merged
#170 Enforce remote quarantine for fresh immutable artifacts
Merged
#165 Add parallel_fetch toggle for virtual member index files
Merged
#164 Add alpine virtual repositories
Merged
#163 Drop local files and metadata with their remote
Merged
#162 Add vcs remote type
Merged
#138 Add deb virtual repositories
Merged
#161 Forward module and pagination params on puppet release listings
Merged
#160 Add puppet virtual repositories
Merged
#159 Add goproxy virtual repositories
Merged
#143 Add goproxy local repositories
Merged
#158 Add ansible virtual repositories
Merged
#157 Add local ansible Galaxy repositories
Merged
#137 Add ansible Galaxy remote type
Merged
#146 Forward allowlisted query params for remote providers
Merged
#135 Fail GitHub scans on asset errors and drop sync state with its remote
Merged
#156 Release Redis locks only while the caller still owns them
Merged
#155 Keep a tombstone on gem yank
Merged
#154 Add gems virtual repositories
Merged
#153 Add local gems repositories
Merged
#152 Add npm virtual repositories
Merged
#149 Harden nuget per-request index rewrite
Merged
#148 Add HEAD route for remotes and gems remote type
Merged
#139 Add local npm registry publish and install
Merged
#151 Fix mutable path refresh: default mutable_ttl, revalidate after expiry
Merged
#150 Split per-type registration points into per-type files
Merged
#140 Add helm local repositories
Merged
#147 Share the virtual merge cache across index types
Merged
#142 Add gems remote type for RubyGems
Merged
#145 Add local puppet forge
Merged
#141 Add nuget v3 remote type
Merged
#136 Add optional OIDC bearer auth on remote/virtual config writes
Merged
#133 Retry failed GitHub release scans with backoff
Merged
#134 Push release images to artifactapi docker-internal
Merged
#131 Add rpm virtual repositories
Merged
#132 Add cargo sparse registry remote type
Merged
#130 Fix objects test compile after Routes evictor change
Merged
#129 Filter remote object listings by prefix
Merged
#128 Evict remote objects from every cache layer
Merged
#127 ci: move Go steps to the estate-built gobuilder image
Merged
#126 ci: back Go compiles with the shared S3 build cache
Merged
#125 Adopt golib/pg for migrations and pool construction
Merged
#124 proxy: snapshot in-flight counts before sorting (least_conn selection O(n))
Merged
#123 proxy: add mirror-selection benchmarks
Merged
#122 remotes: add least-connections mirror strategy (round-robin remains default)
Merged
#121 remotes: add mirrorlist for round-robin + failover across mirrors (rpm/deb/apk)
Merged
#120 remotes: flush cached metadata when a remote's base_url changes
Merged
#119 deb/apk: make local repodata deterministic
Merged
#118 rpm: make local repodata deterministic (fixes #117)
Merged
#116 ui: add alpine local and github_alpine usage instructions
Merged
#115 Add github_alpine metadata-only package type
Merged
#114 Add Alpine/apk local repository support
Merged
#113 ui: add deb and github_deb usage instructions
Merged
#112 Add github_deb metadata-only package type
Merged
#111 Add deb (Debian/apt) local and remote repository support
Merged
#109 feat: server-level GitHub machine credential for authenticated requests
Merged
#108 feat: background syncer for github_rpm remotes
Merged
#107 feat: github_rpm metadata-only remote (GitHub releases as a yum repo, no precache)
Merged
#105 feat(ui): add "How do I use this?" usage instructions to repo detail pages
Merged
#106 feat(ui): direct-download links for downloadable local repo files
Merged
#104 fix: make local docker uploads replica-independent
Merged
#103 feat: serve local docker repos as a real registry
Merged
#102 feat: serve local terraform repos as a provider registry
Merged
#101 feat: redirect / to the web UI
Merged
#100 fix: prune RPM metadata when a local file is evicted
Merged
#99 fix: show local-repo files in the cached-objects UI
Merged
#97 test: comprehensive dockerised end-to-end suite
Merged
#98 test: raise core-package unit coverage to 90%
Merged
#90 feat: wire the circuit breaker into the proxy fetch path
Merged
#86 fix: GC has no grace period (TOCTOU with dedup uploads)
Merged
#96 fix: repair master build after conflicting merges
Merged
#83 fix: set timeouts on the upstream HTTP client
Merged
#85 fix: getenv treats an explicitly-empty value as unset
Merged
#93 fix: coalesce concurrent cache-miss fetches (thundering herd)
Merged
#91 perf: batch access-log writes instead of goroutine+insert per request
Merged
#89 fix: HEAD requests fetch and stream the full body
Merged
#92 feat: cache upstream bearer tokens
Merged
#94 perf: stream proxied artifacts instead of buffering the full body in memory
Merged
#88 perf: compile remote match patterns once instead of per-request
Merged
#87 fix: blocklist fails open when a regex fails to compile
Merged
#84 fix: isNetworkError should use errors.As, not a bare type assertion
Merged
#82 fix: serveFromStore does a guaranteed-miss S3 lookup on every cache hit
Merged
#81 fix: e2e suite fails to build (stale server.New call)
Merged
#65 feat: add bandwidth saved stat to dashboard
Merged
#64 fix: strip base URL path prefix from helm chart download URLs
Merged
#63 fix: report actual version instead of hardcoded 3.0.0-dev
Merged
#62 feat: forward Accept header and fix Content-Type for Docker proxying
Merged
#61 fix: nginx config for UI serving under base path
Merged
#60 feat: handle Docker Bearer token auth for upstream registries
Merged
#59 fix: use map format for docker-buildx build_args
Merged
#58 feat: configurable UI base path via BASE_PATH build arg
Merged
#57 feat: add Docker Registry V2 endpoint at /v2/
Merged
#56 fix: don't rewrite helm chart URLs pointing to a different host
Merged
#55 chore: add pre-commit config and update CI pipeline
Merged
#54 feat: UI separates locals, remotes, and virtuals
Merged
#53 feat: add local RPM repository with on-demand repodata
Merged
#52 refactor: modular local provider interfaces
Merged
#51 feat: virtual PyPI repos can merge local + remote members
Merged
#50 feat: add local PyPI repository support
Merged
#49 feat: add local repository type with repo_type field
Merged
#48 feat: tree view for cached objects, top-files stats on dashboard
Merged
#47 Feat/v3 go rewrite
Merged
#46 chore: bump almalinux9 image tags
Merged
#45 feat: add Terraform/OpenTofu registry remote type
Merged
#44 feat: add Puppet Forge remote type
Merged
#43 feat: add ban_tags_enabled/ban_tags to docker remotes to block named tags
Merged
#42 fix: cross-link tag manifests to digest keys and add fetch lock to prevent thundering herd
Merged
#40 feat: cache parsed member indexes as msgpack to skip YAML re-parse on rebuild
Merged
#39 perf: use yaml.CSafeLoader/CDumper for 4x faster virtual index merge
Merged
#38 perf: offload virtual repo merge to thread pool via asyncio.to_thread
Merged
#37 fix: rewrite helm index.yaml URLs post-parse to handle relative URLs
Merged
#31 refactor: split config into remotes/virtuals/locals sections
Merged
#30 feat: add virtual repository support for unified index merging
Merged
#27 chore: move example config files into examples/
Merged
#26 feat: support config.d directory for split configuration (closes #20)
Merged
#25 feat: quarantine new releases (supply-chain attack prevention)
Merged
#24 refactor: split codebase into submodules (closes #19)
Merged
#23 chore: cleanup the readme
Merged
#18 refactor: simplify pypi and npm URL rewriting
Merged
#17 feat: add helm chart repository caching proxy
Merged
#16 feat: add npm registry caching proxy
Merged
#15 feat: add PyPI remote type with URL rewriting and basic auth
Merged
#14 feat: immutable/mutable caching patterns with conditional revalidation and stale fallback
Merged
#13 chore: remove build from tag
Merged
#12 build: align Dockerfile with packer build and add docker-compose dev mounts
Merged
#11 benvin/configurable-index-patterns
Merged
#10 feat: enforce include_patterns on docker /v2/ proxy route
Merged
#9 benvin/docker-caching
Merged
#8 feat: add Docker registry proxy support with proper cache classification
Merged
#7 feature/cache-flush-api-enhancement
Merged
#6 benvin/path-based-storage
Merged
#5 feat: add cache flush API and fix cache key consistency
Merged
#4 feat: index caching
Merged
#3 feat: add fedora index files
Merged
#2 Fix S3 SSL certificate validation and boto3 checksum compatibility
Merged
#1 Fix boto3 XAmzContentSHA256Mismatch errors with Ceph RadosGW
5 Pull requests proposed by 2 users
Proposed
#95 docs: authentication & authorization system design (epic #79)
Proposed
#144 Add local cargo registry type
Proposed
#180 Accept OAuth2 POST form credentials on registry /v2/token
Proposed
#181 Run the dockerised e2e suite with write auth enabled
Proposed
#182 Wait for the deb Packages index to list the upload in e2e
23 Issues closed from 2 users
Closed
#117 rpm-local repodata: intermittent checksum mismatch (repomd vs primary) breaks dnf
Closed
#74 feat: wire the circuit breaker into the proxy fetch path
Closed
#71 fix: GC has no grace period (TOCTOU with dedup uploads)
Closed
#67 fix: set timeouts on the upstream HTTP client
Closed
#69 fix: getenv treats an explicitly-empty value as unset
Closed
#75 fix: coalesce concurrent cache-miss fetches (thundering herd)
Closed
#76 perf: batch access-log writes instead of goroutine+insert per request
Closed
#70 fix: HEAD requests fetch and stream the full body
Closed
#77 feat: cache upstream bearer tokens
Closed
#66 perf: stream proxied artifacts instead of buffering the full body in memory
Closed
#73 perf: compile remote match patterns once instead of per-request
Closed
#72 fix: blocklist fails open when a regex fails to compile
Closed
#68 fix: isNetworkError should use errors.As, not a bare type assertion
Closed
#78 fix: serveFromStore does a guaranteed-miss S3 lookup on every cache hit
Closed
#80 fix: e2e suite fails to build (stale server.New call)
Closed
#41 refactor: remove repositories list from OCI helm remote; use single-chart base_url per remote
Closed
#36 Virtual helm: cache parsed member indexes (not raw bytes) to skip re-parse on rebuild
Closed
#34 Virtual helm merge: use yaml.CSafeLoader/CDumper for 10-50x YAML parse/dump speedup
Closed
#35 Virtual helm merge: offload CPU-bound merge to thread pool to unblock async event loop
Closed
#33 Virtual helm repo: relative chart URLs not rewritten, causing 404 on .tgz download
Closed
#20 Configuration data split
Closed
#22 Preventing supply chain attacks
Closed
#19 Refactor into submodules
28 Issues created by 1 user
Opened
#19 Refactor into submodules
Opened
#20 Configuration data split
Opened
#21 Secrets in config
Opened
#22 Preventing supply chain attacks
Opened
#28 feat: background cache warmer for virtual repositories
Opened
#29 test quality: rubber-stamping, coverage gaps, and improvement opportunities
Opened
#32 check creation date for npm
Opened
#33 Virtual helm repo: relative chart URLs not rewritten, causing 404 on .tgz download
Opened
#34 Virtual helm merge: use yaml.CSafeLoader/CDumper for 10-50x YAML parse/dump speedup
Opened
#35 Virtual helm merge: offload CPU-bound merge to thread pool to unblock async event loop
Opened
#36 Virtual helm: cache parsed member indexes (not raw bytes) to skip re-parse on rebuild
Opened
#41 refactor: remove repositories list from OCI helm remote; use single-chart base_url per remote
Opened
#66 perf: stream proxied artifacts instead of buffering the full body in memory
Opened
#67 fix: set timeouts on the upstream HTTP client
Opened
#72 fix: blocklist fails open when a regex fails to compile
Opened
#68 fix: isNetworkError should use errors.As, not a bare type assertion
Opened
#73 perf: compile remote match patterns once instead of per-request
Opened
#70 fix: HEAD requests fetch and stream the full body
Opened
#69 fix: getenv treats an explicitly-empty value as unset
Opened
#71 fix: GC has no grace period (TOCTOU with dedup uploads)
Opened
#75 fix: coalesce concurrent cache-miss fetches (thundering herd)
Opened
#76 perf: batch access-log writes instead of goroutine+insert per request
Opened
#74 feat: wire the circuit breaker into the proxy fetch path
Opened
#77 feat: cache upstream bearer tokens
Opened
#78 fix: serveFromStore does a guaranteed-miss S3 lookup on every cache hit
Opened
#79 epic: authentication & authorization system (Vault dynamic secrets, service accounts, users, path ACLs)
Opened
#80 fix: e2e suite fails to build (stale server.New call)
Opened
#117 rpm-local repodata: intermittent checksum mismatch (repomd vs primary) breaks dnf