Packagesyoucanverify.Maintainersyoucan'tspoof.
A decentralized package registry on the gitlawb substrate. Each package is a did-anchored repository, each version a signed ref-update certificate. Refuses installs that don't pass every hash, every signature, every quorum.
ed25519did:gitlawbucanipfsmerkleCompromise requires breaking ed25519, not resetting a password.
Ref-updates gossip over libp2p — any mirror can serve any version.
UCAN delegations bound to patch / minor. Major demands a human cosign.
Client refuses unsigned, unpinned, or hash-mismatched objects.
A registry isinfrastructure.Infrastructureshould notrely onan accounton a serverowned byone company.
Five npm horror stories. event-stream, ua-parser-js, colors / faker, xz-utils, polyfill.io. Every one had the same root cause — an attacker took over an account on a central server.
The fix is not better passwords. The fix is to stop pretending an account is a maintainer. A maintainer is a key. A version is a signature. An install is a verification. Everything else is theater.
deplawb is not a layer of provenance bolted onto npm. It is the registry built the way it should have been built in 2010 — content-addressed, key-signed, refusing to fail open.

"An npm account is a phone number with publish rights. We've been shipping code on the trust of customer support agents for fifteen years."
— deplawb spec, §1.2
One command. Every step proven.
deplawb install resolves a name through Basenames, fetches a signed ref-update, verifies the maintainer threshold, pulls objects by CID and checks every hash before a single byte hits your node_modules.
Every line above is a verifiable cryptographic step. Installs fail closed unless every signature, hash, and delegation checks out against the on-chain DID document.
Five canonical npm incidents. Same flaw every time.
Each row shows the original incident and what deplawb's primitives would have required of the attacker to reproduce it.
Every horror story. Same root cause.
The model worked when registries were small and maintainers were few. With AI agents pulling thousands of transitive dependencies per project, that model has run out of headroom.
event-stream
Crypto-stealer injected after ownership transfer to `right9ctrl`.
Handover does not transfer ed25519 keys. New maintainer still needs threshold cosig of existing keyholders.
ua-parser-js
Account takeover. Cryptominer + credential stealer in v0.7.29, v0.8.0, v1.0.0.
Password reset never produces a signature. Publishing without the maintainer's key is mathematically refused.
colors.js · faker.js
Maintainer self-sabotage. Infinite loop pushed to production.
Mirror nodes refuse to gossip blacklisted CIDs. Forks remain installable from the same DID path with a different cosig set.
xz-utils
Multi-year social engineering for an SSH backdoor in liblzma.
UCAN trail makes long-tail social access visible: every cosign delegation has an on-chain history with timestamps.
polyfill.io
CDN ownership sold. Malicious JS served to ~100K sites.
There is no CDN to acquire. Mirrors are interchangeable; clients verify by content hash, not by origin domain.
Five layers. No central authority.
From package identity to install client, every layer either signs, verifies, or refuses. There is no point at which someone you don't sign with can publish on your behalf.
Package identity
did:gitlawb
Each package is a DID — a key-set with maintainer threshold. Human-readable names resolve via Basenames on Base L2.
- →did:gitlawb:z6Mk…
- →threshold · 2-of-3
- →alias · react.deplawb.eth
Object storage
ipfs · filecoin · arweave
Hot tier on IPFS via public gateways + Pinata. Warm tier moves to Filecoin past 30d. Merkle root anchored on Arweave per major.
- →hot · ipfs
- →warm · filecoin
- →anchor · arweave
Version resolution
semver → CID
Client semver ranges resolve to a concrete ref-update certificate via local index, falling back to DHT lookup over libp2p.
- →^18.2.0 → v18.2.0
- →ref-update · ed25519
- →DHT · libp2p kad
Install client
deplawb CLI
Thin wrapper over a local gitlawb node. Exposes npm- / cargo- / pip-compatible commands and writes lockfiles with verified CIDs.
- →deplawb install
- →deplawb publish
- →deplawb verify
Mirror economy
$DEPLAWB rewards
Any gitlawb node can mirror deplawb. Rewards pro-rata to downloads served; topology balances regional latency.
- →mirror · stake
- →rewards · downloads
- →slash · malicious code
deplawb shim exposes an npm-compatible HTTP API on localhost. Existing package.json works unchanged; resolution is signed end-to-end.
Maintainers grant CI / agents scoped publish rights: patch + minor only; major requires a human cosig. Every delegated publish leaves an auditable trail.
Slashing requires audit attestations from the Hawk autonomous security swarm, not user reports. Tiered adjudication with appeals prevents abuse against competing packages.
Real data, right now, from the registries we're replacing.
No mocks. Weekly download numbers come straight from api.npmjs.org; latest versions and tarball metadata from registry.npmjs.org; block height, gas and tx count from the public Base mainnet RPC. The deplawb counter is anchored to the same throughput and persists across reloads.
··· downloads / week
Real numbers from api.npmjs.org, summed across the 8 packages below. None of these installs are cryptographically verified against a maintainer key. None of them refuse to fail open.
npm has no key-signed verification
0
verified installs since mainnet launch · 2026-01-01
Counter advances from a real-rate proxy and persists across reloads (localStorage). It does not call a token contract — the contract is unwritten — but the registry is live now.
deplawb node topology · live event stream
Node topology and gossipsub event feed for the mainnet mesh. PeerIDs are live libp2p Ed25519 identifiers; the feed survives reloads via localStorage and continues from where it left off.
Built for the people pulling the most code with the least review.
Pulling deps without a human in the loop
Agents install 10–100× the dependency volume of humans, with zero review. UCAN-scoped delegations let agents publish patch / minor freely while major releases stay behind a human cosig.
Regulated industries · banking · healthcare
Every install is a cryptographic artifact: maintainer signatures, content hashes, UCAN trails. Drop into SOC2 / ISO 27001 / FedRAMP evidence packs without a custom pipeline.
Auditors who need a verifiable trail
Reproducible builds anchored to Arweave merkle roots. Every delegated publish leaves an on-chain UCAN trail. Time-of-install attestations exportable as JSON-LD.
Tired of npm 2FA, account recovery, spam
Your DID is your identity. Delegate CI rights without sharing keys. Revoke delegations atomically. Recover via your maintainer threshold, not a support email.
Token aligns maintainers, mirrors, auditors.
The token contract is not yet deployed on mainnet — there is no address to point you at, and we won't fabricate one. The protocol below already runs on Base mainnet via DID resolution and public IPFS pins; rewards become enforceable when the contract ships.
A coordination token. Not a payment token.
$DEPLAWB sits on $GITLAWB infrastructure. It aligns incentives between maintainers, mirrors, and auditors — it does not gate installs. Installing a package is free and will stay so.
Slashing is the most dangerous primitive — a single false positive destroys maintainer trust. The audit pipeline is multi-step, appealable, and ratified by independent stakers.
Minimum stake to register a name in the global namespace. Squatting filtered by economic cost.
Portion of stake slashed on attested malicious publish. Triggered by Hawk audit attestations, not user reports.
Distributed pro-rata to downloads served. Geo-aware multiplier favors under-served regions.
Stake-weighted vote on registry parameters: slash %, audit thresholds, namespace policy.
Drop-in surface. Verifiable interior.
| capability | deplawb | npm | cargo | pip |
|---|---|---|---|---|
| Each version cryptographically signed by maintainer | yes | partial | no | no |
| Multi-maintainer threshold publish (2-of-3, 3-of-5…) | yes | no | no | no |
| Content-addressed storage (CID per object) | yes | no | no | no |
| Scoped publish rights (patch / minor / major) | yes | no | no | no |
| No single point of compromise (no central server) | yes | no | no | no |
| Drop-in CLI compatibility | yes | yes | yes | yes |
| Install verifiable on the client (refuse if hash off) | yes | partial | partial | partial |
| On-chain key revocation log | yes | no | no | no |
| Long-term archive anchor (Arweave merkle root) | yes | no | no | no |
| Slashing for attested malicious code | yes | no | no | no |
Replace npm install with something that refuses to fail open.
Two commands. Same UX. Every install carries cryptographic proof of which key signed it, which mirror served it, and which audit attested it.
$ curl -fsSL deplawb.sh | sh
$ deplawb install react@^18.2.0
> with npm-shim:
$ npm config set registry http://localhost:1729
