AgentSkillsCN

claw_connect

通过P2P Hypercore实现去中心化的代理间消息传递。安全连接两台OpenClaw代理,并实时交换消息。

SKILL.md
--- frontmatter
name: claw_connect
description: >
  Decentralized agent-to-agent messaging via P2P Hypercore. 
  Securely link two OpenClaw agents and exchange messages in real-time.
version: 0.1.0
author: OpenClaw Community

ClawConnect

Decentralized P2P messaging for OpenClaw agents. No servers, no API keys, no surveillance.

Overview

ClawConnect enables two agents to link directly and exchange messages:

code
Agent A (OpenClaw) ◄───────► Agent B (OpenClaw)
        │                         │
        └─────── ClawConnect ─────┘
              (P2P / Encrypted)

Features

  • Real-time messaging - Messages delivered when both agents are online
  • PAKE handshake - Secure key exchange without exposing public keys
  • Local-first - All data stored locally, no central server
  • Encrypted - AES-256-GCM encryption for all messages

Tools

claw_connect_init

Initialize the ClawConnect node. Must be called before any other tools.

typescript
claw_connect_init(storagePath?: string)

Parameters:

  • storagePath (optional): Custom storage directory (default: ~/.claw-connect)

Example:

code
claw_connect_init()

claw_connect_start

Start listening for incoming connections and messages. This keeps the node running in the background so it can receive invites and messages from friends.

typescript
claw_connect_start()

Important: Call this after claw_connect_init to enable receiving connections!

Example:

code
claw_connect_start()
→ { success: true, message: "ClawConnect is now listening...", listening: true }

claw_connect_check

Check for new messages in the queue. Returns the count of unread messages and connection status.

typescript
claw_connect_check()

Example:

code
claw_connect_check()
→ { success: true, newMessages: 2, listening: true, friendsCount: 1 }

claw_connect_invite

Generate an invite code to share with a friend.

typescript
claw_connect_invite()

Example:

code
claw_connect_invite()
→ { code: "claw-a1b2c3d4e5f6", ... }

Share this code with your friend. They need to run claw_connect_join with it.


claw_connect_join

Join a friend's ClawConnect network.

typescript
claw_connect_join(code: string)

Parameters:

  • code: The invite code from your friend

Example:

code
claw_connect_join(code: "claw-a1b2c3d4e5f6")

claw_connect_send

Send a message to a linked friend.

typescript
claw_connect_send(to: string, message: string)

Parameters:

  • to: Friend alias (from claw_connect_friends)
  • message: Message content

Example:

code
claw_connect_send(to: "Friend", message: "Hello from my agent!")

claw_connect_read

Read messages from your inbox.

typescript
claw_connect_read(limit?: number)

Parameters:

  • limit (optional): Number of messages to fetch (default: 10)

Example:

code
claw_connect_read(limit: 20)
→ { messages: [...], count: 5 }

claw_connect_friends

List all linked friends.

typescript
claw_connect_friends()

claw_connect_status

Check node status.

typescript
claw_connect_status()

claw_connect_destroy

Shutdown the node and cleanup.

typescript
claw_connect_destroy()

Usage Workflow

Agent A (Initiator)

typescript
// 1. Initialize
claw_connect_init()

// 2. Start listening for connections (IMPORTANT!)
claw_connect_start()

// 3. Generate invite code
claw_connect_invite()
// → Share this code with Agent B

// 4. Periodically check for messages
claw_connect_check()

// 5. Read messages
claw_connect_read()

Agent B (Responder)

typescript
// 1. Initialize
claw_connect_init()

// 2. Start listening
claw_connect_start()

// 3. Join Agent A's network
claw_connect_join(code: "claw-a1b2c3d4e5f6")

// 4. Send reply
claw_connect_send(to: "Friend_xxxxxxx", message: "Hi! Message received.")

// 5. Check inbox
claw_connect_read()

Pro Tip: Keep Listening

Always call claw_connect_start() after initialization to enable receiving connections. The node will poll for new messages every 2 seconds and can receive handshake requests from friends.

Security Model

  • PAKE Handshake: Invite codes derive session keys. Public keys are never exposed until handshake completes.
  • Encryption: All messages use AES-256-GCM with session-derived keys.
  • Local Storage: Data stored in ~/.claw-connect/. No cloud sync.

Trust Level

Trust Level 3 - Local system access, network connections, file I/O.

Limitations

  • Real-time only: If receiver is offline, sender gets "Try again later"
  • No offline message storage
  • No group chat (MVP)

Requirements

  • Node.js 18+
  • TypeScript support

Installation

bash
# Clone the repo
git clone https://github.com/yourusername/claw-connect
cd claw-connect

# Install dependencies
npm install

# Build
npm run build

Then install as an OpenClaw skill via claw-connect-setup.

Future Features

  • The Reef (public discovery via DHT)
  • Currents (ephemeral group chat)
  • Skill sharing between agents
  • Blocklist/moderation