Back to the catalog

whisper

Give any AI agent a real, routable, verifiable network identity - a Whisper IPv6 /128 it egresses from, and keyless tools to verify any peer

Open source Open in the app JSON README (API)

About

Give any AI agent a real, routable, verifiable network identity - a Whisper IPv6 /128 it egresses from, and keyless tools to verify any peer.

Details

Kind
Plugins
Topic
AI, RAG & memory
Publisher
whisper-sec
Origin
gemini
Category
ferramentas
Version
0.1.0
Last push
2026-07-14T23:13:15Z
Repository state
ativo
Language
JavaScript
License
MIT
Added
2026-08-30 14:13:39
Updated
2026-08-30 14:13:39
Origin id
whisper-sec/whisper-adapters

README

# Whisper agent-framework adapters

Whisper gives an AI agent a **real network identity**: a routable IPv6 `/128` it egresses from,
that reverse-DNS, RDAP, DANE and DNSSEC all resolve back to it, so any peer can verify *who* an
agent is, and an operator can govern *what* it may reach. The same platform lets an agent
**query the whisper.security graph**: 3.67B nodes and 30.8B relationships of live internet
infrastructure, with 3.86M threat indicators, so it can verify not just a peer's identity but the
posture of anything it talks to.

This repo makes both **one native command away** in every major agent framework. One source of
truth, thin generated adapters, the same model that lets a good ruleset be everywhere at once,
applied to real infrastructure.

## What you can install right now

**🟢 Claude Code, Gemini CLI, Antigravity, OpenAI Codex, GitHub Copilot CLI, and Pi are live** -
each installs and registers the `whisper mcp` server on the framework's own CLI (proven on a real
install), and the routable `/128` egress works. In-chat tool invocation on
Gemini/Antigravity/Codex/Copilot additionally needs that framework's own login. The
registry/hosted channels (OpenClaw, Hermes, OpenCode, and the rest of the long-tail) are
**staged** (⚪): there's no one-command registry install yet, but each ships its **real add-step**
(a config snippet or a manual UI step) - see the channel's README. **Read the Status column before
you run a command.**

| Status | Framework | Install |
|---|---|---|
| 🟢 Live | **Claude Code** | `/plugin marketplace add whisper-sec/whisper-adapters` then `/plugin install whisper@whisper` |
| 🟢 Live | **Gemini CLI** | `gemini extensions install https://github.com/whisper-sec/whisper-adapters` |
| 🟢 Live | **Antigravity** | `agy plugin install https://github.com/whisper-sec/whisper-adapters` |
| 🟢 Live | **OpenAI Codex** | `codex plugin marketplace add whisper-sec/whisper-adapters` then `codex plugin add whisper@whisper` |
| 🟢 Live | **GitHub Copilot CLI** | `copilot plugin marketplace add whisper-sec/whisper-adapters` then `copilot plugin install whisper@whisper` |
| 🟢 Live | **Pi** | `pi install npm:whisper-pi` |
| ⚪ Staged | **OpenClaw**, **Hermes**, **OpenCode** | each has a real add-step - see its README under [`adapters/`](adapters/) |
| ⚪ Staged | **Swival / Devin / Qoder** | see [`adapters/long-tail/`](adapters/long-tail/) |

🟢 Live · ⚪ Staged (no one-command install yet; real add-step documented). Each adapter's own
README carries its status badge + the copy-paste example. The full matrix is in
[`CHANNELS.md`](CHANNELS.md).

## Two-tier by design (auth is optional)

Every adapter follows the Robustness Principle: be liberal in what you accept.

- **No API key** the keyless surface works for everyone: verify whether any address or hostname is
  a real Whisper agent (`whisper_verify`), read its RDAP registration (`whisper_rdap`), and
  **assess or identify any host against the security graph** (`/whisper:assess`).
- **With a Whisper API key** (`WHISPER_API_KEY` in the client's environment, or `whisper login`)
  the full control plane unlocks: mint a named agent and get its routable `/128`, list agents,
  set resolver policy, read logs, revoke, get the egress config, the session can **egress
  from its `/128`**, and you can run **raw Cypher and the full recipe library** over the graph
  (`/whisper:graph`).

A keyless-only adapter would be half-baked; every adapter here delivers both halves.

## Prerequisite

The `whisper` CLI on your PATH - the adapters run `whisper mcp` (the tool surface) and, for
egress, `whisper connect`:

```
curl -fsSL https://get.whisper.online | sh
```

## Architecture - one source of truth, generated adapters

```
source/                     the ONLY thing you hand-edit
  whisper.json              canonical metadata: version, tools, commands, one-liners
  WHISPER.md                canonical agent context
  commands/*.md             canonical /whisper:* command bodies
  hooks/session-start-egress.sh   the two-tier egress hook
scripts/
  generate.mjs              emits every adapter from source/
  validate.mjs              structural checks (no framework install needed)
adapters/
  claude-code/  gemini/  codex/  copilot/  long-tail/     (generated)
  openclaw/  hermes/  opencode/                            (runtime code; context + version synced)
```

Regenerate everything and validate:

```
node scripts/generate.mjs
node scripts/validate.mjs
```

Add a framework = add one emitter in `generate.mjs`. Change a tool description or bump the version
= edit `source/whisper.json` and re-run. Nothing downstream is hand-maintained twice.

## The tools

| Tool | Tier | What it does |
|---|---|---|
| `whisper_verify` | keyless | Is `<address\|fqdn>` a real Whisper agent, and whose? (reverse-DNS + DANE + DNSSEC + JWS) |
| `whisper_rdap` | keyless | RDAP for a Whisper `/128` - who operates the identity |
| `whisper_register` | with key | Mint a named agent: a name in, a routable `/128` + DNS name out |
| `whisper_list` | with key | Your agents (name, `/128`, DNS name, state) |
| `whisper_policy` | with key | Read or set your DNS resolver policy |
| `whisper_logs` | with key | Recent per-agent DNS / connection / allocation activity |
| `whisper_revoke` | with key | Tear an agent down (irreversible) |
| `whisper_egress_config` | with key | Ready-to-run proxy/env config to egress from an agent's `/128` |

## The security graph

Every adapter also carries the **graph surface**: query the whisper.security graph (3.67B nodes,
30.8B relationships, 3.86M threat indicators) over one public endpoint,
`https://graph.whisper.security/api/query`. No MCP tool is needed, so even non-MCP hosts reach it
with a shell, and the same two tiers apply.

- **Keyless.** `/whisper:assess <host|ip|domain>` returns threat posture, operator, and why, for
  any target, with no key. The enrichment procedures (`assess`, `identify`, `explain`, `variants`,
  `walk`, `origins`, `history`, `db-schema`) all answer keyless up to a small taste cap.
- **With your key.** `/whisper:graph <recipe|cypher>` runs a named recipe from the catalog or your
  own Cypher over the whole graph. Multi-step `flow` recipes stream from the run endpoint.

The full catalog of 29 recipes ships as [`recipes.json`](recipes.json) in the repo root and in
every adapter directory, each recipe with its Cypher or slug, access tier, and doc link, derived
from the canonical Whisper catalog. Graph docs:
[procedures](https://www.whisper.security/docs/whisper-graph/procedures) ·
[Cypher API](https://www.whisper.security/docs/cypher-api) ·
[recipes](https://www.whisper.security/docs/recipes).

## Security

This repo is the **public client surface only**: no API keys, no credentials, no internal
infrastructure. Every adapter simply launches the `whisper` CLI (`whisper mcp` for tools,
`whisper connect` for egress) or POSTs to the public graph endpoint; **no host addresses are
embedded in any manifest**. The client reaches Whisper's public endpoints only
(`whisper.online`, `graph.whisper.security`, `console.whisper.security`, `www.whisper.security`,
`mcp.whisper.security`). Your API key is read at runtime from your environment or the
`whisper login` key file on your own machine, never stored here. See [`SECURITY.md`](SECURITY.md);
report issues to security@whisper.security.

Learn more: https://whisper.online

More