a private npm registry that remembers
Point your .npmrc at gastropod and get a private npm registry,
a caching proxy for npmjs, and a place to publish your own scoped packages, plus the part
every other registry leaves out: it verifies what it serves, remembers what it saw, and
can tell you who pulled what. Works with any client that speaks the npm registry
protocol — npm, yarn, pnpm.
connecting is as easy as
# .npmrc registry=https://gastropod.io/npm/ //gastropod.io/npm/:_authToken=TOKEN
That's the whole integration. Installs flow through gastropod: public
packages proxy from npmjs and cache on first pull; your own packages publish to a hosted
repo with npm publish. No plugin, no wrapper, no new CLI.
what happens on every install
- Identity is fixed. The package resolves to an exact PURL, version, and sha256 digest, not just a name and a semver range.
- Provenance is verified. Integrity is checked against npm's SRI hashes, registry signatures, and Sigstore attestations where publishers provide them, before the artifact is served. A package whose contents don't match its claimed identity is flagged, not delivered.
- Advisories are correlated. Known OSV advisories attach to the exact version, along with everything downstream of it, so when the next npm advisory is published, you already know every package and consumer it reaches.
- The pull is recorded. Who pulled it, when, and from where, attributed to a principal on the audit spine and exportable on request.
- It's remembered. SBOM, findings, provenance, and dependents stay attached to that digest. The next install of the same artifact, by any team or pipeline, inherits all of it.
identity, not just scanning
npm's worst incidents haven't mostly been vulnerabilities; they've been
identity problems: a maintainer handoff gone bad, a lookalike name, a version that isn't
what it claims to be. The 2018 event-stream incident shipped malicious code to
millions of installs through a legitimate dependency, and most organizations couldn't answer
the two questions that mattered: did we pull it, and what did it reach? Gastropod catches an
identity or provenance mismatch at intake, block rules stop the artifact from being served,
and the blast-radius graph plus pull history answer "where is it and who has it" in minutes.
It also closes the dependency-confusion hole: private scopes resolve from hosted repos
through the same registry URL, so a public lookalike can't shadow an internal package name.
proxy, hosted, virtual
proxy
A caching mirror of npmjs, or any upstream registry. The first pull fetches and verifies; repeat pulls of the same digest serve from content-addressed, deduplicated storage.
hosted
Your own scoped packages, published with standard
npm publish, token-gated, with reader and publisher roles.
virtual
One URL aggregating both, so a single .npmrc
line covers public and private resolution in the right order.
Every feature is on every tier, so none of this is an upsell: OIDC SSO, scoped tokens, SBOMs, advisories, blast radius, and the audit spine are all present starting at our published rates.
FAQ
how do I point npm at a private registry?
Two lines in .npmrc: set registry= to your
gastropod instance and add the _authToken line for authentication. yarn and
pnpm honor the same configuration. Scoped registries (@yourorg:registry=…)
work too, if only a private scope should route through gastropod.
can I publish private npm packages to gastropod?
Yes. Create a hosted repository, issue a publisher token, and
npm publish works as-is. Packages are private by default and readable only
with a token; per-repository public read is a setting, not a plan upgrade.
does gastropod scan npm packages for vulnerabilities?
It verifies and correlates rather than replacing your scanner: integrity and provenance are checked at intake, OSV advisories attach to each exact version, and findings from scanners you already run — Trivy, Grype, Snyk, Anchore — pin to the artifact and follow it everywhere it appears.
how does it handle malicious or hijacked packages?
An artifact whose contents don't match its claimed identity is flagged at intake, and block rules can quarantine it before a single install succeeds. If something already got through upstream, the where-seen history and blast-radius graph show every package and consumer it reached.
can gastropod replace my current npm registry?
Yes, for standard npm workflows. It's a registry-protocol change in
.npmrc, not new tooling, and it runs side by side with your current registry
during evaluation.
Part of the full product overview. Also speaking: Go · PyPI · OCI · RubyGems.
npm is a trademark of npm, Inc. (GitHub/Microsoft). Gastropod is not affiliated with npm, Inc. Details current as of July 2026.