npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

a2a-trustgate

v1.5.13

Published

A2A TrustGate CLI — Safety, compliance, and governance for AI agents. Screen every action before it executes.

Readme

a2a-trustgate

npm version EU AI Act OCSF audit MCP

Compliance for AI systems in production.

You put an AI agent in production. Now prove it's safe — to your auditor, your regulator, your board.

A2A TrustGate screens every action an agent takes before it runs, and writes the decision to an immutable, SIEM-ready audit trail. Not a policy document that says agents should behave — a control that stops the ones that don't, and the evidence to prove it.

  • Enforced, not promised. Every agent action passes a 4-gate firewall before it executes. Out-of-policy actions are blocked in milliseconds, not flagged after the fact.
  • An audit trail an auditor will accept. Every decision — allowed or blocked, with reasoning — lands in an append-only, OCSF-native log that drops straight into Splunk, Sentinel, Chronicle or Elastic.
  • Mapped to the frameworks you're measured against. Export the same evidence against EU AI Act, SOC 2, NIST AI RMF, HIPAA and academic-integrity controls — article by article, control by control.
  • Provable scope. Each agent may act only within the permissions it was granted. Deny-by-default, and every boundary is in the log.

Who it's for: compliance and risk teams putting AI into regulated production — financial services, healthcare, network operations, creative/IP rights, enterprise AI adoption, and research institutions. If someone can ask you "prove your AI is safe," this is the answer.

a2a demo — screen an agent action in one command

Agent proposes an action, the gate screens it, the decision lands in the audit trail — watch the full demo.


The audit trail an auditor will accept

Most "AI governance" is a PDF that describes intentions. A2A produces evidence. Every screened action becomes a genuine OCSF Detection Finding — the same schema your SOC already ingests — with a tamper-evident content hash and the full decision reasoning:

a2a audit                          # recent decisions, allowed and blocked
a2a audit export --format ocsf     # OCSF Detection Findings — straight into your SIEM
a2a audit export --format csv      # hand a spreadsheet to an auditor
  • OCSF-native (schema 1.1.0). Not a bespoke JSON blob labelled "OCSF" — real Detection Findings that Splunk / Sentinel / Chronicle / Elastic parse without a custom connector.
  • Tamper-evident. Every record carries a content hash; the export is append-only. You can prove the log wasn't edited after the fact.
  • Framework-mapped exports. The same underlying events export against the control set you're being audited on:

| Framework | What you can hand over | |---|---| | EU AI Act | Article-by-article evidence of screening, logging and human oversight (Art. 12, 14, 26, 53) | | SOC 2 | Control-mapped decision log (CC-series) | | NIST AI RMF | GOVERN / MAP / MEASURE / MANAGE evidence | | HIPAA | Security & Privacy Rule access decisions | | Academic integrity / QAA | Research-ethics and responsible-AI trail |

EU AI Act deployer? Read the EU AI Act compliance reference — an article-by-article crosswalk (Art. 12 record-keeping, Art. 14 human oversight, Art. 26 deployer obligations) with citations to the official EUR-Lex text. The Regulation becomes generally applicable 2 August 2026.

Enforced before it runs — the 4-gate firewall

Compliance you can prove starts with a control that actually stops things. Every action passes four gates before it's allowed to execute:

  • Gate 1 — deterministic rules. Pattern and policy screening in milliseconds: destructive operations, secret exfiltration, injection signatures. No model call.
  • Gate 2 — self-evaluation. For anything Gate 1 can't clear outright: should this run, given the context and the tenant's policy?
  • Gate 3 — behavioral analysis. Abuse patterns across a run — bursts, probing, escalation — not just the single action in isolation.
  • Gate 4 — scope enforcement. Per-agent permissions: each agent may act only within the scope it was granted. Out-of-scope actions are denied by default.

The firewall only ever tightens a decision — allow → review → block. A safe action stays fast; a risky one is stopped and recorded with the reason.


For developers — screen an action in one command

The whole control is a CLI (and an MCP server). Wrapping a risky step is one line, and exit codes make it scriptable:

a2a eval "rm -rf ./build"          # ✓ ALLOWED   (exit 0)
a2a eval "rm -rf /"                # ✗ BLOCKED   (exit 1) — filesystem destruction pattern
a2a eval "command" --context ctx   # add decision context   (exit 2 = needs review)

| Code | Meaning | |------|---------| | 0 | Allowed — safe to execute | | 1 | Blocked — do not execute | | 2 | Needs review — Gate 2 self-evaluation required |

Works with: Claude Code · Cursor · Cline · Windsurf · Aider · Codex · any MCP client.

Install

npm install -g a2a-trustgate

The npm package is a2a-trustgate; the command is a2a.

Quick Start

# Create a tenant (agent-first — human activates the key)
a2a signup my-company --local

# Screen a command — exit 0 = allowed, 1 = blocked, 2 = needs review
a2a eval "rm -rf ./build"
# ✓ ALLOWED

a2a eval "rm -rf /"
# ✗ BLOCKED: filesystem destruction pattern

# See plan, usage, limits
a2a status

# Full reference
a2a --help

Your key is issued immediately but returns 402 until you start your 7-day free trial ($0 today) — a2a signup prints the activation link. Cancel before day 7 and you're never charged.

The eval call has a few knobs, and it's scriptable — wrap any risky step:

a2a eval "command" --gate2 self    # self-evaluate (default)
a2a eval "command" --gate2 skip    # Gate 1 only (fast path)
a2a eval "command" --pipeline ID   # route through a named pipeline

if a2a eval "rm -rf ./build" --json 2>/dev/null; then
  rm -rf ./build
fi

Built for six kinds of team

A2A screens the same way for everyone and produces the same audit trail — but the surface each team touches, and the framework they're measured against, is different. Pick yours.

Network operations — a gate in front of every device

Your agents run commands against routers, switches, and sites. A2A registers each device, enforces a per-device policy, and gives you a killswitch that stops every agent at once.

a2a device add --name core-rtr-1 --host 10.0.0.1 --vendor cisco
a2a device policy DEVICE-ID --mode strict --require-approval --max 5
a2a device lock DEVICE-ID           # freeze a single device
a2a killswitch                      # freeze every agent, everywhere
a2a device import --file hosts.csv  # bulk onboard (name,host,vendor,model,role,siteCode)

| Agent screens a command | Human sees the device-lock | |---|---| | network-ops terminal cast | network-ops dashboard |

Watch the full clip: network-ops →

AI agents — agent-to-agent, screened and signed

Multi-agent systems where one agent's output is another's input. A2A gives them scoped workspaces and HMAC-signed channels, so a rogue or injected message can't cross a boundary you didn't grant.

a2a workspace create "research-swarm"
a2a workspace WS-ID add-agent --name planner --role expert
a2a workspace WS-ID enforce --agent planner "command"   # screen an agent's action
a2a channel create ops-bus
a2a channel CH-ID send "interface frozen — you're clear to build"  # HMAC-signed

| Agent-to-agent evaluate | Human sees the block + audit | |---|---| | ai-agents terminal cast | ai-agents dashboard |

Watch the full clip: ai-agents →

Regulated industries — an immutable, exportable audit trail

Every decision — allowed or blocked, with reasoning — lands in an append-only log you can export for an auditor. OCSF-native Detection Findings, EU AI Act aligned.

a2a audit                          # recent decisions
a2a audit export --format ocsf     # OCSF Detection Findings → your SIEM
a2a audit export --format csv      # hand to an auditor (csv/json)
a2a approvals                      # human-in-the-loop queue
a2a approve TASK-ID
a2a reject TASK-ID "out of policy" # reason recorded in the trail

| Command screened | Human exports the audit | |---|---| | regulated terminal cast | regulated dashboard |

Watch the full clip: regulated →

Creative & IP owners — licence before access

Register your catalogue, mint scoped licences, and every agent that reaches for an asset is checked against a rights log. Access is granted by licence, not by scraping.

a2a catalogue create "The Back Catalogue"
a2a catalogue licence create --catalogue CAT-ID --email [email protected] --scope read
a2a catalogue access-log           # who reached for what, and whether it was licensed
a2a catalogue content-sources

| Agent requests an asset | Human sees the rights-log | |---|---| | creative terminal cast | creative dashboard |

Watch the full clip: creative →

IP aggregators & distributors — onboard an entire catalogue in one command

Represent many rights holders? A distributor or aggregator holds one provider key and onboards every artist's repertoire in bulk — each work stamped with an ownerRef (the artist's stable id in your system) so reads and writes are hard-scoped per rights holder. The same integration works for one artist or a million.

Export your catalogue as CSV (CD Baby, DistroKid and most distributors already do), then:

# One-time: get a provider key from your A2A partner account, then
export A2A_API_KEY=a2a_provider_xxxxxxxx

# Preview the column mapping before writing anything
a2a ip-aggregator import repertoire.csv --dry-run

# Bulk-import the whole repertoire (idempotent — safe to re-run)
a2a ip-aggregator import repertoire.csv

a2a ip-aggregator owners                          # every rights holder + work count
a2a ip-aggregator works --owner-ref crosswinds    # one artist's registered works
a2a ip-aggregator opt-out --owner-ref crosswinds --all   # bulk AI/TDM opt-out (EU AI Act Art. 53)
a2a ip-aggregator portal-link --owner-ref crosswinds     # white-label artist portal — drop the artist in, no second login
a2a ip-aggregator access-log --owner-ref crosswinds      # the provable trail, per artist

# The licensee side (the AI company that wants to use the catalogue):
a2a ip-aggregator catalogue                              # the licensable catalogue (opted-out works excluded)
a2a ip-aggregator licensee-link --licensee-ref acme-ai   # white-label licensee portal — browse + request a scoped licence

A CD Baby-style CSV maps automatically — headers like Artist ID, Artist, Track Title, ISRC, TDM Opt-Out are recognised (override any column with --owner-ref-col / --isrc-col / --title-col):

Artist ID,Artist,Track Title,ISRC,TDM Opt-Out
crosswinds,Crosswinds,All Good Things,USCGH1915861,true
midnight_owls,Midnight Owls,Neon Rain,GBK4Y2100017,false

portal-link mints a short-lived signed handoff URL, so you can embed a white-label rights portal straight into your own product — your brand, no A2A login, per-artist isolated. This is the drop-in pattern behind BandSaaS; the same one an aggregator embeds for its whole roster. licensee-link mints the mirror portal for an AI company (a licenseeRef) to browse the licensable catalogue and request scoped licences — the artist approves in their own portal, which issues a revocable licence. Both sides stay inside your product.

Work orders — govern the authority, not just the action

The gates prove every action was screened. A work order proves the layer above: who authorised this work, under what authority, toward what outcome — and binds it to a signed, tamper-evident completion record. This is the enterprise governance layer, sitting directly on top of the 4-gate firewall.

# A named human raises a governed directive with RACI + a scope grant
a2a work-order create --ref WO-2026-0142 --title "Summarise Q3 catalogue" \
  --directive "Summarise tracks in the Q3 batch for the licensing review" \
  --accountable [email protected] --authority "licensing-review-ticket-88" \
  --domain creative --scope "read,summarise.*"

# --domain applies your sector's profile: network-ops (change request), regulated
# (work order / Art 4 decision record — authority required), creative (usage
# authorisation), enterprise-ai (approved use), university (research protocol —
# ethics ref required), ai-agents (mission). Add sector context with --meta
# key=value, e.g. --meta grantRef=EPSRC-42 or --meta aiTools=copilot,chatgpt

a2a work-order authorise WO-...     # human sign-off: DRAFT → AUTHORISED (Art. 14)
a2a work-order attach WO-... TASK   # attach the gated tasks that fulfil it
a2a work-order complete WO-... --outcome "42 tracks summarised, 0 blocked"
a2a work-order verify WO-...        # re-derive the hashes — proves nothing was altered
a2a work-order precedent "summarise catalogue for licensing"   # what was authorised before

Once authorised, the work order's scope grant becomes the ceiling of what the job may do — an action outside it is blocked at evaluation time, even if the agent's own role would allow it. The completion record is signed with a key only A2A can reproduce, so an auditor (or the accountable human) can re-verify the whole chain — directive → actions → gate verdicts → outcome — and detect any later tampering.

Enterprise AI — govern the tools your staff already use

ChatGPT, Claude, Copilot are already in your building. Register each tool, screen what it's asked to do, and get one audit trail across all of them.

a2a ai-tools add "ChatGPT" --type chatbot
a2a ai-tools                       # every registered tool
a2a ai-tools update 0 --status paused

| Tool action screened | Human sees approval + audit | |---|---| | enterprise-ai terminal cast | enterprise-ai dashboard |

Watch the full clip: enterprise-ai →

Universities — research governance without the friction

Approvals, scope enforcement, and an exportable trail that maps to research-ethics and UKRI responsible-AI requirements. One URL for a researcher to connect, governance for the board.

a2a eval "command" --context "grant-XYZ research pipeline"
a2a approvals                      # ethics/governance queue
a2a audit export --format csv      # for the board or the funder

| Research action screened | Human sees governance + audit | |---|---| | university terminal cast | university dashboard |

Watch the full clip: university →

Drop it into your framework

Generate a ready-made wrapper for the SDK you already use — the screen call is one line:

a2a generate node        # a2a-safety.js
a2a generate python      # a2a_safety.py
a2a generate anthropic   # tool_use wrapper
a2a generate openai      # tool_call wrapper

MCP Server

Prefer tools over a CLI? a2a ships an MCP server. Point Claude Code (or any MCP client) at it and your agent gets 49 native tools: evaluate, pipelines, workspaces, channels, devices, sites, catalogues, audit, approvals, admin. The whole platform.

claude mcp add a2a -- a2a mcp-serve

For clients that use a JSON config (Cline, Cursor, Windsurf), pass your API key via the A2A_API_KEY environment variable. The MCP server runs outside your project directory, so it will not pick up .a2a/config.json:

{
  "mcpServers": {
    "a2a": {
      "command": "a2a",
      "args": ["mcp-serve"],
      "env": { "A2A_API_KEY": "a2a_your_key_here" }
    }
  }
}

No key yet? Start it without one: the server boots in onboarding mode and can guide signup, then add the key and restart.

Remote MCP — zero install

No CLI at all? Claude Web, Claude Desktop, Raycast, or any hosted MCP client can connect straight to our remote server. Same 49 tools, same API key, nothing to install:

URL:  https://mcp.a2ainfrastructure.com/sse
Auth: Authorization: Bearer YOUR_API_KEY

Setup guide: MCP quickstart.

Features

  • Evaluate — screen any command through the 4-gate firewall, allow / block / needs-review, in milliseconds
  • Pipelines — named screening routes with their own policy and task history
  • Workspaces — scoped multi-agent enforcement, one agent's action screened against the tenant policy
  • Channels — HMAC-signed agent-to-agent messaging, contract-scoped
  • Devices & sites — per-device policy, lock, bulk CSV import, and a global killswitch (network-ops)
  • Catalogues & licences — register IP, mint scoped licences, access-log every reach (creative / IP owners)
  • IP aggregator — one provider key, bulk-import many rights holders' repertoires (CSV), per-artist ownerRef isolation + white-label portal links (distributors / aggregators)
  • AI tools registry — govern ChatGPT / Claude / Copilot behind one audit trail (enterprise-ai)
  • Approvals — human-in-the-loop queue, approve/reject with reason recorded
  • Audit trail — immutable, OCSF-native Detection Findings, EU AI Act aligned, exportable as OCSF / CSV / JSON
  • MCP server — 49 tools, local (a2a mcp-serve) or fully remote (mcp.a2ainfrastructure.com)
  • Framework wrappers — one-line generate for Node, Python, Anthropic, OpenAI

Pricing: every plan starts with a 7-day free trial — card required, $0 today, cancel any time before day 7 and you're never charged. The full 4-gate firewall, behavioral analysis and OCSF-shaped audit are on every plan; higher tiers add volume, webhooks, custom rules, dedicated sandboxes and SSO.

| Plan | Price | Screenings / mo | Overage per 1k | |------|-------|-----------------|----------------| | Starter | $19/mo | 5,000 | $1.00 | | Pro | $99/mo | 100,000 | $0.25 | | Enterprise | $299/mo | 1,000,000 | $0.10 |

Verified education & research: Institutional $79/mo. Full pricing →.

Authentication

API key resolution (first match wins):

  1. --key flag
  2. A2A_API_KEY environment variable
  3. ./.a2a/config.json (project-local)
  4. ~/.a2a/config.json (global)
a2a login            # store globally (~/.a2a/)
a2a login --local    # store per-project (./.a2a/) — add .a2a/ to .gitignore
a2a config           # show which config is active

Agent Integration

Add to your CLAUDE.md, .cursorrules, .clinerules, .windsurfrules, or AGENTS.md:

## A2A TrustGate
This project screens agent actions through A2A before they execute.
Use the `a2a` CLI. Config is in .a2a/config.json (auto-loaded).
If not configured: a2a login --local --key YOUR_KEY

Before running any risky command, screen it:
  a2a eval "the command" --json   # exit 0 = run it, 1 = do not, 2 = needs review

Why this exists

An agent that can act is an agent that can act wrongly — and by the time you read the log, it's done. I wanted a gate in front of the action, not a report after it: deterministic where it can be, self-evaluating where it can't, and audited either way. It's early and I'm iterating fast — if something's rough or missing, tell us.

Documentation

Licence

Proprietary — Tyga.Cloud Ltd. See LICENSE.