Chainguard Libraries for JavaScript overview
JavaScript libraries for your application development
For the complete documentation index, see llms.txt.
The following video focuses on Chainguard’s built-from-source model: when a rebuilt package is available, Chainguard serves it with verifiable provenance and SBOMs. Not every package or version can be built immediately, so the Chainguard Repository also supports an optional, policy-governed upstream fallback. When enabled, Chainguard-built packages are preferred, while eligible upstream packages are subject to configurable controls such as a cooldown period and malware and greyware scanning. Packages identified as malicious are blocked.
Interviewer: So how does Chainguard Libraries help developers?
Dustin Kirkland: Yeah, so building off of that Chainguard Factory, we’ve actually repurposed all of that automation to not just build packages and containers, but actually fetch libraries directly from their upstream source and recompile those Java binaries—JARs—and those Python binaries—wheels—in a new format, or in the same format rather, but totally bootstrapped from source. The fact that we can rebuild those libraries means that we can actually patch them if necessary.
Now, in doing so, we’ve created an entire repository of Python wheels and Java JARs that we can publish and hydrate into a customer’s environment, so that their developers can retrieve their libraries from a secure source, from a trusted source, and avoid malicious packages—deliberately modified or intentionally compromised packages—which, you know, we find in PyPI.org or in Maven Central from time to time. But Chainguard building those from source ensures that that entire open source ecosystem is secured in the same way that we’re securing the packages and the container ecosystems.
Interviewer: So Dustin, how does Libraries actually plug into a developer workflow?
Dustin Kirkland: Yeah, so I used the word “hydrate” earlier. We hydrate typically a JFrog Artifactory or a Cloudsmith—we hydrate that registry of artifacts with Chainguard securely built artifacts. And we produce this constant flow of tens of thousands of those library version tuples into that environment. And our customers can come to us and get a license for our entire Java ecosystem or our entire Python ecosystem.
So from that sense, we’re certainly not an artifact registry. You use the artifact registry that’s typically used inside of your organization. We help populate that with secure artifacts. This is fairly similar to our approach with containers, where we’re not a scanner, but what we’re trying to do is complement the scanners that you have with better containers that have fewer CVEs, and you end up with cleaner scan results. So in this artifact sense, we’re not an artifact registry, but we’re putting better binaries into that artifact destination.
Interviewer: So once the artifact registry is set up, is there any changes to actual developers’ workflow, or will it just work?
Dustin Kirkland: Typically not. I mean, if inside of your organization you already have an artifact registry and your developers are pip installing or maybe even importing those classes and libraries from that artifact repository, we’re just replacing the artifacts that may have additional vulnerabilities or potentially malicious code with artifacts that have fewer vulnerabilities and are immune to that malicious code.
As detailed on the background and introduction pages, Chainguard Libraries are built directly from source in the Chainguard Factory and the resulting binaries are directly provided to you by Chainguard. Chainguard operates the whole supply chain for the package lifecycle as one reliable, secure partner. You can therefore avoid issues from the following software supply chain attack surface points:
More information about these stages in the software supply chain is available on the Supply chain Levels for Software Artifacts (SLSA) website.
The following examples are issues, attacks, and compromises that affect stages of the software supply chain for libraries across different language ecosystems:
The following links provide details for other software supply chain attacks. Depending on the exact details some of these attacks and approaches are prevented by use of Chainguard Libraries.
Find pointers to further resources in the Software supply chain reading list.
Chainguard rebuilds libraries from source in a controlled environment to improve supply-chain security. As a result, while functionality remains the same, build metadata and generated content, such as SBOMs, differs from upstream distributions. Whether Chainguard library checksums match upstream depends on the ecosystem and build process.
During initial migration to Chainguard Libraries, some common causes of checksum errors include:
.m2 or Gradle’s cache.package-lock.json or yarn.lock.After you migrate, build pinning keeps a version you pulled from the upstream fallback stable when Chainguard later publishes its own build, so checksums don’t change unexpectedly across rebuilds.
Malware‑hardened libraries are the baseline Chainguard Libraries experience: Chainguard rebuilds open source Java, JavaScript, and Python dependencies from upstream source in the Chainguard Factory, a controlled, SLSA‑aligned build environment, and publishes them to hardened registries for customers to consume. This closes off most supply chain malware vectors compared to pulling directly from public registries like Maven Central, npm, and PyPI.
CVE remediation is an additional feature where Chainguard backports High and Critical vulnerability fixes from newer upstream releases to older versions that customers are still using, particularly when upstream maintainers no longer ship patches for those older versions. Remediated versions are:
https://libraries.cgr.dev/python-remediated/simple/ for Python and
https://libraries.cgr.dev/java-remediated/ for Java.+cgr.N for Python (for example,
2.0.0+cgr.1) and -0.cgr.N for Java – so dependency resolvers can
distinguish them from non‑remediated upstream versions while still preferring
the remediated build during resolution.Chainguard offers an upstream fallback through the Chainguard Repository as a single, managed endpoint for each ecosystem. This endpoint:
Because of those controls, you may still see failed pulls when the upstream fallback is enabled, for example when:
For customers, this can surface as an error from the Chainguard endpoint even though a version appears in the public registry.
For more details on the errors you may see when a package is blocked for these reasons, see the Error messages documentation.
Chibbies is the internal codename for the Chainguard Libraries. It evolved from Chainguard Libraries being shortened to Chainguard Libbies, and then finally to Chibbies.
The following questions apply to repo manager configurations for Chainguard Libraries, using JFrog Artifactory. Learn more about using a repo manager in the global configuration pages for each ecosystem: Java, JavaScript, Python.
Follow these steps for general troubleshooting:
In some cases, authentication failures or malformed token behavior are caused by traffic inspection or proxy-layer handling. When troubleshooting, check the following:
Firewall rules can prevent dependency resolution or break integration behavior. This is often observed when the repository manager can reach one destination but not another required upstream host or storage host. When troubleshooting, check the following:
Proxy layers can change headers, certificate handling, path routing, protocol support, and cache behavior. When troubleshooting, check the following:
Caching is a common cause of unexpected behavior during onboarding and testing. Builds can continue using previously cached public-registry artifacts or stale metadata even after you switch a repository over to Chainguard. When troubleshooting, check the following:
Clear one cache layer at a time and rerun the same test after each change. Avoid clearing multiple cache layers simultaneously unless the steps are documented. If you are switching an existing Artifactory repository to Chainguard, invalidate or zap the remote cache before concluding that the configuration is broken.
Last updated: 2026-09-10 14:55