Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Secure P2P communication for AI agents. Noise XX handshake, XChaCha20-Poly1305 encryption, connection consent, human verification. Zero central servers.
Secure P2P communication for AI agents. Noise XX handshake, XChaCha20-Poly1305 encryption, connection consent, human verification. Zero central servers.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Minimal secure peer-to-peer communication for AI agents. Two agents exchange a connection string, perform a Noise XX handshake, then communicate over encrypted channels. No central server required.
Agent-to-agent communication across machines or networks Secure task delegation between sub-agents on different hosts Any scenario requiring encrypted, authenticated P2P messaging
The Clawdio project lives at projects/clawdio/. Install dependencies and build: cd projects/clawdio && npm install && npx tsc
const { Clawdio } = require('./projects/clawdio/dist/index.js'); // Create two nodes const alice = await Clawdio.create({ port: 9090, autoAccept: true }); const bob = await Clawdio.create({ port: 9091, autoAccept: true }); // Connect (Noise XX handshake) const aliceId = await bob.exchangeKeys(alice.getConnectionString()); // Send messages await bob.send(aliceId, { task: "What's the weather?" }); alice.onMessage((msg, from) => console.log(msg.task));
By default, unknown inbound peers require explicit consent: const node = await Clawdio.create({ port: 9090 }); // autoAccept defaults to false node.on('connectionRequest', (req) => { console.log(`Connection from ${req.id}`); console.log(`Fingerprint: ${req.fingerprint}`); // Accept or reject node.acceptPeer(req.id); // or node.rejectPeer(req.id) }); Outbound connections (you calling exchangeKeys) are auto-accepted. Already-trusted peers auto-reconnect.
For high-trust scenarios, verify peers in person: node.setOwner('Alice'); const code = node.getVerificationCode(peerId); // "torch lemon onyx prism jade index" // Both humans compare codes in person, then: node.verifyPeer(peerId); // trust: 'accepted' → 'human-verified' node.getPeerTrust(peerId); // 'human-verified'
pending — connection request received, not yet accepted accepted — peer accepted, encrypted communication active human-verified — verified via in-person code exchange
Pass identityPath to persist keys and trusted peers across restarts: const node = await Clawdio.create({ port: 9090, identityPath: '.clawdio-identity.json' });
Spawn a sub-agent to handle Clawdio communication: 1. Main agent spawns sub-agent with task 2. Sub-agent creates Clawdio node, connects to remote peer 3. Sub-agent exchanges messages, collects results 4. Sub-agent reports back to main agent
Forward secrecy (ephemeral X25519 keys) Mutual authentication (Noise XX) Replay protection (monotonic counters) XChaCha20-Poly1305 AEAD encryption Connection consent for inbound peers
MethodDescriptionClawdio.create(opts)Create and start a nodenode.exchangeKeys(connStr)Connect to peernode.send(peerId, msg)Send encrypted messagenode.onMessage(handler)Listen for messagesnode.acceptPeer(id)Accept pending connectionnode.rejectPeer(id)Reject pending connectionnode.setOwner(name)Set human owner namenode.getVerificationCode(id)Get 6-word verification codenode.verifyPeer(id)Mark peer as human-verifiednode.getPeerTrust(id)Get trust levelnode.getFingerprint(id)Emoji fingerprintnode.getPeerStatus(id)alive/stale/downnode.stop()Shutdown
Messaging, meetings, inboxes, CRM, and teammate communication surfaces.
Largest current source with strong distribution and engagement signals.