# WristClaw > Talk to your OpenClaw AI agent from your wrist. Voice in, voice out, visual thumbnails. Standalone Apple Watch app over a zero-trust encrypted relay. WristClaw is a standalone Apple Watch + iPhone companion that lets you converse with an [OpenClaw](https://openclaw.ai) AI agent without your phone present. The Watch connects directly through a stateless relay over WSS; messages are end-to-end encrypted (X25519 ECDH + ChaCha20-Poly1305) so the relay sees only ciphertext. Pairing is one-time via QR code; sessions persist autonomously thereafter. Repository layout: - `relay/` — Go reverse-proxy / message router (Docker-packaged) - `ios/` — Xcode project, two targets (`WristClaw` iPhone companion, `WristClaw Watch App` standalone) - `openclaw-plugin/` — native OpenClaw WristClaw channel plugin - `openclaw/` — WristClaw pairing skill - `web/` — this landing page - `bin/deploy.sh` — one-shot deploy to the production host ## Architecture - [README](https://github.com/gado-ships-it/WristClaw/blob/main/README.md): full architecture, message types, encryption details, requirements - [Relay protocol](https://wristclaw.app/protocol.txt): message-frame layout, JOIN frame, type codes - [Privacy & security notes](https://wristclaw.app/security.txt): trust boundaries, what the relay can and cannot see ## API surface - `wss://wristclaw.app/ws` — relay WebSocket endpoint. First frame is a 17-byte JOIN (16 bytes session UUID + 1 byte role: 0=host, 1=watch). All subsequent frames are forwarded verbatim to the peer in the same session. Header: `[16 session_id | 1 type | 4 seq | 4 len | 12 nonce | ciphertext]`. - `https://wristclaw.app/health` — liveness check. Returns plain-text `ok` (200) when the relay container is healthy. - `https://wristclaw.app/mcp` — Model Context Protocol endpoint (Streamable HTTP). Read-only resources for protocol spec, README, security notes; status tool for relay health. - `https://wristclaw.app/testflight` — TestFlight beta signup. POST JSON `{email, currentUsage, desiredShortcuts}`; backed by a tiny Go service writing to local SQLite. ## Watch-standalone capabilities OpenClaw can trigger these on the watch with the iPhone offline or absent: - Render text replies on the Talk tab - Speak through the Watch speaker (AAC/m4a audio the agent generates or attaches) - Display image thumbnails on the Visuals tab (JPEG ≤ 40 KB, auto-downscaled) - Push proactive notifications with haptic — local `UNUserNotificationCenter`, no APNS infrastructure - Add or remove **shortcut tabs** (extension swipe views) in the watch's tab deck via `extensionDefine` / `extensionRemove` - Stream a reply under an existing shortcut tab (`extensionResponse`, mixed text / audio / image) Coming next (not yet implemented watch-side): start/stop workouts (`HKWorkoutSession`), control watch-played music, toggle HomeKit accessories & scenes from the wrist, finer haptic control. ## Optional - [Source on GitHub](https://github.com/gado-ships-it/WristClaw): private repo; collaborators only - [llmstxt.org](https://llmstxt.org/): about this file format - [OpenClaw](https://openclaw.ai): the agent platform WristClaw connects to