Install-path firewall
Refuses malicious packages on the install path — before a developer or a build ever sees them.
One signed policy bundle. Sixteen registries — npm, PyPI, Maven, Docker, and twelve more. The same Rego decision fires at PR, install, K8s admission, and runtime. Twenty-five supply-chain signals beyond CVE. SaaS, VPC, or air-gapped — one binary.
Monitor mode in your first session. No card. No registry migration. Free tier is permanent.
Works with package managers and registries across your stack
Used by teams in fintech, devops, and platform engineering to keep dependency policy on the install path.
- Fintech
- DevOps platforms
- Platform engineering
- AI / ML teams
- Healthcare engineering
Customer logos arrive once permission is on file. We won't ship someone else's brand on this page without it.
Compared to the alternatives
More than a registry. Not a scanner.
The two layers buyers most often land on first — a hosted registry or an SCA / dependency scanner — solve real problems, but neither runs on the install path. Chainsaw is the layer in between: a firewall on the request, not a destination, not a dashboard.
More than a registry
vs Cloudsmith · JFrog · Nexus · Verdaccio
- Sits in front of npm, PyPI, Maven, Docker. No migration. Keep the registry you have, or replace it — Chainsaw hosts your internal artifacts too.
- Refuses on the install path. Caching alone doesn't decide what's safe to install.
- One Rego rule, every surface — PR, install, K8s admission, runtime. A registry doesn't reach those.
Not a scanner
vs Socket · Snyk · Sonatype · Mend
- Refuses on install — before bytes land. Not a comment on the PR after the fact.
- Refuses on 25 signals SCAs miss — install scripts, maintainer takeovers, worm bursts, hidden Unicode, AI pickle ops.
- Org-wide enforcement, not an opt-in CLI per developer.
Scope, named
What Chainsaw won't do
One control point on the install path. Compose with the tools already good at the rest.
-
Won't read your source code.
Package metadata, manifests, lockfiles. Never your repo.
-
Won't open PRs.
Renovate and Dependabot own patch mechanics. Our decisions feed them.
-
Won't audit your CI.
Branch protection and OIDC trust live in a CI-posture product.
-
Won't crawl for secrets at rest.
TruffleHog and Gitleaks own that. We stop install-time exfiltration.
-
Won't ship a laptop agent.
Hardening goes through MDM payloads (Jamf, Intune). No daemon, no kernel module.
-
Won't manage vendor SBOMs.
TPRM platforms ingest those. We produce SBOMs for what flows through the proxy.
Why it exists
Four things change when policy runs on the install path
How it operates
Five surfaces, one decision.
Every install, MCP-agent prompt, and admission decision lands as a signed audit row. One Rego floor at the hub; spokes inherit and override within bounds you set.
- REFUSED
left-pad@1.3.1
ci · npm
- MONITOR
cryptography==42.0.0
dev · pip
- ALLOWED
@chainsaw/sdk@2.1.0
ci · npm
- REFUSED
log4j-core@2.17.2
k8s · maven
Auto-sorting install queue · refuses on the install path
mcp · agent prompt
MCP-agent prompt · consulted before install
hub → 4 spokes
- BU-EU
- BU-APAC
- BU-AMER
- BU-EMEA
Hub-and-spoke federation · live spoke health
25 supply-chain signals · live
25 supply-chain signals beyond CVE
signed audit row
- ts2026-05-26T09:14:22Z
- actorci@platform-eu
- packagerequests@2.32.3
- signalmaintainer takeover
- verdictrefused
- scopeBU-EU · prod
One signed audit row · same export for SOC 2 + ISO 27001
See it in action
One config line, one decision — at install time.
Your team's .npmrc points at Chainsaw — that's the whole setup. No agent, no certificate, no MITM proxy on your network. When a developer tries to install a typosquat, Chainsaw evaluates it against policy before the registry sees it and refuses. The install never happens.
Quickstart
Your first block, the first time you run install
Every new org ships with two demo policies enabled — block known malware, block suspected typosquats. Sign up, copy your credentials, point npm at us, run a single install, and feel Chainsaw refuse it. Edit or delete the demo rules once you've seen them fire.
-
Copy your client credentials
Dashboard → Access → Client credentials. You'll get a CLIENT_ID and CLIENT_SECRET — the secret is shown once, so copy it now.
-
Point npm at Chainsaw
One config line. No agent, no certificate, no MITM proxy on your network. Paste your credentials into the URL:
npm config set registry https://CLIENT_ID:CLIENT_SECRET@chain305.com/chainproxy/repository/@default/npmjs/ -
Run the demo install
Pre-seeded demo policies block known-malicious and typosquat packages on every new org. Try one and watch it refuse.
npm install lodahs
Every install, one audit row
One audit row per install. SOC 2 and ISO 27001 use the same export.
Rule fired, reason, repo, CI job, user, timestamp. Filter the stream, drill into a block, ship to your SIEM.
Install path
chainsaw-proxy · live decisions
- ALLOWED
@chainsaw/express@4.21.0
developer · npm · cache hit · signed bundle
- REFUSED
requests==2.32.3
ci · pip · maintainer takeover · 6d old
- INSPECTING
axios@1.7.2
developer · npm · publish velocity anomaly
- ALLOWED
actions/checkout@v4
ci · github actions · policy floor · KEV clear
One audit row per install · refuses on the install path
Deploy where your compliance lets you
SaaS, your VPC, or fully air-gapped. Same binary.
The Option B hybrid runs the data plane inside your network and pulls only signed threat-intel feeds outbound — no customer telemetry crosses the boundary. SOC 2, HIPAA, FedRAMP, and EU data-residency programs all clear without a separate enterprise SKU.
-
Managed SaaS
We host the stack. HTTPS endpoint, admin URL, SSO. Lowest-effort path for teams without compliance constraints.
-
Your VPC (data plane on-prem)
Customer-controlled Postgres, blob store, dashboard, audit logs. Vendor-managed signed-feed bundles pull one-way; no inbound connection from us, ever.
-
Air-gapped
CHAINSAW_OFFLINE=1 disables every phone-home path. Sideload intelligence on the cadence your one-way diode allows. Same Rego, same audit row.
One product, four jobs
Same install-path firewall. Pick the view that fits your job.
If you run AppSec
Cut the window between disclosure and defence. A new CVE drops, you push one policy edit, and the affected version stops installing everywhere. No coordinated upgrade PRs. Supply-chain attacks SCA misses (install scripts, maintainer takeover, worm bursts) run on the same path.
- The four scoring systems we let you block on, and why we refuse to make CVSS the default
- All 25 signals on every tier, including the ones SCA tools quietly omit on free
- Why the audit row carries the override path, not just the failure reason — and what stops getting asked in the post-incident review
If you're a developer evaluating this
Your .npmrc and pip.conf pick up a token. Everything else stays the same. When a package passes policy, your install completes exactly as it does today. When it fails, the error tells you what rule fired and who can unblock it.
- What changes in your repo when you turn this on: one line in .npmrc. That's the whole diff.
- The single line that makes Yarn workspaces, pnpm, and Turbo behave identically — and the one CI step you can probably delete after
- Cache means CI usually gets faster, not slower. Measured, not promised.
If you own DevSecOps or Compliance
Policy on the install path, evidence in the dashboard. The same license, version, and provenance rules apply in CI, on laptops, and in Dockerfiles. Audit trails export straight to SOC 2, ISO 27001, and HIPAA reviews without a separate collection step.
- The SBOM auditors actually accept. Generated at install time, not stitched together at audit time.
- Per-tenant rules with exception expiry. No permanent allow-list rot.
- The three SIEM exports auditors stopped asking follow-up questions about — and why a CSV download was never one of them
If you're in Enterprise IT
One deployment, every engineering org inherits the baseline. Teams layer local rules on top without a central-vs-team fight. Managed SaaS, your own cloud, or fully air-gapped: same binary, same API, same policy format.
- Same binary in SaaS, your VPC, or fully air-gapped. The deployment model isn't a different product.
- SAML, OIDC, and SCIM on Unlimited. No SSO tax dressed up as a feature.
- Why hub-and-spoke inheritance ends the central-vs-team fight — and what the team lead actually sees before an override ships
Objections, handled
Common questions
How is Chainsaw different from Cloudsmith, JFrog, or Nexus?
Those host packages. Chainsaw refuses them on the install path. There's no migration — your developers keep pulling from npm, PyPI, Maven, Docker, and the rest, and Chainsaw decides which requests get through. Run both if you like: your registry hosts internal artifacts, Chainsaw is the policy layer on every public-registry install. See /vs-artifact-managers/ for the full diff.
How is Chainsaw different from Socket, Snyk, or Sonatype?
Those report. Socket comments on the PR; SCAs file dashboard findings. Chainsaw refuses on the install path, before bytes land. The same 25 signals — install scripts, maintainer takeover, worm bursts, hidden Unicode, AI pickle ops — fire on every tier including free, and the same Rego rule fires at PR, install, K8s admission, and runtime. Run both if you want; /vs-sca/ has the per-ecosystem signal map and the full diff.
Will this break our existing CI?
Not if you start in monitor mode. Every rule logs decisions without blocking, so you measure impact and add exceptions before you flip to enforce. Repeat installs also hit our cache, so CI usually gets faster, not slower.
What happens if Chainsaw itself goes down?
In monitor mode, Chainsaw fails open with an audit record so installs never break. In enforce mode, the default is fail-closed, but you can flip to fail-open with cache-only fallback per policy. The cache continues to serve previously-allowed installs during a full outage.
Does this work with monorepos, Yarn workspaces, pnpm?
Yes. Chainsaw proxies the registry; your workspace layout is untouched. Turbo, Nx, Lerna, Yarn workspaces, and pnpm workspaces all work without modification.
What does it cost?
Free to start (500 MB / 1 GB / 3 users). Pro at $149/mo for teams rolling out in production. Unlimited at $1,199/mo for orgs that need enterprise integrations or on-prem. See /pricing/ for the full breakdown.
Are webhooks an enterprise-only feature?
No. Webhooks are on every plan. Only third-party integrations (SIEM, SCIM) and on-prem deployment are gated to Unlimited.
Can we run this on-prem or air-gapped?
Yes on the Unlimited plan. The CLI can bake the server URL at build time so air-gapped users never see a public origin. For custom deployments, book a 30-minute call.
What about SSO — which plan do I need?
SAML, OIDC, and SCIM provisioning are Unlimited-only. Password plus TOTP works on Free and Pro.
Ready to see what you'd be blocking?
One session now, or the incident report later.
Free tier is permanent. Point one package manager at Chainsaw, run monitor mode for a week, read the report of what would have been refused. If it's useful, upgrade. If it isn't, you spent one session instead of the weekend you'd spend writing the postmortem.