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