{
  "markdown": "# a2a-trustgate\n\n[![npm version](https://img.shields.io/npm/v/a2a-trustgate.svg)](https://www.npmjs.com/package/a2a-trustgate)\n[![EU AI Act](https://img.shields.io/badge/EU_AI_Act-aligned-14b8a6)](https://a2ainfrastructure.com/compliance)\n[![OCSF audit](https://img.shields.io/badge/audit-OCSF_native-14b8a6)](#the-audit-trail-an-auditor-will-accept)\n[![MCP](https://img.shields.io/badge/MCP-49_tools-blue)](https://a2ainfrastructure.com/quickstart/mcp)\n\n# Compliance for AI systems in production.\n\n**You put an AI agent in production. Now prove it's safe — to your auditor, your regulator, your board.**\n\nA2A 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.\n\n- **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.\n- **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.\n- **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.\n- **Provable scope.** Each agent may act only within the permissions it was granted. Deny-by-default, and every boundary is in the log.\n\n**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.\n\n[![a2a demo — screen an agent action in one command](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/a2a-hero-1200.gif)](https://a2ainfrastructure.com/#demo)\n\n*Agent proposes an action, the gate screens it, the decision lands in the audit trail — [watch the full demo](https://a2ainfrastructure.com/#demo).*\n\n---\n\n## The audit trail an auditor will accept\n\nMost \"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:\n\n```bash\na2a audit                          # recent decisions, allowed and blocked\na2a audit export --format ocsf     # OCSF Detection Findings — straight into your SIEM\na2a audit export --format csv      # hand a spreadsheet to an auditor\n```\n\n- **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.\n- **Tamper-evident.** Every record carries a content hash; the export is append-only. You can prove the log wasn't edited after the fact.\n- **Framework-mapped exports.** The same underlying events export against the control set you're being audited on:\n\n| Framework | What you can hand over |\n|---|---|\n| **EU AI Act** | Article-by-article evidence of screening, logging and human oversight (Art. 12, 14, 26, 53) |\n| **SOC 2** | Control-mapped decision log (CC-series) |\n| **NIST AI RMF** | GOVERN / MAP / MEASURE / MANAGE evidence |\n| **HIPAA** | Security & Privacy Rule access decisions |\n| **Academic integrity / QAA** | Research-ethics and responsible-AI trail |\n\n> **EU AI Act deployer?** Read the [EU AI Act compliance reference](./docs/eu-ai-act.md) — 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**.\n\n## Enforced before it runs — the 4-gate firewall\n\nCompliance you can prove starts with a control that actually stops things. Every action passes four gates before it's allowed to execute:\n\n- **Gate 1 — deterministic rules.** Pattern and policy screening in milliseconds: destructive operations, secret exfiltration, injection signatures. No model call.\n- **Gate 2 — self-evaluation.** For anything Gate 1 can't clear outright: *should this run, given the context and the tenant's policy?*\n- **Gate 3 — behavioral analysis.** Abuse patterns across a run — bursts, probing, escalation — not just the single action in isolation.\n- **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.\n\nThe firewall only ever *tightens* a decision — allow → review → block. A safe action stays fast; a risky one is stopped and recorded with the reason.\n\n---\n\n## For developers — screen an action in one command\n\nThe whole control is a CLI (and an MCP server). Wrapping a risky step is one line, and exit codes make it scriptable:\n\n```bash\na2a eval \"rm -rf ./build\"          # ✓ ALLOWED   (exit 0)\na2a eval \"rm -rf /\"                # ✗ BLOCKED   (exit 1) — filesystem destruction pattern\na2a eval \"command\" --context ctx   # add decision context   (exit 2 = needs review)\n```\n\n| Code | Meaning |\n|------|---------|\n| 0 | Allowed — safe to execute |\n| 1 | Blocked — do not execute |\n| 2 | Needs review — Gate 2 self-evaluation required |\n\n**Works with:** Claude Code · Cursor · Cline · Windsurf · Aider · Codex · any MCP client.\n\n## Install\n\n```bash\nnpm install -g a2a-trustgate\n```\n\nThe npm package is `a2a-trustgate`; the command is `a2a`.\n\n## Quick Start\n\n```bash\n# Create a tenant (agent-first — human activates the key)\na2a signup my-company --local\n\n# Screen a command — exit 0 = allowed, 1 = blocked, 2 = needs review\na2a eval \"rm -rf ./build\"\n# ✓ ALLOWED\n\na2a eval \"rm -rf /\"\n# ✗ BLOCKED: filesystem destruction pattern\n\n# See plan, usage, limits\na2a status\n\n# Full reference\na2a --help\n```\n\n> 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.\n\nThe eval call has a few knobs, and it's scriptable — wrap any risky step:\n\n```bash\na2a eval \"command\" --gate2 self    # self-evaluate (default)\na2a eval \"command\" --gate2 skip    # Gate 1 only (fast path)\na2a eval \"command\" --pipeline ID   # route through a named pipeline\n\nif a2a eval \"rm -rf ./build\" --json 2>/dev/null; then\n  rm -rf ./build\nfi\n```\n\n## Built for six kinds of team\n\nA2A 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.\n\n### Network operations — a gate in front of every device\n\nYour 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.\n\n```bash\na2a device add --name core-rtr-1 --host 10.0.0.1 --vendor cisco\na2a device policy DEVICE-ID --mode strict --require-approval --max 5\na2a device lock DEVICE-ID           # freeze a single device\na2a killswitch                      # freeze every agent, everywhere\na2a device import --file hosts.csv  # bulk onboard (name,host,vendor,model,role,siteCode)\n```\n\n| Agent screens a command | Human sees the device-lock |\n|---|---|\n| [![network-ops terminal cast](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/network-ops-cast.gif)](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/network-ops.mp4) | [![network-ops dashboard](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/network-ops-plate.png)](https://a2ainfrastructure.com/use-cases/network-ops) |\n\n*Watch the full clip: [network-ops →](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/network-ops.mp4)*\n\n### AI agents — agent-to-agent, screened and signed\n\nMulti-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.\n\n```bash\na2a workspace create \"research-swarm\"\na2a workspace WS-ID add-agent --name planner --role expert\na2a workspace WS-ID enforce --agent planner \"command\"   # screen an agent's action\na2a channel create ops-bus\na2a channel CH-ID send \"interface frozen — you're clear to build\"  # HMAC-signed\n```\n\n| Agent-to-agent evaluate | Human sees the block + audit |\n|---|---|\n| [![ai-agents terminal cast](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/ai-agents-cast.gif)](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/ai-agents.mp4) | [![ai-agents dashboard](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/ai-agents-plate.png)](https://a2ainfrastructure.com/use-cases/ai-agent-platforms) |\n\n*Watch the full clip: [ai-agents →](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/ai-agents.mp4)*\n\n### Regulated industries — an immutable, exportable audit trail\n\nEvery 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.\n\n```bash\na2a audit                          # recent decisions\na2a audit export --format ocsf     # OCSF Detection Findings → your SIEM\na2a audit export --format csv      # hand to an auditor (csv/json)\na2a approvals                      # human-in-the-loop queue\na2a approve TASK-ID\na2a reject TASK-ID \"out of policy\" # reason recorded in the trail\n```\n\n| Command screened | Human exports the audit |\n|---|---|\n| [![regulated terminal cast](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/regulated-cast.gif)](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/regulated.mp4) | [![regulated dashboard](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/regulated-plate.png)](https://a2ainfrastructure.com/use-cases/regulated-industries) |\n\n*Watch the full clip: [regulated →](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/regulated.mp4)*\n\n### Creative & IP owners — licence before access\n\nRegister 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.\n\n```bash\na2a catalogue create \"The Back Catalogue\"\na2a catalogue licence create --catalogue CAT-ID --email studio@label.com --scope read\na2a catalogue access-log           # who reached for what, and whether it was licensed\na2a catalogue content-sources\n```\n\n| Agent requests an asset | Human sees the rights-log |\n|---|---|\n| [![creative terminal cast](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/creative-cast.gif)](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/creative.mp4) | [![creative dashboard](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/creative-plate.png)](https://a2ainfrastructure.com/use-cases/creative-industries) |\n\n*Watch the full clip: [creative →](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/creative.mp4)*\n\n### IP aggregators & distributors — onboard an entire catalogue in one command\n\nRepresent 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.\n\nExport your catalogue as CSV (CD Baby, DistroKid and most distributors already do), then:\n\n```bash\n# One-time: get a provider key from your A2A partner account, then\nexport A2A_API_KEY=a2a_provider_xxxxxxxx\n\n# Preview the column mapping before writing anything\na2a ip-aggregator import repertoire.csv --dry-run\n\n# Bulk-import the whole repertoire (idempotent — safe to re-run)\na2a ip-aggregator import repertoire.csv\n\na2a ip-aggregator owners                          # every rights holder + work count\na2a ip-aggregator works --owner-ref crosswinds    # one artist's registered works\na2a ip-aggregator opt-out --owner-ref crosswinds --all   # bulk AI/TDM opt-out (EU AI Act Art. 53)\na2a ip-aggregator portal-link --owner-ref crosswinds     # white-label artist portal — drop the artist in, no second login\na2a ip-aggregator access-log --owner-ref crosswinds      # the provable trail, per artist\n\n# The licensee side (the AI company that wants to use the catalogue):\na2a ip-aggregator catalogue                              # the licensable catalogue (opted-out works excluded)\na2a ip-aggregator licensee-link --licensee-ref acme-ai   # white-label licensee portal — browse + request a scoped licence\n```\n\nA 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`):\n\n```csv\nArtist ID,Artist,Track Title,ISRC,TDM Opt-Out\ncrosswinds,Crosswinds,All Good Things,USCGH1915861,true\nmidnight_owls,Midnight Owls,Neon Rain,GBK4Y2100017,false\n```\n\n`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](https://bandsaas.com); 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.\n\n#### Licensee keys — the machine half\n\n`licensee-link` drops a *human* into the portal. A licensee key is the credential the licensee's own **agents** authenticate with, so its usage is attributed to the licensee rather than borrowing the rights holder's key:\n\n```bash\na2a ip-aggregator licensee-key mint --licensee-ref acme-ai --name \"Acme AI\"\na2a ip-aggregator licensee-key list\na2a ip-aggregator licensee-key revoke <id>      # dies immediately\n\na2a ip-aggregator usage                          # metered usage, by event\n```\n\nThe key is hashed at rest and shown once. It carries **no subscription of its own** — your partner account being active *is* the entitlement, so it dies with it — and it may only `POST /v1/evaluate` with a licence key. Nothing else. That restriction is what makes it safe to hand to an outside company.\n\nBecause the licensee authenticates as itself, the access log records the **consuming party** alongside the rights holder:\n\n```\nALLOW  2026-08-07T10:14:02  owner=crosswinds  licensee=acme-ai  summarise  All Good Things\nDENY   2026-08-07T10:14:09  owner=crosswinds  licensee=acme-ai  reproduce  All Good Things  (Scope exceeded)\n```\n\nEvery evaluation — **allowed and denied** — meters back to you, the sponsoring partner, at your per-partner rate. A provable block is the product, so it costs the same evaluation.\n\n### Work orders — govern the *authority*, not just the action\n\nThe 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.\n\n```bash\n# A named human raises a governed directive with RACI + a scope grant\na2a work-order create --ref WO-2026-0142 --title \"Summarise Q3 catalogue\" \\\n  --directive \"Summarise tracks in the Q3 batch for the licensing review\" \\\n  --accountable jane@label.com --authority \"licensing-review-ticket-88\" \\\n  --domain creative --scope \"read,summarise.*\"\n\n# --domain applies your sector's profile: network-ops (change request), regulated\n# (work order / Art 4 decision record — authority required), creative (usage\n# authorisation), enterprise-ai (approved use), university (research protocol —\n# ethics ref required), ai-agents (mission). Add sector context with --meta\n# key=value, e.g. --meta grantRef=EPSRC-42 or --meta aiTools=copilot,chatgpt\n\na2a work-order authorise WO-...     # human sign-off: DRAFT → AUTHORISED (Art. 14)\na2a work-order attach WO-... TASK   # attach the gated tasks that fulfil it\na2a work-order complete WO-... --outcome \"42 tracks summarised, 0 blocked\"\na2a work-order verify WO-...        # re-derive the hashes — proves nothing was altered\na2a work-order precedent \"summarise catalogue for licensing\"   # what was authorised before\n```\n\nOnce 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.\n\n### Enterprise AI — govern the tools your staff already use\n\nChatGPT, 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.\n\n```bash\na2a ai-tools add \"ChatGPT\" --type chatbot\na2a ai-tools                       # every registered tool\na2a ai-tools update 0 --status paused\n```\n\n| Tool action screened | Human sees approval + audit |\n|---|---|\n| [![enterprise-ai terminal cast](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/enterprise-ai-cast.gif)](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/enterprise-ai.mp4) | [![enterprise-ai dashboard](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/enterprise-ai-plate.png)](https://a2ainfrastructure.com/use-cases/enterprise-ai) |\n\n*Watch the full clip: [enterprise-ai →](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/enterprise-ai.mp4)*\n\n### Universities — research governance without the friction\n\nApprovals, 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.\n\n```bash\na2a eval \"command\" --context \"grant-XYZ research pipeline\"\na2a approvals                      # ethics/governance queue\na2a audit export --format csv      # for the board or the funder\n```\n\n| Research action screened | Human sees governance + audit |\n|---|---|\n| [![university terminal cast](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/university-cast.gif)](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/university.mp4) | [![university dashboard](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/university-plate.png)](https://a2ainfrastructure.com/use-cases/university) |\n\n*Watch the full clip: [university →](https://prodmedia.tyga.host/public/tyga.cloud/landing/a2ainfrastructure.com/icp/university.mp4)*\n\n## Drop it into your framework\n\nGenerate a ready-made wrapper for the SDK you already use — the screen call is one line:\n\n```bash\na2a generate node        # a2a-safety.js\na2a generate python      # a2a_safety.py\na2a generate anthropic   # tool_use wrapper\na2a generate openai      # tool_call wrapper\n```\n\n## MCP Server\n\nPrefer 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.\n\n```bash\nclaude mcp add a2a -- a2a mcp-serve\n```\n\nFor 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`:\n\n```json\n{\n  \"mcpServers\": {\n    \"a2a\": {\n      \"command\": \"a2a\",\n      \"args\": [\"mcp-serve\"],\n      \"env\": { \"A2A_API_KEY\": \"a2a_your_key_here\" }\n    }\n  }\n}\n```\n\nNo key yet? Start it without one: the server boots in onboarding mode and can guide signup, then add the key and restart.\n\n### Remote MCP — zero install\n\nNo 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:\n\n```\nURL:  https://mcp.a2ainfrastructure.com/sse\nAuth: Authorization: Bearer YOUR_API_KEY\n```\n\nSetup guide: [MCP quickstart](https://a2ainfrastructure.com/quickstart/mcp).\n\n## Features\n\n- **Evaluate** — screen any command through the 4-gate firewall, allow / block / needs-review, in milliseconds\n- **Pipelines** — named screening routes with their own policy and task history\n- **Workspaces** — scoped multi-agent enforcement, one agent's action screened against the tenant policy\n- **Channels** — HMAC-signed agent-to-agent messaging, contract-scoped\n- **Devices & sites** — per-device policy, lock, bulk CSV import, and a global killswitch (network-ops)\n- **Catalogues & licences** — register IP, mint scoped licences, access-log every reach (creative / IP owners)\n- **IP aggregator** — one provider key, bulk-import many rights holders' repertoires (CSV), per-artist `ownerRef` isolation + white-label portal links (distributors / aggregators)\n- **AI tools registry** — govern ChatGPT / Claude / Copilot behind one audit trail (enterprise-ai)\n- **Approvals** — human-in-the-loop queue, approve/reject with reason recorded\n- **Audit trail** — immutable, OCSF-native Detection Findings, EU AI Act aligned, exportable as OCSF / CSV / JSON\n- **MCP server** — 49 tools, local (`a2a mcp-serve`) or fully remote (`mcp.a2ainfrastructure.com`)\n- **Framework wrappers** — one-line generate for Node, Python, Anthropic, OpenAI\n\n**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.\n\n| Plan | Price | Screenings / mo | Overage per 1k |\n|------|-------|-----------------|----------------|\n| **Starter** | $99/mo | 5,000 | $1.00 |\n| **Pro** | $299/mo | 100,000 | $0.25 |\n| **Enterprise** | Custom — priced per account | Unlimited | Agreed per account |\n\nVerified education & research: **Institutional** $79/mo. [Full pricing →](https://a2ainfrastructure.com/pricing).\n\n## Authentication\n\nAPI key resolution (first match wins):\n\n1. `--key` flag\n2. `A2A_API_KEY` environment variable\n3. `./.a2a/config.json` (project-local)\n4. `~/.a2a/config.json` (global)\n\n```bash\na2a login            # store globally (~/.a2a/)\na2a login --local    # store per-project (./.a2a/) — add .a2a/ to .gitignore\na2a config           # show which config is active\n```\n\n## Platform operators — `a2a admin`\n\nSelf-hosted or platform-operator deployments get a full ops suite behind a separate\nsuperadmin key (`A2A_SA_KEY` / `--sa-key` — never a tenant API key): tenant lifecycle\n(`tenant-create --theme --password --verify`, `tenant-key` mint), partner management\n(`partner-embed` with incremental `--frame-add`/`--frame-remove`, brand config, secret\nrotation), cross-tenant IP ops (`catalogues`, `catalogue-restamp`, `catalogue-restore`,\n`licences`, `licence-revoke`, `access-log`), deck shares, partner provisions/usage, and\nbilling ops (`subscriptions`, `invoices`). Run `a2a admin help` for the full list.\n\n## Agent Integration\n\nAdd to your CLAUDE.md, .cursorrules, .clinerules, .windsurfrules, or AGENTS.md:\n\n```\n## A2A TrustGate\nThis project screens agent actions through A2A before they execute.\nUse the `a2a` CLI. Config is in .a2a/config.json (auto-loaded).\nIf not configured: a2a login --local --key YOUR_KEY\n\nBefore running any risky command, screen it:\n  a2a eval \"the command\" --json   # exit 0 = run it, 1 = do not, 2 = needs review\n```\n\n## Why this exists\n\nAn 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](https://a2ainfrastructure.com/feedback).\n\n## Documentation\n\n- [Quickstart Guides](https://a2ainfrastructure.com/quickstart)\n- [Full Reference](https://a2ainfrastructure.com/llms.txt)\n\n## Licence\n\nProprietary — Tyga.Cloud Ltd. See [LICENSE](./LICENSE).\n",
  "bytes": 24854,
  "sha": "1853cc15e86bfd91ddff80a693f780081a68c0222045b98f701f0dcdec19ff67",
  "repo_slug": "jyswee/a2a-trustgate",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_jyswee_a2a_trustgate_b3a729b2/readme"
}