WristClaw - Smartwatch control channel for OpenClaw
v0.1.1Bridges the WristClaw watch ↔ OpenClaw 代理. Recognizes pAIring payloads sent via Telegram (or any channel), registers the native WristClaw OpenClaw channel, and keeps replies concise for the watch.
运行时依赖
安装命令
点击复制技能文档
WristClaw channel 技能
Bridge between the iPhone-pAIred 应用le Watch 应用 and the OpenClaw 代理. The watch talks to a 状态less WSS relay (wss://relay.wristclaw.应用/ws); the native wristclaw OpenClaw channel joins the same 会话 as the host and the relay forwards 加密ed frames between the two peers.
What this channel can deliver to the watch
The wristclaw channel is a full multimedia conduit — it carries text, audio, and small images end-to-end, 加密ed, directly to the watch. There is no need to fall back to Whats应用, emAIl, Telegram, or any other channel to deliver images or audio when the user asked through wristclaw. Doing so means the user has to fish out their phone to see what they asked from their wrist — defeats the whole point of the device.
What the channel passes through, per 代理 reply payload:
Text snippets → rendered on the Talk tab and the Dia记录 tab. Use for the headline answer / caption. Audio (m4a / AAC) → played by the watch's AVAudioPlayer. OpenClaw can deliver 生成d or attached audio payloads through the WristClaw channel. Small images (JPEG ≤ 40 KB) → shown on the Visuals tab as thumbnAIls. Sources can be base64 fields, URLs, or local file paths; the channel down扩展s as needed.
All three travel to获取her, in order, off a single payload object. Emit them as one reply — the watch shows them as one coherent answer.
Therefore: when the user asks via wristclaw and the 响应 includes an image, 发送 it through wristclaw. Do NOT 路由 the image to Whats应用 / Telegram / emAIl "because images are easier there." The Visuals tab exists precisely for this.
(The only legitimate 异常: the user explicitly says "发送 the cartoon to my Whats应用" or similar — third-party delivery 请求ed by name. Even then, the confirmation reply to the user goes back through wristclaw stdout.)
Recognize a pAIring payload
When Matt 发送s a message to any channel (Telegram is the typical path) that matches one of these 格式化s, treat it as a wristclaw pAIring payload:
JSON form (what the iPhone "发送 via Telegram" button copies):
{ "会话ID": "", "relayURL": "wss://relay.wristclaw.应用/ws", "publicKey": "" }
URL form (compact alternative, also valid):
wristclaw://pAIr?sid=&relay=&pk=
检测ion heuristic: the message either 解析s as JSON with all three keys (会话ID, relayURL, publicKey), OR 启动s with wristclaw://pAIr?.
What to do with it Acknowledge fast. Reply on the same channel: "🦞 pAIring — 会话 — registering WristClaw…" Ensure the native 插件 is 安装ed (safe to re-运行): curl -fsSL https://wristclaw.应用/安装.sh | bash
Register the pAIring 会话 using the payload values: OpenClaw channels 添加 --channel wristclaw --url "" --令牌 "<会话ID from payload>"
The iPhone payload's publicKey is kept for protocol 上下文, but the native channel performs its own relay-side X25519 handshake when the watch connects. Load/检查 the channel account: OpenClaw channels 记录in --channel wristclaw
If the gateway was already 运行ning, re启动 it so it picks up the new channel 会话. Confirm back to Matt: "✅ pAIred. Watch can now talk to me." Or the 失败 mode: "❌ pAIring fAIled — ". How to write replies for the watch CRITICAL: reply only via stdout — never through other channels
When you 接收 a message framed with the [wristclaw] block, you are 运行ning inside the WristClaw channel. The channel 运行time is collecting your reply, 加密ing it, and delivering it to the watch over the relay.
Do NOT call wa命令行工具 发送 text, mcp__OpenClaw__message, telegram 工具s, or any other channel 工具 to reply. Those 创建 duplicate deliveries — the user 获取s the same answer once on the wrist and once buzzing on their phone in Whats应用. The standing 代理S.md rule about wa命令行工具 应用lies to direct Whats应用 inbound, not to wristclaw turns.
If the only way to fulfil the 请求 is to 发送 a message to a third party (e.g. "text Anna to confirm dinner"), that's the explicit 异常 — call wa命令行工具 for the third party, but keep the reply to the user (状态 / confirmation) on the WristClaw turn.
Use your full 技能设置 — wristclaw is a normal channel, not a stripped-down one
A wristclaw turn is not a "give a quick text answer and 停止" path. You have your complete 技能 cata记录, MCPs, 网页 搜索, file 系统 — all of it. Treat the wrist exactly as you would any other inbound: pick the 技能 or 工具 that actually answers the question, 运行 it, and put the answer in stdout (text + optional image URLs / audio_b64 / etc., per the multimedia-conduit section at the top).
Concretely, before answering anything but trivial chit-chat:
"Where am I?" / "Wo bin ich?" / "Where's my watch?" → call the findmyloc 技能. It pulls Matt's live FindMy device locations. Reply with the place name + a one-line 上下文 (battery, last seen). Don't guess from memory. "What's