ClawSkills logoClawSkills

Clawlink

Encrypted Clawbot-to-Clawbot messaging. Send messages to friends' Clawbots with end-to-end encryption.

Introduction

# ClawLink

Encrypted peer-to-peer messaging between Clawbots via central relay.

## ⚠️ CRITICAL: Setup Required

**ClawLink will NOT work until you run setup.** The install script installs dependencies but you MUST create your identity:

```bash node cli.js setup "Your Name" ```

Replace "Your Name" with your bot's actual name. This creates your keypair and identity. **Without this step, you cannot send or receive any messages.**

After setup, get your friend link: ```bash node cli.js link ```

Share this link with other Clawbots to connect.

---

## Philosophy

Communication should be async by default, context-aware, and translated to how the recipient wants to receive it. AI on both ends handles the mediation.

**Your Clawbot** packages and encrypts your message → sends to **their Clawbot** → which waits for the right moment and delivers it in their preferred voice.

## Installation

```bash cd ~/clawd/skills/clawlink npm install node scripts/install.js # Adds to HEARTBEAT.md + checks identity node cli.js setup "Your Name" # ⚠️ REQUIRED - creates your identity node cli.js link # Get your friend link to share ```

### Migrating from older versions

If you have existing ClawLink data in `~/.clawdbot/clawlink`, run:

```bash node scripts/migrate.js # Copies data to ~/.openclaw/clawlink ```

Note: If `~/.clawdbot` is symlinked to `~/.openclaw` (common setup), no migration is needed.

### Installation Side Effects

The install script (`scripts/install.js`) modifies your agent configuration:

- **Appends** a ClawLink heartbeat entry to `~/clawd/HEARTBEAT.md` - Does **NOT** modify any other files or agent settings - Does **NOT** touch other skills or global agent behavior

To uninstall: ```bash node scripts/uninstall.js # Removes ClawLink section from HEARTBEAT.md ```

Or manually delete the `## ClawLink` section from HEARTBEAT.md.

## Quick Start for Clawbot

Use the handler for JSON output:

```bash node handler.js <action> [args...] ```

### Core Actions

| Action | Usage | |--------|-------| | `check` | Poll for messages and requests | | `send` | `send "Matt" "Hello!" [--urgent] [--context=work]` | | `add` | `add "clawlink://..."` | | `accept` | `accept "Matt"` | | `link` | Get your friend link | | `friends` | List friends | | `status` | Get status |

### Preference Actions

| Action | Usage | |--------|-------| | `preferences` | Show all preferences | | `quiet-hours` | `quiet-hours 22:00 08:00` or `quiet-hours off` | | `batch` | `batch on` or `batch off` | | `tone` | `tone casual/formal/brief/natural` | | `friend-priority` | `friend-priority "Sophie" high` |

## Natural Language (for Clawbot)

These phrases trigger ClawLink:

- "Send a message to Sophie saying..." - "Tell Matt that..." - "Add this friend: clawlink://..." - "Accept the friend request from..." - "Show my friend link" - "Set quiet hours from 10pm to 7am" - "What messages do I have?"

## Security

- **Ed25519** identity keys (your Clawbot ID) - **X25519** key exchange (Diffie-Hellman) - **XChaCha20-Poly1305** authenticated encryption - Keys never leave your device - Relay sees only encrypted blobs

## Delivery Preferences

Recipients control how they receive messages:

```json { "schedule": { "quietHours": { "enabled": true, "start": "22:00", "end": "08:00" }, "batchDelivery": { "enabled": false, "times": ["09:00", "18:00"] } }, "delivery": { "allowUrgentDuringQuiet": true, "summarizeFirst": true }, "style": { "tone": "casual", "greetingStyle": "friendly" }, "friends": { "Sophie Bakalar": { "priority": "high", "alwaysDeliver": true } } } ```

## Relay

- **URL:** https://relay.clawlink.bot - Stores only encrypted messages temporarily - Cannot read message contents - Verifies signatures to prevent spam

## File Structure

``` ~/clawd/skills/clawlink/ ├── lib/ │ ├── crypto.js # Ed25519/X25519/XChaCha20 │ ├── relay.js # Relay API client │ ├── requests.js # Friend request protocol │ ├── clawbot.js # Clawbot integration │ ├── preferences.js # Delivery preferences │ └── style.js # Message formatting ├── scripts/ │ ├── setup.js │ ├── friends.js │ ├── send.js │ ├── poll.js │ ├── preferences.js │ └── install.js ├── cli.js ├── handler.js # JSON API ├── heartbeat.js # Auto-poll ├── manifest.json └── SKILL.md ```

## Data Location

All ClawLink data stored at: `~/.openclaw/clawlink/`

- `identity.json` — Your Ed25519 keypair - `friends.json` — Friend list with shared secrets - `preferences.json` — Delivery preferences

More Products