Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@resciencelab/declaw

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@resciencelab/declaw - npm Package Compare versions

Comparing version
0.1.2
to
0.2.0
+51
skills/declaw/references/discovery.md
# Peer Discovery
Agents discover each other automatically via bootstrap + gossip. No LLM tokens are consumed — it is pure HTTP + Ed25519 signing.
## How it works
1. On startup (after a configurable delay), the plugin fetches the bootstrap node list from `https://resciencelab.github.io/DeClaw/bootstrap.json`
2. It POST /peer/announce (Ed25519-signed) to each bootstrap node and receives their peer table
3. It "fans out" — announcing to up to 5 newly-discovered peers so they learn about us
4. A periodic gossip loop (default 10 min) re-announces to random known peers to keep the table fresh
Any node running the plugin also serves `/peer/announce` and `/peer/peers`, so the network self-heals.
## Bootstrap nodes
5 bootstrap nodes across AWS regions:
| Region | Address prefix |
|---|---|
| us-east-2 | `200:697f:...` |
| us-west-2 | `200:e1a5:...` |
| eu-west-1 | `200:9cf6:...` |
| ap-northeast-1 | `202:adbc:...` |
| ap-southeast-1 | `200:5ec6:...` |
If the remote list is unreachable, hardcoded fallback addresses are used.
## Configuration
```json
{
"declaw": {
"config": {
"bootstrap_peers": ["200:xxxx::x"],
"discovery_interval_ms": 600000,
"startup_delay_ms": 30000
}
}
}
```
- `bootstrap_peers`: extra addresses to announce to (merged with remote list)
- `discovery_interval_ms`: gossip loop interval (default 10 min)
- `startup_delay_ms`: wait before first bootstrap (default 30s, lets Yggdrasil routes converge)
## Trust model
- TCP source IP must be in `200::/7` (Yggdrasil range)
- `fromYgg` in the body must match TCP source IP (prevents body spoofing)
- Ed25519 signature must be valid
- TOFU: first message from an address caches the public key; subsequent messages must use the same key. A mismatch returns 403.
# IPv6 P2P — Example Interaction Flows
## Flow 1 — Discover peers on the network
```
User: "Find other agents I can talk to"
1. p2p_discover()
→ "Discovery complete — 5 new peer(s) found. Known peers: 8"
2. p2p_list_peers()
→ Show the list so user can pick someone to message.
```
## Flow 2 — User gives a new peer address and asks to send
```
User: "Alice's agent is at 200:abc:def::1 — send her 'hello'"
1. p2p_add_peer(ygg_addr="200:abc:def::1", alias="Alice")
2. p2p_send_message(ygg_addr="200:abc:def::1", message="hello")
→ "Message delivered to Alice (200:abc:def::1)"
```
## Flow 3 — User wants to share their own address
```
User: "What is my agent's P2P address?"
1. p2p_status()
→ "Your agent's P2P address is 200:1234::a. Share this with others."
```
## Flow 4 — User references a peer by alias
```
User: "Send 'ready' to Bob"
1. p2p_list_peers() ← find Bob's address by alias
2. p2p_send_message(ygg_addr=<bob's addr>, message="ready")
→ "Message sent to Bob."
```
## Flow 5 — Delivery fails (with diagnosis)
```
User: "Send 'hello' to 200:ffff::c"
1. p2p_add_peer(ygg_addr="200:ffff::c")
2. p2p_send_message(ygg_addr="200:ffff::c", message="hello")
→ error: connection refused
3. yggdrasil_check() ← diagnose before reporting
→ yggdrasil running, address is routable
→ "Could not reach 200:ffff::c — the peer's agent may be
offline or their port 8099 is blocked. Our Yggdrasil
connection is healthy."
```
## Flow 6 — Peer uses non-default port
```
User: "Send 'ping' to 200:abc::1 on port 9001"
1. p2p_add_peer(ygg_addr="200:abc::1")
2. p2p_send_message(ygg_addr="200:abc::1", message="ping", port=9001)
→ "Message delivered to 200:abc::1"
```
## Flow 7 — First-time user
```
User: "How do I use P2P?"
1. yggdrasil_check()
→ derived_only (Yggdrasil not running)
→ "You need Yggdrasil installed for P2P to work. It gives your
agent a globally-routable IPv6 address."
(Guide through install — see yggdrasil-setup skill)
```
## Flow 8 — Discovery returns nothing
```
User: "Find other agents"
1. p2p_discover()
→ "Discovery complete — 0 new peer(s) found. Known peers: 0"
→ "No peers found — the bootstrap nodes may be temporarily
unreachable. Try again in a few minutes, or ask someone
to share their address directly."
```
# Yggdrasil Installation Guide
Yggdrasil is a lightweight, end-to-end encrypted IPv6 overlay network.
After install, restart the OpenClaw gateway — the plugin starts the daemon automatically.
---
## macOS
```bash
brew install yggdrasil
```
Verify:
```bash
yggdrasil -version
```
---
## Linux — Debian / Ubuntu / Raspberry Pi OS
```bash
# Add the Yggdrasil apt repo
curl -sL https://www.yggdrasil-network.github.io/apt-key.gpg | sudo apt-key add -
echo "deb http://www.yggdrasil-network.github.io/apt/ debian main" \
| sudo tee /etc/apt/sources.list.d/yggdrasil.list
sudo apt update
sudo apt install yggdrasil
```
> The plugin manages its own daemon. You do NOT need `systemctl enable yggdrasil` — the gateway controls it.
Verify:
```bash
yggdrasil -version
```
---
## Linux — Arch
```bash
yay -S yggdrasil # or: paru -S yggdrasil
```
---
## Linux — Manual / other distros
Download the latest release binary from:
https://github.com/yggdrasil-network/yggdrasil-go/releases/latest
Pick the archive for your arch (e.g. `yggdrasil-X.Y.Z-linux-amd64.tar.gz`),
extract, and place the `yggdrasil` binary somewhere on your `$PATH`:
```bash
tar -xzf yggdrasil-*.tar.gz
sudo mv yggdrasil /usr/local/bin/
```
---
## Windows
Download the `.msi` installer from:
https://github.com/yggdrasil-network/yggdrasil-go/releases/latest
Run it. The binary ends up at `C:\Program Files\Yggdrasil\yggdrasil.exe`.
Make sure `C:\Program Files\Yggdrasil` is on your system `PATH`.
---
## Docker
```dockerfile
# Requires NET_ADMIN for TUN interface
docker run --cap-add=NET_ADMIN --device=/dev/net/tun ...
```
---
## After any install
1. Restart the OpenClaw gateway.
2. The plugin detects the binary, generates a config, and starts the daemon.
3. Your `200::/8` address will be shown in the gateway logs.
4. Call `yggdrasil_check()` to confirm and get your routable address to share.
## Troubleshooting
If `yggdrasil_check()` still returns `derived_only` after install:
| Symptom | Fix |
|---|---|
| `which yggdrasil` returns nothing | Binary not on PATH. Reinstall or add to PATH. |
| Binary found but daemon not starting | Restart the OpenClaw gateway — plugin detects binary at startup. |
| Linux: permission denied on TUN | Needs `CAP_NET_ADMIN`. Run as root or `sudo setcap cap_net_admin+ep $(which yggdrasil)`. |
| Docker: no TUN device | Add `--cap-add=NET_ADMIN --device=/dev/net/tun` to container. |
---
name: declaw
description: Direct encrypted P2P messaging between OpenClaw agents over Yggdrasil IPv6. Peer discovery, messaging, and connectivity diagnostics. Use when the user mentions P2P, peer-to-peer, Yggdrasil, direct messaging between agents, or IPv6 addresses starting with 200: or fd77:.
version: 0.1.3
metadata:
openclaw:
emoji: "🔗"
homepage: https://github.com/ReScienceLab/declaw
install:
- kind: node
package: "@resciencelab/declaw"
---
# DeClaw
Direct agent-to-agent messaging over Yggdrasil IPv6. Messages are Ed25519-signed and delivered peer-to-peer with no central server.
## Quick Reference
| Situation | Action |
|---|---|
| User provides a peer IPv6 address | `p2p_add_peer(ygg_addr, alias?)` |
| User wants to send a message | `p2p_send_message(ygg_addr, message, port?)` |
| User asks who they can reach | `p2p_list_peers()` |
| User asks for their own address | `p2p_status()` |
| User wants to find agents on the network | `p2p_discover()` |
| Sending fails or connectivity issues | `yggdrasil_check()` then diagnose |
| "Is P2P working?" / "Can I connect?" | `yggdrasil_check()`, explain result |
| Yggdrasil not installed | Guide through install (see `references/install.md`) |
## Tool Parameters
### p2p_add_peer
- `ygg_addr` (required): Yggdrasil `200:` or ULA `fd77:` IPv6 address
- `alias` (optional): human-readable name, e.g. "Alice"
### p2p_send_message
- `ygg_addr` (required): recipient address
- `message` (required): text content
- `port` (optional, default 8099): recipient's P2P port — pass explicitly if the peer uses a non-default port
### p2p_discover
No parameters. Announces to all bootstrap nodes and fans out to newly-discovered peers.
### p2p_status
Returns: own address, known peer count, unread inbox count.
### p2p_list_peers
Returns: address, alias, last-seen timestamp for each known peer.
### yggdrasil_check
Returns: binary installed (bool), daemon running (bool), address, address type, routable (bool).
| Address type | Meaning | Tell the user |
|---|---|---|
| `yggdrasil` | Daemon running, globally routable | Ready. Share the address with peers. |
| `test_mode` | Local/Docker only | Fine for testing. Not reachable by internet peers. |
| `derived_only` | Yggdrasil not running | Not reachable. Install Yggdrasil first. |
## Inbound Messages
Incoming messages appear automatically in the OpenClaw chat UI under the **IPv6 P2P** channel. No polling tool is needed.
## Error Handling
| Error | Diagnosis |
|---|---|
| Send fails: connection refused / timeout | `yggdrasil_check()`. If `derived_only` → install Yggdrasil. If `yggdrasil` → peer offline or port blocked. |
| Discover returns 0 peers | Bootstrap nodes unreachable. Retry later or share addresses manually. |
| TOFU key mismatch (403) | Peer rotated keys. Re-add with `p2p_add_peer`. |
| `derived_only` after install | Binary not on PATH, or gateway not restarted. See `references/install.md`. |
## Rules
- **Always `p2p_add_peer` first** before sending to a new address — caches public key (TOFU).
- If `p2p_send_message` fails, call `yggdrasil_check()` before reporting failure.
- Never invent IPv6 addresses — always ask the user explicitly.
- Valid formats: `200:xxxx::x` (Yggdrasil mainnet) or `fd77:xxxx::x` (ULA/test).
**References**: `references/flows.md` (interaction examples) · `references/discovery.md` (bootstrap + gossip) · `references/install.md` (Yggdrasil setup)
+2
-5
/**
* OpenClaw channel registration for IPv6 P2P messaging.
* Registers "ipv6-p2p" as a messaging channel so OpenClaw users can
* OpenClaw channel registration for DeClaw P2P messaging.
* Registers "declaw" as a messaging channel so OpenClaw users can
* chat directly with peers via the standard OpenClaw UI.

@@ -45,7 +45,4 @@ */

* in the conversation UI as incoming channel messages.
*
* api.gateway is the internal Gateway object exposed to plugins.
* We emit a synthetic inbound message event.
*/
export declare function wireInboundToGateway(api: any): void;
//# sourceMappingURL=channel.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM;;;;;;;;;;;;;;QAavD,gEAAgE;+BACzC,OAAO;QAC9B,uEAAuE;+BAChD,OAAO,aAAa,MAAM,GAAG,SAAS;;;;;;;;sCAQzB;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE;;;;EASvF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAiBnD"}
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM;;;;;;;;;;;;;;QAavD,gEAAgE;+BACzC,OAAO;QAC9B,uEAAuE;+BAChD,OAAO,aAAa,MAAM,GAAG,SAAS;;;;;;;;sCAQzB;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE;gBAAE,OAAO,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE;;;;EASvF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAcnD"}

@@ -10,10 +10,10 @@ "use strict";

return {
id: "ipv6-p2p",
id: "declaw",
meta: {
id: "ipv6-p2p",
label: "IPv6 P2P",
selectionLabel: "IPv6 P2P (Yggdrasil)",
docsPath: "/channels/ipv6-p2p",
id: "declaw",
label: "DeClaw",
selectionLabel: "DeClaw (Yggdrasil P2P)",
docsPath: "/channels/declaw",
blurb: "Direct encrypted P2P messaging via Yggdrasil IPv6. No servers, no middlemen.",
aliases: ["p2p", "ygg", "yggdrasil"],
aliases: ["p2p", "ygg", "yggdrasil", "ipv6-p2p"],
},

@@ -36,3 +36,3 @@ capabilities: { chatTypes: ["direct"] },

if (!result.ok) {
console.error(`[p2p] Failed to send to ${account.yggAddr}: ${result.error}`);
console.error(`[declaw] Failed to send to ${account.yggAddr}: ${result.error}`);
}

@@ -47,5 +47,2 @@ return { ok: result.ok };

* in the conversation UI as incoming channel messages.
*
* api.gateway is the internal Gateway object exposed to plugins.
* We emit a synthetic inbound message event.
*/

@@ -57,6 +54,4 @@ function wireInboundToGateway(api) {

try {
// OpenClaw's internal gateway receives inbound channel messages via
// api.gateway.receiveChannelMessage (channel id + account id + text)
api.gateway?.receiveChannelMessage?.({
channelId: "ipv6-p2p",
channelId: "declaw",
accountId: msg.fromYgg,

@@ -68,4 +63,3 @@ text: msg.content,

catch {
// Gateway API may differ by OpenClaw version — fallback: just log
console.log(`[p2p] Message from ${msg.fromYgg.slice(0, 20)}...: ${msg.content}`);
console.log(`[declaw] Message from ${msg.fromYgg.slice(0, 20)}...: ${msg.content}`);
}

@@ -72,0 +66,0 @@ });

@@ -1,1 +0,1 @@

{"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":";;AAUA,oCAiCC;AASD,oDAiBC;AA/DD,+CAA+C;AAC/C,uCAAoE;AACpE,+CAA0C;AAE1C,SAAgB,YAAY,CAAC,QAAkB,EAAE,IAAY;IAC3D,OAAO;QACL,EAAE,EAAE,UAAU;QACd,IAAI,EAAE;YACJ,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,UAAU;YACjB,cAAc,EAAE,sBAAsB;YACtC,QAAQ,EAAE,oBAAoB;YAC9B,KAAK,EAAE,8EAA8E;YACrF,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC;SACrC;QACD,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;QACvC,MAAM,EAAE;YACN,gEAAgE;YAChE,cAAc,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,IAAA,0BAAgB,GAAE;YACrD,uEAAuE;YACvE,cAAc,EAAE,CAAC,IAAa,EAAE,SAA6B,EAAE,EAAE;gBAC/D,MAAM,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAA,mBAAS,GAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;gBACzD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;YACxE,CAAC;SACF;QACD,QAAQ,EAAE;YACR,YAAY,EAAE,QAAiB;YAC/B,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAkD,EAAE,EAAE;gBACpF,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAc,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACnF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/E,CAAC;gBACD,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YAC3B,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,GAAQ;IAC3C,IAAA,uBAAS,EAAC,CAAC,GAAG,EAAE,EAAE;QAChB,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;YAAE,OAAO;QACjC,IAAI,CAAC;YACH,oEAAoE;YACpE,qEAAqE;YACrE,GAAG,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC;gBACnC,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,GAAG,CAAC,OAAO;gBACtB,IAAI,EAAE,GAAG,CAAC,OAAO;gBACjB,QAAQ,EAAE,GAAG,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":";;AAUA,oCAiCC;AAMD,oDAcC;AAzDD,+CAA+C;AAC/C,uCAAoE;AACpE,+CAA0C;AAE1C,SAAgB,YAAY,CAAC,QAAkB,EAAE,IAAY;IAC3D,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE;YACJ,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,QAAQ;YACf,cAAc,EAAE,wBAAwB;YACxC,QAAQ,EAAE,kBAAkB;YAC5B,KAAK,EAAE,8EAA8E;YACrF,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC;SACjD;QACD,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;QACvC,MAAM,EAAE;YACN,gEAAgE;YAChE,cAAc,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,IAAA,0BAAgB,GAAE;YACrD,uEAAuE;YACvE,cAAc,EAAE,CAAC,IAAa,EAAE,SAA6B,EAAE,EAAE;gBAC/D,MAAM,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAA,mBAAS,GAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;gBACzD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;YACxE,CAAC;SACF;QACD,QAAQ,EAAE;YACR,YAAY,EAAE,QAAiB;YAC/B,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAkD,EAAE,EAAE;gBACpF,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAc,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACnF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAClF,CAAC;gBACD,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YAC3B,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,GAAQ;IAC3C,IAAA,uBAAS,EAAC,CAAC,GAAG,EAAE,EAAE;QAChB,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;YAAE,OAAO;QACjC,IAAI,CAAC;YACH,GAAG,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC;gBACnC,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,GAAG,CAAC,OAAO;gBACtB,IAAI,EAAE,GAAG,CAAC,OAAO;gBACjB,QAAQ,EAAE,GAAG,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}

@@ -64,3 +64,3 @@ "use strict";

let yggInfo = null;
let dataDir = path.join(os.homedir(), ".openclaw", "ipv6-p2p");
let dataDir = path.join(os.homedir(), ".openclaw", "declaw");
let peerPort = 8099;

@@ -72,3 +72,3 @@ let _testMode = false;

api.registerService({
id: "ipv6-p2p-node",
id: "declaw-node",
start: async () => {

@@ -145,10 +145,10 @@ const cfg = api.config?.plugins?.entries?.["declaw"]?.config ?? {};

plugin: {
id: "ipv6-p2p",
id: "declaw",
meta: {
id: "ipv6-p2p",
label: "IPv6 P2P",
selectionLabel: "IPv6 P2P (Yggdrasil)",
docsPath: "/channels/ipv6-p2p",
id: "declaw",
label: "DeClaw",
selectionLabel: "DeClaw (Yggdrasil P2P)",
docsPath: "/channels/declaw",
blurb: "Direct encrypted P2P messaging via Yggdrasil IPv6.",
aliases: ["p2p", "ygg"],
aliases: ["p2p", "ygg", "ipv6-p2p"],
},

@@ -155,0 +155,0 @@ capabilities: { chatTypes: ["direct"] },

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}

@@ -6,4 +6,4 @@ {

"version": "0.1.0",
"channels": ["ipv6-p2p"],
"skills": ["./skills/ipv6-p2p", "./skills/yggdrasil"],
"channels": ["declaw"],
"skills": ["./skills/declaw"],
"configSchema": {

@@ -20,3 +20,3 @@ "type": "object",

"type": "string",
"description": "Directory to store identity and peer data (default: ~/.openclaw/ipv6-p2p)"
"description": "Directory to store identity and peer data (default: ~/.openclaw/declaw)"
},

@@ -23,0 +23,0 @@ "yggdrasil_peers": {

{
"name": "@resciencelab/declaw",
"version": "0.1.2",
"version": "0.2.0",
"description": "Direct P2P communication between OpenClaw instances over Yggdrasil IPv6",

@@ -18,6 +18,6 @@ "main": "dist/index.js",

"channel": {
"id": "ipv6-p2p",
"label": "IPv6 P2P",
"selectionLabel": "IPv6 P2P (Yggdrasil)",
"docsPath": "/channels/ipv6-p2p",
"id": "declaw",
"label": "DeClaw",
"selectionLabel": "DeClaw (Yggdrasil P2P)",
"docsPath": "/channels/declaw",
"blurb": "Direct encrypted P2P messaging via Yggdrasil IPv6. No servers, no middlemen.",

@@ -24,0 +24,0 @@ "order": 90,

+151
-9

@@ -75,8 +75,11 @@ ![DeClaw banner](assets/banner.png)

"entries": {
"ipv6-p2p": {
"declaw": {
"enabled": true,
"config": {
"peer_port": 8099,
"data_dir": "~/.openclaw/ipv6-p2p",
"yggdrasil_peers": []
"data_dir": "~/.openclaw/declaw",
"yggdrasil_peers": [],
"bootstrap_peers": [],
"discovery_interval_ms": 600000,
"startup_delay_ms": 30000
}

@@ -91,12 +94,151 @@ }

### System Overview
```mermaid
flowchart TB
subgraph UserNode["User Machine / VPS"]
subgraph OC["OpenClaw Gateway"]
UI["Chat UI / Slash Commands"]
CLI["CLI: openclaw p2p *"]
GW["Gateway Event Bus"]
end
subgraph Plugin["DeClaw Plugin"]
IDX["src/index.ts<br/>service bootstrap + wiring"]
CH["channel.ts<br/>OpenClaw channel adapter"]
PC["peer-client.ts<br/>signed outbound HTTP"]
PS["peer-server.ts<br/>/peer/ping<br/>/peer/announce<br/>/peer/message"]
PD["peer-discovery.ts<br/>bootstrap + gossip loop"]
ID["identity.ts<br/>Ed25519 identity + IPv6 derivation"]
DB["peer-db.ts<br/>TOFU peer store"]
end
subgraph FS["Local Data Dir ~/.openclaw/declaw"]
IDJSON["identity.json"]
PEERS["peers.json"]
YGGDIR["yggdrasil/"]
YGGCONF["yggdrasil.conf"]
YGGSOCK["yggdrasil.sock"]
YGGLOG["yggdrasil.log"]
end
YGG["Local IPv6 overlay daemon"]
end
subgraph Bootstrap["Bootstrap Layer"]
BJSON["docs/bootstrap.json<br/>published bootstrap list"]
BS["bootstrap/server.mjs<br/>peer exchange server"]
end
subgraph RemotePeers["Remote OpenClaw Peers"]
PeerA["Peer A<br/>OpenClaw + DeClaw"]
PeerB["Peer B<br/>OpenClaw + DeClaw"]
PeerN["Peer N"]
end
UI --> GW
CLI --> IDX
GW --> CH
IDX --> ID
IDX --> DB
IDX --> PS
IDX --> PD
IDX --> YGG
CH --> PC
PS --> DB
PD --> DB
ID --> IDJSON
DB --> PEERS
YGG --> YGGDIR
YGGDIR --> YGGCONF
YGGDIR --> YGGSOCK
YGGDIR --> YGGLOG
PD --> BJSON
PD --> BS
BS --> PeerA
BS --> PeerB
BS --> PeerN
PC <--> PeerA
PC <--> PeerB
PC <--> PeerN
PS <--> PeerA
PS <--> PeerB
PS <--> PeerN
```
~/.openclaw/ipv6-p2p/
├── identity.json Ed25519 keypair + derived addresses
├── peers.db SQLite — known peers + TOFU public key cache
### Startup Flow
```mermaid
sequenceDiagram
participant OC as OpenClaw
participant IDX as src/index.ts
participant ID as identity.ts
participant DB as peer-db.ts
participant YGG as IPv6 Overlay Daemon
participant PS as peer-server.ts
participant PD as peer-discovery.ts
participant BS as Bootstrap Nodes
OC->>IDX: start plugin service
IDX->>ID: loadOrCreateIdentity(dataDir)
ID-->>IDX: Ed25519 keypair + derived IPv6
IDX->>DB: initDb(dataDir)
IDX->>YGG: start daemon (best effort)
YGG-->>IDX: routable IPv6 + subnet
IDX->>PS: listen on [::]:peer_port
IDX->>OC: register channel + CLI + tools
IDX->>PD: wait startup_delay_ms
PD->>BS: fetch bootstrap list + POST /peer/announce
BS-->>PD: known peer sample
PD->>DB: upsert discovered peers
PD->>BS: periodic gossip / re-announce
```
### Message Delivery Path
```mermaid
sequenceDiagram
participant UI as OpenClaw UI / CLI
participant CH as channel.ts
participant PC as peer-client.ts
participant Net as IPv6 Network
participant PS as peer-server.ts
participant DB as peer-db.ts
participant GW as OpenClaw Gateway
UI->>CH: sendText(account, text)
CH->>PC: sendP2PMessage(identity, yggAddr, "chat", text)
PC->>PC: sign canonical payload (Ed25519)
PC->>Net: POST /peer/message
Net->>PS: inbound HTTP request
PS->>PS: validate source IPv6 == body.fromYgg
PS->>PS: verify Ed25519 signature
PS->>DB: TOFU verify/cache public key
PS->>GW: receiveChannelMessage(...)
GW-->>UI: render inbound chat
```
### Runtime Components
- `src/index.ts`: owns plugin lifecycle, starts local services, registers the OpenClaw channel, CLI commands, slash commands, and LLM-callable tools.
- `identity.ts`: creates the Ed25519 identity, derives stable IPv6 addresses, and signs/verifies canonical payloads.
- `peer-server.ts`: inbound HTTP surface for ping, peer exchange, and direct message delivery.
- `peer-client.ts`: outbound signed HTTP client for direct peer communication.
- `peer-discovery.ts`: bootstraps from public bootstrap nodes, merges peer tables, and runs periodic gossip.
- `peer-db.ts`: persists known peers, caches first-seen public keys, and enforces TOFU on later messages.
- `bootstrap/server.mjs`: standalone bootstrap node for peer exchange and network seeding.
### Local Files
```text
~/.openclaw/declaw/
├── identity.json Ed25519 keypair + derived IPv6 addresses
├── peers.json Known peers + TOFU public key cache
└── yggdrasil/
├── yggdrasil.conf Stable keypair (survives restarts)
└── yggdrasil.log Daemon logs
├── yggdrasil.conf Local daemon config
├── yggdrasil.sock Admin socket
└── yggdrasil.log Daemon logs
```
The peer server listens on `[::]:8099` (all IPv6 interfaces, including Yggdrasil's `tun0`).
The peer server listens on `[::]:8099` by default, so it can accept direct IPv6 traffic from other peers.

@@ -103,0 +245,0 @@ ### Trust model

# IPv6 P2P — Example Interaction Flows
## Flow 0 — Discover peers on the network
```
User: "Find other agents I can talk to"
1. p2p_discover()
→ "Found 3 peers via bootstrap. Use p2p_list_peers() to see them."
```
## Flow 1 — User gives a new peer address and asks to send
```
User: "Alice's agent address is fd77:1234:5678::b — send her 'hello'"
1. p2p_add_peer(ygg_addr="fd77:1234:5678::b", alias="Alice")
2. p2p_send_message(ygg_addr="fd77:1234:5678::b", message="hello")
→ "Message delivered to Alice's agent."
```
## Flow 2 — User wants to share their own address
```
User: "What is my agent's P2P address?"
1. p2p_status()
→ "Your agent's P2P address is fd77:1234:5678::a. Share this with others."
```
## Flow 3 — User references a peer by alias
```
User: "Send 'ready' to Bob"
1. p2p_list_peers() ← find Bob's address by alias
2. p2p_send_message(ygg_addr=<bob's addr>, message="ready")
→ "Message sent to Bob."
```
## Flow 4 — Delivery fails
```
User: "Send 'hello' to fd77::c"
1. p2p_add_peer(ygg_addr="fd77::c")
2. p2p_send_message(ygg_addr="fd77::c", message="hello")
→ error: connection refused
→ "Could not reach fd77::c. Make sure the peer's agent is running and
their P2P port (default 8099) is reachable."
```
---
name: ipv6-p2p
description: Send/receive direct encrypted P2P messages between OpenClaw agents using Yggdrasil or ULA IPv6 addresses.
version: 0.1.0
metadata:
openclaw:
emoji: "🔗"
homepage: https://github.com/ReScienceLab/declaw
install:
- kind: node
package: "@resciencelab/declaw"
---
# IPv6 P2P Skill
Direct agent-to-agent messaging over IPv6. No servers — messages are signed with Ed25519 and delivered peer-to-peer.
## When to use
| Situation | Tool to call |
|---|---|
| User provides a peer's IPv6 address | `p2p_add_peer(ygg_addr, alias?)` |
| User wants to send a message to a peer | `p2p_send_message(ygg_addr, message)` |
| User asks who you can reach / known contacts | `p2p_list_peers()` |
| User asks for their own agent's address | `p2p_status()` |
| User asks to find other agents on the network | `p2p_discover()` |
## Peer Discovery
Agents discover each other automatically via bootstrap + gossip:
1. On startup, the plugin fetches the bootstrap node list from `https://resciencelab.github.io/DeClaw/bootstrap.json`
2. It announces itself (Ed25519-signed) to each bootstrap node and receives their peer table
3. It then "fans out" — announcing to newly-discovered peers so they learn about us too
4. A periodic gossip loop (default 10 min) keeps the routing table fresh
No LLM tokens are consumed during discovery — it's pure HTTP + cryptographic signing.
### Configuration
```json
{
"declaw": {
"config": {
"bootstrap_peers": ["200:xxxx::x"],
"discovery_interval_ms": 600000,
"startup_delay_ms": 30000
}
}
}
```
## Rules
- **Always call `p2p_add_peer` first** for any new IPv6 address before sending — this caches their public key (TOFU security).
- Pass the user-provided name/alias to `p2p_add_peer` if given.
- If `p2p_send_message` fails, call `yggdrasil_check()` to diagnose connectivity before reporting to the user.
- If the user has never used P2P before, call `yggdrasil_check()` first to confirm their address is routable.
- Never invent IPv6 addresses — always ask the user to provide one explicitly.
- Valid address formats: `fd77:xxxx::x` (ULA/test) or `200:xxxx::x` (Yggdrasil mainnet).
See `references/flows.md` for example interaction patterns.
# Yggdrasil Installation Guide
Yggdrasil is a lightweight, end-to-end encrypted IPv6 overlay network.
After install, restart the OpenClaw gateway — the plugin starts the daemon automatically.
---
## macOS
```bash
brew install yggdrasil
```
Verify:
```bash
yggdrasil -version
```
---
## Linux — Debian / Ubuntu / Raspberry Pi OS
```bash
# Add the Yggdrasil apt repo
curl -sL https://www.yggdrasil-network.github.io/apt-key.gpg | sudo apt-key add -
echo "deb http://www.yggdrasil-network.github.io/apt/ debian main" \
| sudo tee /etc/apt/sources.list.d/yggdrasil.list
sudo apt update
sudo apt install yggdrasil
```
> The plugin manages its own daemon. You do NOT need `systemctl enable yggdrasil` — the gateway controls it.
Verify:
```bash
yggdrasil -version
```
---
## Linux — Arch
```bash
yay -S yggdrasil # or: paru -S yggdrasil
```
---
## Linux — Manual / other distros
Download the latest release binary from:
https://github.com/yggdrasil-network/yggdrasil-go/releases/latest
Pick the archive for your arch (e.g. `yggdrasil-X.Y.Z-linux-amd64.tar.gz`),
extract, and place the `yggdrasil` binary somewhere on your `$PATH`:
```bash
tar -xzf yggdrasil-*.tar.gz
sudo mv yggdrasil /usr/local/bin/
```
---
## Windows
Download the `.msi` installer from:
https://github.com/yggdrasil-network/yggdrasil-go/releases/latest
Run it. The binary ends up at `C:\Program Files\Yggdrasil\yggdrasil.exe`.
Make sure `C:\Program Files\Yggdrasil` is on your system `PATH`.
---
## After any install
1. Restart the OpenClaw gateway.
2. The plugin detects the binary, generates a config, and starts the daemon.
3. Your `200::/8` address will be shown in the gateway logs.
4. Call `yggdrasil_check()` to confirm and get your routable address to share.
---
name: yggdrasil-setup
description: Diagnose and guide Yggdrasil installation so the agent can establish globally-routable IPv6 P2P connections.
version: 0.1.0
metadata:
openclaw:
emoji: "🌐"
homepage: https://github.com/ReScienceLab/declaw
install:
- kind: node
package: "@resciencelab/declaw"
---
# Yggdrasil Setup Skill
Yggdrasil gives every OpenClaw agent a globally-routable `200::/8` IPv6 address derived from their Ed25519 keypair. Without it, P2P addresses are local-only and unreachable by peers on other machines.
## When to use
| Situation | Action |
|---|---|
| User asks "is P2P working?" or "can I connect?" | Call `yggdrasil_check()`, explain the result |
| User asks "what is my address?" for the first time | Call `yggdrasil_check()` to confirm it is routable |
| `p2p_send_message` fails | Call `yggdrasil_check()` to diagnose |
| User says Yggdrasil is not installed | Guide through installation (see `references/install.md`) |
| User asks what Yggdrasil is | Explain briefly, then ask if they want to install |
## Interpreting yggdrasil_check results
| Address type | Meaning | What to tell the user |
|---|---|---|
| `yggdrasil` | Daemon running, address is globally routable | Ready. Share the address with peers. |
| `test_mode` | Local/Docker only | Fine for testing on the same machine/network. Not for internet peers. |
| `derived_only` | Yggdrasil not running | Address is NOT reachable. Install Yggdrasil first. |
## After install
Tell the user: "Restart the OpenClaw gateway. The plugin will detect Yggdrasil automatically and start the daemon — no extra configuration needed."
Then call `yggdrasil_check()` again to confirm the daemon started and show the real routable address.
See `references/install.md` for platform-specific install commands.