npm, but trustless.
Every release signed on-chain by multiple maintainers.
One compromised key is never enough.
then 3pm publish · 3pm approve · 3pm install
Supply chain incidents
The npm ecosystem is under attack.
These aren't hypothetical risks. Every incident below used an attack vector that 3pm's multi-sig threshold and on-chain attestation would have blocked.
A two-year stealth compromise nearly backdoored OpenSSH across all major Linux distributions — discovered days before widespread deployment.
Domain sold to a Chinese CDN company; 100,000+ websites were instantly delivering malware to their visitors with no code changes.
Attacker used stolen npm credentials to push a trojaned version that silently installed a cryptominer and exfiltrated passwords.
Original author transferred the package to a stranger; malicious code targeting Copay Bitcoin wallets ran undetected for months.
Maintainer added logic to wipe files on systems with Russian or Belarusian IPs, silently deployed to all vue-cli users.
Maintainer deliberately published broken versions outputting gibberish, disrupting thousands of CI pipelines in a single morning.
Stolen credentials used to publish a version that silently harvested npm auth tokens from every developer who ran it.
A 17-line package was unpublished in a dispute, instantly cascading into a global npm outage that broke React, Babel, and thousands of apps.
Architecture
Zero-trust publishing, every time.
Every release flows through cryptographic approval before a single byte touches npm. No single person can unilaterally publish.
Developer proposes
3pm publishThe CLI computes a deterministic SHA-512 digest from the tarball, snapshots the current nonce for replay protection, and submits a pending release to the backend — nothing goes to npm yet.
Maintainers sign
3pm approve <id>Each authorized maintainer receives the EIP-712 typed-data payload and signs it locally with their wallet. Keys never leave their machine. Signatures are validated off-chain before submission.
Threshold reached
M-of-N collectedOnce the required number of valid signatures are collected, the backend verifies authorization against the NameRegistry contract and confirms the nonce has not been replayed.
On-chain attestation
Base Sepolia txThe relayer submits a single on-chain transaction that permanently records the release: package name, version, CID, integrity hash, and nonce — immutable and queryable forever.
npm publish
after confirmationOnly after the chain transaction confirms does the backend execute the actual npm publish. The package goes live on npm with a cryptographically verifiable on-chain record.
Install verifies
3pm install pkg@verWhen a user installs, 3pm fetches from npm, recomputes the digest locally, and checks it against the on-chain attestation. Any mismatch halts the install with a clear warning.
What's novel
Not a registry replacement. A trust layer.
3pm sits on top of npm. Your toolchain stays the same — you just gain cryptographic proof that every release is legitimate.
Multi-sig governance
EIP-712M-of-N maintainer threshold. One compromised key is never enough. The owner controls team membership; maintainers control releases.
On-chain attestation
Base SepoliaEvery release is permanently recorded on Base L2 — immutable, queryable, and tamper-evident from day one.
Integrity verification
sha512SHA-512 digest computed locally and anchored on-chain. Install-time verification catches any in-transit tampering.
Replay protection
noncePer-package nonces invalidate stale signatures automatically. An old approval can never be replayed against a new release.
Non-custodial signing
self-sovereignNo passwords, no accounts, no trust in a third-party server. Your keys, your packages — sign from any EVM wallet.
npm compatible
drop-inNot a fork. Not a replacement. A trust layer that works with the existing npm registry and your existing workflow.
Comparison
How 3pm compares
Existing solutions leave critical gaps. Sigstore adds provenance but no governance. 2FA helps but one key is still enough. 3pm fills every row.
| Feature | npm default | npm 2FA | Sigstore provenance | 3pm |
|---|---|---|---|---|
| Multi-sig releases | – | – | – | ✓ |
| On-chain attestation | – | – | – | ✓ |
| Install-time verification | – | – | partial | ✓ |
| Replay protection | – | – | – | ✓ |
| Maintainer governance | – | – | – | ✓ |
| Non-custodial signing | – | – | partial | ✓ |
| Tamper-evident history | – | – | partial | ✓ |
| Threshold approval | – | – | – | ✓ |
On-chain registry
Recently published
Secure your packages today.
One command to install. Every future release verified on-chain, automatically.
Base Sepolia · open source · non-custodial