{
  "markdown": "# Whisper agent-framework adapters\n\nWhisper gives an AI agent a **real network identity**: a routable IPv6 `/128` it egresses from,\nthat reverse-DNS, RDAP, DANE and DNSSEC all resolve back to it, so any peer can verify *who* an\nagent is, and an operator can govern *what* it may reach. The same platform lets an agent\n**query the whisper.security graph**: 3.67B nodes and 30.8B relationships of live internet\ninfrastructure, with 3.86M threat indicators, so it can verify not just a peer's identity but the\nposture of anything it talks to.\n\nThis repo makes both **one native command away** in every major agent framework. One source of\ntruth, thin generated adapters, the same model that lets a good ruleset be everywhere at once,\napplied to real infrastructure.\n\n## What you can install right now\n\n**🟢 Claude Code, Gemini CLI, Antigravity, OpenAI Codex, GitHub Copilot CLI, and Pi are live** -\neach installs and registers the `whisper mcp` server on the framework's own CLI (proven on a real\ninstall), and the routable `/128` egress works. In-chat tool invocation on\nGemini/Antigravity/Codex/Copilot additionally needs that framework's own login. The\nregistry/hosted channels (OpenClaw, Hermes, OpenCode, and the rest of the long-tail) are\n**staged** (⚪): there's no one-command registry install yet, but each ships its **real add-step**\n(a config snippet or a manual UI step) - see the channel's README. **Read the Status column before\nyou run a command.**\n\n| Status | Framework | Install |\n|---|---|---|\n| 🟢 Live | **Claude Code** | `/plugin marketplace add whisper-sec/whisper-adapters` then `/plugin install whisper@whisper` |\n| 🟢 Live | **Gemini CLI** | `gemini extensions install https://github.com/whisper-sec/whisper-adapters` |\n| 🟢 Live | **Antigravity** | `agy plugin install https://github.com/whisper-sec/whisper-adapters` |\n| 🟢 Live | **OpenAI Codex** | `codex plugin marketplace add whisper-sec/whisper-adapters` then `codex plugin add whisper@whisper` |\n| 🟢 Live | **GitHub Copilot CLI** | `copilot plugin marketplace add whisper-sec/whisper-adapters` then `copilot plugin install whisper@whisper` |\n| 🟢 Live | **Pi** | `pi install npm:whisper-pi` |\n| ⚪ Staged | **OpenClaw**, **Hermes**, **OpenCode** | each has a real add-step - see its README under [`adapters/`](adapters/) |\n| ⚪ Staged | **Swival / Devin / Qoder** | see [`adapters/long-tail/`](adapters/long-tail/) |\n\n🟢 Live · ⚪ Staged (no one-command install yet; real add-step documented). Each adapter's own\nREADME carries its status badge + the copy-paste example. The full matrix is in\n[`CHANNELS.md`](CHANNELS.md).\n\n## Two-tier by design (auth is optional)\n\nEvery adapter follows the Robustness Principle: be liberal in what you accept.\n\n- **No API key** the keyless surface works for everyone: verify whether any address or hostname is\n  a real Whisper agent (`whisper_verify`), read its RDAP registration (`whisper_rdap`), and\n  **assess or identify any host against the security graph** (`/whisper:assess`).\n- **With a Whisper API key** (`WHISPER_API_KEY` in the client's environment, or `whisper login`)\n  the full control plane unlocks: mint a named agent and get its routable `/128`, list agents,\n  set resolver policy, read logs, revoke, get the egress config, the session can **egress\n  from its `/128`**, and you can run **raw Cypher and the full recipe library** over the graph\n  (`/whisper:graph`).\n\nA keyless-only adapter would be half-baked; every adapter here delivers both halves.\n\n## Prerequisite\n\nThe `whisper` CLI on your PATH - the adapters run `whisper mcp` (the tool surface) and, for\negress, `whisper connect`:\n\n```\ncurl -fsSL https://get.whisper.online | sh\n```\n\n## Architecture - one source of truth, generated adapters\n\n```\nsource/                     the ONLY thing you hand-edit\n  whisper.json              canonical metadata: version, tools, commands, one-liners\n  WHISPER.md                canonical agent context\n  commands/*.md             canonical /whisper:* command bodies\n  hooks/session-start-egress.sh   the two-tier egress hook\nscripts/\n  generate.mjs              emits every adapter from source/\n  validate.mjs              structural checks (no framework install needed)\nadapters/\n  claude-code/  gemini/  codex/  copilot/  long-tail/     (generated)\n  openclaw/  hermes/  opencode/                            (runtime code; context + version synced)\n```\n\nRegenerate everything and validate:\n\n```\nnode scripts/generate.mjs\nnode scripts/validate.mjs\n```\n\nAdd a framework = add one emitter in `generate.mjs`. Change a tool description or bump the version\n= edit `source/whisper.json` and re-run. Nothing downstream is hand-maintained twice.\n\n## The tools\n\n| Tool | Tier | What it does |\n|---|---|---|\n| `whisper_verify` | keyless | Is `<address\\|fqdn>` a real Whisper agent, and whose? (reverse-DNS + DANE + DNSSEC + JWS) |\n| `whisper_rdap` | keyless | RDAP for a Whisper `/128` - who operates the identity |\n| `whisper_register` | with key | Mint a named agent: a name in, a routable `/128` + DNS name out |\n| `whisper_list` | with key | Your agents (name, `/128`, DNS name, state) |\n| `whisper_policy` | with key | Read or set your DNS resolver policy |\n| `whisper_logs` | with key | Recent per-agent DNS / connection / allocation activity |\n| `whisper_revoke` | with key | Tear an agent down (irreversible) |\n| `whisper_egress_config` | with key | Ready-to-run proxy/env config to egress from an agent's `/128` |\n\n## The security graph\n\nEvery adapter also carries the **graph surface**: query the whisper.security graph (3.67B nodes,\n30.8B relationships, 3.86M threat indicators) over one public endpoint,\n`https://graph.whisper.security/api/query`. No MCP tool is needed, so even non-MCP hosts reach it\nwith a shell, and the same two tiers apply.\n\n- **Keyless.** `/whisper:assess <host|ip|domain>` returns threat posture, operator, and why, for\n  any target, with no key. The enrichment procedures (`assess`, `identify`, `explain`, `variants`,\n  `walk`, `origins`, `history`, `db-schema`) all answer keyless up to a small taste cap.\n- **With your key.** `/whisper:graph <recipe|cypher>` runs a named recipe from the catalog or your\n  own Cypher over the whole graph. Multi-step `flow` recipes stream from the run endpoint.\n\nThe full catalog of 29 recipes ships as [`recipes.json`](recipes.json) in the repo root and in\nevery adapter directory, each recipe with its Cypher or slug, access tier, and doc link, derived\nfrom the canonical Whisper catalog. Graph docs:\n[procedures](https://www.whisper.security/docs/whisper-graph/procedures) ·\n[Cypher API](https://www.whisper.security/docs/cypher-api) ·\n[recipes](https://www.whisper.security/docs/recipes).\n\n## Security\n\nThis repo is the **public client surface only**: no API keys, no credentials, no internal\ninfrastructure. Every adapter simply launches the `whisper` CLI (`whisper mcp` for tools,\n`whisper connect` for egress) or POSTs to the public graph endpoint; **no host addresses are\nembedded in any manifest**. The client reaches Whisper's public endpoints only\n(`whisper.online`, `graph.whisper.security`, `console.whisper.security`, `www.whisper.security`,\n`mcp.whisper.security`). Your API key is read at runtime from your environment or the\n`whisper login` key file on your own machine, never stored here. See [`SECURITY.md`](SECURITY.md);\nreport issues to security@whisper.security.\n\nLearn more: https://whisper.online\n",
  "bytes": 7410,
  "sha": "90714d343fa696894028987bd019c2952fe818d50bdaa30a3f6741a6ff537ff0",
  "repo_slug": "whisper-sec/whisper-adapters",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_whisper_sec_whisper_adapters_19024cda/readme"
}