WhatsApp Sync¶
Skippy supports two-way synchronization with WhatsApp, allowing you to chat from your phone and see responses on desktop (and vice versa).
How It Works¶
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Desktop │ ←─────→ │ OpenClaw │ ←─────→ │ WhatsApp │
│ Skippy │ │ Gateway │ │ Phone │
└─────────────┘ └─────────────┘ └─────────────┘
- Desktop → WhatsApp: Your desktop messages are delivered to WhatsApp
- WhatsApp → Desktop: Phone messages appear in Skippy window
- Shared Session: Both use the same conversation history
Setup¶
1. Configure OpenClaw WhatsApp Channel¶
Ensure WhatsApp is connected in OpenClaw:
2. Enable Sync in Skippy¶
Via Tray Menu:
- Right-click tray icon
- Check 📱 Sync to WhatsApp
Via Config:
3. Verify Connection¶
Send a test message from Skippy. You should receive:
- The AI response on desktop
- The same response on WhatsApp
Features¶
Two-Way Messaging¶
| Direction | What Happens |
|---|---|
| Desktop → WhatsApp | Response delivered to your phone |
| WhatsApp → Desktop | Message appears with 📱 icon |
Message Prefixes¶
Desktop messages are tagged to identify their source:
WhatsApp messages appear as:
Notification on Hidden Window¶
When Skippy is minimized and a WhatsApp message arrives:
- System tray notification appears
- "New message from WhatsApp"
- Double-click tray to view
Configuration¶
config.json Settings¶
| Setting | Description |
|---|---|
session_id |
Shared session identifier |
sync_whatsapp |
Enable/disable sync |
whatsapp_number |
Your WhatsApp number |
Session ID¶
The session_id determines which conversation is shared:
- Use same ID on desktop and WhatsApp for shared history
- Use different IDs for separate conversations
How Sync Works Internally¶
Sending (Desktop → WhatsApp)¶
When you send from desktop:
- Message sent to OpenClaw with
--deliver --channel whatsappflag - OpenClaw processes and generates response
- Response delivered to both desktop and WhatsApp
Receiving (WhatsApp → Desktop)¶
Skippy monitors the session transcript:
TranscriptWatcherchecks~/.openclaw/agents/main/sessions/<session>.jsonl- New messages from WhatsApp detected
- Displayed in chat with 📱 prefix
- AI response (if any) appears normally
Transcript Location¶
Each line is a JSON entry with message content, role, timestamps.
Use Cases¶
Mobile Access¶
- Chat with Skippy from anywhere via phone
- Get responses even when desktop is locked
- Perfect for quick questions on the go
Hands-Free¶
- Use WhatsApp voice messages (not directly supported, but works via WhatsApp's transcription)
- Receive spoken notifications on phone
Multi-Device¶
- Start conversation on desktop
- Continue on phone
- Return to desktop with full history
Troubleshooting¶
Messages Not Syncing to WhatsApp¶
-
Check sync enabled:
-
Check WhatsApp channel:
-
Verify number format:
- Include country code
- Format:
+1234567890
WhatsApp Messages Not Appearing¶
- Check transcript watcher:
-
Look in debug.log for "TranscriptWatcher" entries
-
Verify session ID:
-
Both channels must use same session
-
Check file path:
Duplicate Messages¶
If seeing messages twice:
- Normal behavior for your own messages
- Check if both streaming and CLI are active
- Restart Skippy to reset state
Privacy Considerations¶
Shared Session
Messages from all channels (desktop, WhatsApp) are stored in the same session transcript.
End-to-End Encryption
WhatsApp maintains its E2E encryption. Messages to Skippy go through OpenClaw's WhatsApp bridge.
Disabling Sync¶
Temporarily¶
- Uncheck 📱 Sync to WhatsApp in tray menu
- Messages stay on desktop only
Permanently¶
Best Practices¶
Use for Quick Queries
WhatsApp is great for simple questions. Use desktop for: - Image analysis - Long conversations - Code-related tasks
Check Both Channels
If a response seems missing, check the other channel - network delays can cause asymmetric delivery.
Session Management
Use /session new on WhatsApp to start fresh if the shared context gets confusing.