Observed since 21 Oct, 08:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Secure ephemeral channels for AI agent communication
A Claude Code session on your laptop can hand a file, a message, or a secret to a Claude Code session on another machine, sealed end to end so only the two of them can read it. Built on persistent secp256k1 identities, Nostr NIP-17 gift-wrapped DMs, and magic-wormhole for one-time pairing and bulk file transfer.

agent-wormhole is for agent collaboration that outlives a single terminal. Pair once, give each peer a name, and then agents can send context to each other as they work: the branch they are on, what they changed, logs, test output, screenshots, config snippets, or a file that needs review.
Install:
uv tool install agent-wormhole
# or
pip install agent-wormhole
A persistent keypair is created on first use at ~/.agent-wormhole/identity.key (mode 0600). See it:
$ agent-wormhole whoami
pubkey: 7f3a…
relays: wss://relay.damus.io, wss://nos.lol, wss://relay.primal.net
The /agent-wormhole skill drives this; the two sides exchange identity envelopes over two short magic-wormhole codes (one each direction) and each writes the other into its trust file:
# Machine A → reads code aloud
agent-wormhole identity-envelope | wormhole send --text -
# Machine B → with A's code
wormhole receive <code-A> # prints A's envelope JSON
agent-wormhole trust <A-pubkey> alice --relays <relays>
# Then reverse so A trusts B too.
Keep a listener running; it emits one JSON line per inbound message:
$ agent-wormhole listen
{"type":"text","from":"alice","content":"hi","received_at":1700000000}
{"type":"file","from":"alice","name":"report.pdf","saved_to":"/tmp/agent-wormhole/alice/files/report.pdf","size":4096,…}
Send by peer name:
agent-wormhole send alice "hello from laptop"
agent-wormhole send-file alice ./config.json
Manage trust:
agent-wormhole peers
agent-wormhole untrust alice
agent-wormhole ships with a Claude Code skill. Install it:
agent-wormhole setup | claude
That symlinks ~/.claude/skills/agent-wormhole/SKILL.md into the installed package, so the skill updates when you upgrade agent-wormhole.
Then either session can run:
/agent-wormhole pair <peer-name> to add a new peer (the skill walks both sides through it)./agent-wormhole to start the listener for an already-paired peer.Outbound messages and files use agent-wormhole send / agent-wormhole send-file directly via Bash.
~/.agent-wormhole/identity.key, 0600). The x-only BIP-340 pubkey is the addressable name on the Nostr network.wormhole send/receive to swap identity envelopes between two trusted hosts (one short code per direction). Each side calls agent-wormhole trust to record the peer.kind=1059 events tagged for the recipient. Sender identity is hidden from the relay.send-file spawns a wormhole send subprocess, posts the negotiated code in an encrypted file-offer DM, and the recipient's listener auto-invokes wormhole receive (transfer authenticated by magic-wormhole's PAKE).Relay list resolution order: AGENT_WORMHOLE_RELAYS env var (comma-separated) → ~/.agent-wormhole/config.json ({"relays":[…]}) → bundled defaults (damus, nos.lol, primal).
The wormhole CLI must be on PATH; it ships with the magic-wormhole Python dep.
#p subscription filter); run your own relay or trust the chosen relay set's anonymity properties if you need stronger anonymity.MIT
pypistats · 51 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-20 – 2026-10-20 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-18 – 2026-10-18 | 4 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-17 – 2026-10-17 | 6 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-16 – 2026-10-16 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-15 – 2026-10-15 | 6 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-14 – 2026-10-14 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-13 – 2026-10-13 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-12 – 2026-10-12 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-10 – 2026-10-10 | 12 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-09 – 2026-10-09 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-07 – 2026-10-07 | 6 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-06 – 2026-10-06 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-03 – 2026-10-03 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-02 – 2026-10-02 | 3 | 2026-10-21T11:16:36.7461375Z |
| 2026-10-01 – 2026-10-01 | 15 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-30 – 2026-09-30 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-29 – 2026-09-29 | 6 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-28 – 2026-09-28 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-27 – 2026-09-27 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-26 – 2026-09-26 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-23 – 2026-09-23 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-22 – 2026-09-22 | 4 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-21 – 2026-09-21 | 14 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-19 – 2026-09-19 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-16 – 2026-09-16 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-14 – 2026-09-14 | 6 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-13 – 2026-09-13 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-09 – 2026-09-09 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-08 – 2026-09-08 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-07 – 2026-09-07 | 4 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-05 – 2026-09-05 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-09-01 – 2026-09-01 | 3 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-31 – 2026-08-31 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-28 – 2026-08-28 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-25 – 2026-08-25 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-24 – 2026-08-24 | 5 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-23 – 2026-08-23 | 5 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-21 – 2026-08-21 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-17 – 2026-08-17 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-15 – 2026-08-15 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-14 – 2026-08-14 | 4 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-12 – 2026-08-12 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-09 – 2026-08-09 | 8 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-06 – 2026-08-06 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-05 – 2026-08-05 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-04 – 2026-08-04 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-03 – 2026-08-03 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-21T11:16:36.7461375Z |
| 2026-07-27 – 2026-07-27 | 2 | 2026-10-21T11:16:36.7461375Z |
| 2026-07-24 – 2026-07-24 | 8 | 2026-10-21T11:16:36.7461375Z |
| 2026-07-23 – 2026-07-23 | 5 | 2026-10-21T11:16:36.7461375Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.2.1 | 31 May 2026 | 5 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 08:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:28ae18ff6089b7231f84d3798d9512d9f26cfce14e9151bbcec38c64dce28d08