Proof of Commitment audits your npm and PyPI dependencies for supply chain risk — the exact attack profile that preceded ua-parser-js (October 2021) and event-stream (2018). Both were CRITICAL by these metrics before the attacks.
Zero install. One command. Results in seconds.
# Audit specific packages
npx proof-of-commitment axios zod chalk
No global install. npx fetches and runs it once, cached for next time.
The web demo also works if you prefer a browser:
getcommit.dev/audit
Each package is scored 0–100. Lower is higher risk. Four signals drive the score.
┌─────────────────────────────────────────────────────────────────┐
│ Supply Chain Audit — 3 packages │
├──────────┬──────────┬───────┬─────────────┬──────────┬─────────┤
│ Package │ Risk │ Score │ Maintainers │ Dls/week │ Age │
├──────────┼──────────┼───────┼─────────────┼──────────┼─────────┤
│ axios │ CRITICAL │ 86 │ 1 │ 100M │ 11.6y │
│ zod │ CRITICAL │ 83 │ 1 │ 159M │ 6.1y │
│ chalk │ CRITICAL │ 75 │ 1 │ 411M │ 12.7y │
└──────────┴──────────┴───────┴─────────────┴──────────┴─────────┘
⚠ 3 CRITICAL packages found
Single maintainer + >10M weekly downloads = the ua-parser-js attack profile How long has the package existed? Abandoned packages get reactivated for attacks.
Single maintainer + millions of weekly downloads = the ua-parser-js/event-stream attack surface.
Regular releases signal active oversight. Long gaps = vulnerability accumulation.
Growing packages attract more scrutiny and attacks. Rapid adoption + single maintainer = high risk.
One workflow file. Auto-detects your dependencies. Posts the audit table as a PR comment — updated on re-run, no comment spam.
name: Supply Chain Audit
on:
push:
branches: [main]
paths: [package.json, requirements.txt]
pull_request:
paths: [package.json, requirements.txt]
jobs:
audit:
runs-on: ubuntu-latest
permissions:
pull-requests: write # needed for PR comments
steps:
- uses: actions/checkout@v4
- name: Commit Supply Chain Audit
uses: piiiico/proof-of-commitment@main
with:
fail-on-critical: false # set true to block merges on CRITICAL
comment-on-pr: true # posts audit table on the PR, updates on re-run has-critical, critical-count, audit-summaryfail-on-critical: true blocks merges when CRITICAL packages are found
The IDE hook intercepts npm install, pip install, cargo add, and go get
before they run. A single poc hook wires up both Cursor's
beforeShellExecution and Claude Code's PreToolUse from one command.
CRITICAL packages get blocked. HIGH triggers a confirmation prompt. Clean installs pass through silently.
$ npx proof-of-commitment hook
wrote ~/.commit/cursor-hook.js
configured .cursor/hooks.json
configured .claude/settings.json
# That's it. Next install attempt in Cursor or Claude Code hits the gate.
# Inside the agent chat:
> Install lodash
# → Hook intercepts → lodash scores 81 / CRITICAL → install blocked.
# → Agent sees: "lodash blocked: single maintainer, 148M/wk downloads."
Same hook script serves both clients — Cursor's beforeShellExecution spec (v1.7+) and Claude Code's PreToolUse. The hook auto-detects which client called it and replies in the matching format. Shared scoring API means rate limits and API keys carry across.
Full walkthrough →
The MCP server lets your AI assistant audit dependencies on demand — no install, no API key. Add it once to your MCP config, then ask naturally.
{
"mcpServers": {
"proof-of-commitment": {
"type": "streamable-http",
"url": "https://poc-backend.amdal-dev.workers.dev/mcp"
}
}
} 12 MCP tools — dependency auditing (npm, PyPI, Cargo, Go), GitHub repo scoring, dependency-tree graph analysis, and Norwegian business registry. Free anonymous tier is rate-limited to 100 calls/day per IP. Get a free API key to lift the wall, or upgrade to Developer/Pro for batch tools and team monitoring. Full reference →
Full API reference, response schema, rate limits, and REST examples.