
An open-source, Rust-built universal artifact registry supporting 45+ package formats with integrated Trivy/Grype scanning, designed for self-hosted DevOps and supply-chain defense.
| Tool | artifact-keeper/artifact-keeper — open-source universal artifact registry and Artifactory/Nexus alternative written in Rust |
| Category | Self-hosted artifact registry with vulnerability scanning and WASM plugin extensibility |
| Primary Use | Hosting Maven, PyPI, NPM, Docker/OCI, Cargo, Go, Helm and 38 more package formats behind one authorized, self-controlled registry |
| Safe Use | Deployment on infrastructure you own or are contractually authorized to administer — internal DevOps pipelines, lab environments, and supply-chain hardening for development organizations |
| Telemetry Note | Every upload is logged, SHA-256 deduplicated, and scanned by Trivy and Grype; quarantined artifacts, policy failures, and peer-replication transfers leave a strong audit trail for defenders |
artifact-keeper positions itself as an enterprise-grade, open-source universal artifact registry — essentially a drop-in alternative to JFrog Artifactory and Sonatype Nexus — built in Rust (1.75+) and published under an MIT license. The project has accumulated roughly 1,049 stars and its topic list reads like a supply-chain wishlist: artifact-registry, container-registry, npm-registry, pypi-server, cargo-registry, helm-registry, maven-repository, and notably security-scanning and vulnerability-scanner. The core pitch is breadth: native protocol handlers for 45+ package formats, so a single self-hosted instance can front everything from Maven and NuGet to HuggingFace model artifacts and Helm charts.
Architecturally, the README is unusually forthcoming. The backend is a layered Rust/Axum application with a middleware pipeline — CORS, authentication, rate limiting, tracing/metrics, and a demo-mode guard — feeding a router with 50+ route groups into handler, service, and data layers. Persistence is PostgreSQL 16, storage is pluggable between filesystem and S3, and full-text search across all repositories is delegated to OpenSearch. This is a mature, decomposed design rather than a monolithic script, and the SonarCloud badges (Security Rating, Vulnerabilities, Quality Gate) plus a visible CI` workflow suggest the maintainers treat code quality as part of the product.
The format coverage is the headline feature and the README tabulates it by ecosystem. Language and runtime formats include Maven (with Gradle), NPM (with Yarn, pnpm, Bower), PyPI (with Poetry and Conda), NuGet, Cargo, Go, RubyGems, Hex, Composer, Pub, CocoaPods, Swift, CRAN, and SBT. Infrastructure formats cover Docker/OCI (including Podman, Buildx, ORAS, and WASM OCI), Helm, Terraform/OpenTofu, and Vagrant, while system packages span RPM, Debian, Alpine APK, Pacman, Conda, and OPKG for OpenWrt-style embedded targets.
The long tail is what makes it interesting for security teams. Configuration-management ecosystems (Chef Supermarket, Puppet Forge, Ansible Galaxy), ML/AI artifacts (HuggingFace models and datasets, generic ML models), editor extension marketplaces (VS Code including Cursor and Windsurf, plus JetBrains plugins), schema registries (Protobuf/BSR for Buf and Connect RPC), and build-system formats like Conan, Bazel, Git LFS, and Eclipse P2 all have handlers. For an organization worried about dependency confusion or typosquatting in third-party extension marketplaces, mirroring those ecosystems into a controlled internal registry is a concrete defensive play.
The security scanning pipeline is where artifact-keeper earns its vulnerability-scanner topic tag. Every upload is SHA-256 hashed and deduplicated: new artifacts flow through Trivy (filesystem/container analysis) and Grype (dependency-tree scanning), results are folded into an A–F vulnerability grade, and a configurable policy engine either stores the artifact or quarantines it. OpenSCAP handles compliance scanning. This is a classic intake-gate pattern — the registry becomes a supply-chain chokepoint where vulnerable packages are stopped before they reach a build, which is exactly the deployment model defenders want.
The README's operational notes on scanner configuration are a rare window into real-world deployment friction. Container-image reports require setting TRIVY_ADAPTER_URL to point at the bundled scanner-adapter service implementing the Harbor Pluggable Scanner API on :8080; without it, images still get Grype coverage in registry mode but no Trivy image report. The adapter must reach the backend at a container-network address — localhost fails because the adapter lives in its own network namespace — so TRIVY_ADAPTER_REGISTRY_URL or AK_GRYPE_REGISTRY_HOST overrides exist. There is even guidance about giving the adapter its own Trivy cache volume, since the root-owned shared trivy_cache causes permission denied on fanal/fanal.db under the unprivileged (UID 1001) adapter.
Borg replication is the scaling story: instead of thin read-only caches, every peer is a full artifact-keeper instance (backend, database, storage) that can originate replication to other peers, forming a recursive mesh. Distribution is swarm-based and demand-driven, with chunked transfers for large artifacts over unstable links and network-aware scheduling that profiles bandwidth and latency. For geographically distributed organizations, this replaces the traditional pull-through proxy tier with something closer to a gossip-driven CDN for packages — and it is worth noting for defenders that every peer holds full state, which changes the blast-radius calculus of a compromised node.
Extensibility comes via a WASM plugin system built on the Wasmtime runtime with a WIT-defined FormatHandler contract. Plugins run sandboxed with fuel-based CPU limits and memory caps, support hot reload (install, enable, disable, reload without restart), and load from Git repositories or ZIP uploads. From a defensive standpoint, WASM sandboxing is a meaningfully better isolation story than native plugin processes, though allowing plugin installation from arbitrary Git sources is itself a trust decision an operator should gate behind policy.
Authentication is enterprise-flavored: JWT, OpenID Connect, LDAP, SAML 2.0, and API tokens are all supported in the middleware pipeline. Artifact signing with GPG and RSA is integrated directly into the Debian, RPM, Alpine, Pacman, and Conda handlers, which means signed OS-package repositories — a nontrivial feature for anyone running internal Linux mirror infrastructure. There is also built-in migration tooling for pulling repositories, artifacts, and permissions out of JFrog Artifactory, lowering the switching cost for teams looking to exit commercial licensing.
Container hardening claims deserve mention because registries are high-value targets. All images ship on DISA STIG-approved Red Hat UBI 9 base images, run non-root, and contain no shell or package manager in the runtime layer. Distribution is via ghcr.io and Docker Hub under the artifactkeeper organization, and the README advertises a five-minute docker-compose quick start (the truncated Quick Start section) plus a hosted demo at demo.artifactkeeper.com and documentation at artifactkeeper.com/docs/.
Where this fits in an authorized workflow is straightforward: artifact-keeper is infrastructure, not an attack tool. An internal platform or security team stands it up on owned hardware, points build pipelines and developer machines at it, and lets the scanner-and-quarantine pipeline act as a policy enforcement point for the software supply chain. The audit surface is excellent for defenders — every upload is hashed, scanned, scored, and either stored or quarantined, with backend logging that even records which registry-address fallback the Trivy adapter took on each scan.
Watch-for items are the usual ones for a young, fast-moving project: the README's dense troubleshooting notes around scanner networking hint at sharp edges in deployment, the not-applicable scanner states (not_applicable vs failed, with collapsed_scan_types in the scan-list API) indicate evolving semantics operators must understand to avoid alert fatigue, and the WASM plugin loader's Git-source option needs governance. But as an open, MIT-licensed, Rust-built alternative to commercial registries — with scanning and signing baked in rather than bolted on — artifact-keeper is one of the more complete supply-chain tools to appear in this space recently.
artifact-keeper/artifact-keeper.Educational analysis for authorized security professionals. Use only in controlled, authorized environments.
Related coverage
0 comentários:
Post a Comment
Note: Only a member of this blog may post a comment.