No API, Just a QR Code
The WhatsApp channel connects Wolffish to your WhatsApp account via the Web protocol. No official API needed, no business account required — just scan a QR code and your personal AI is available in WhatsApp.Setup
- Step 1: Enable
- Step 2: Scan QR
- Step 3: Connected
In Wolffish, open Settings > WhatsApp and toggle the channel on. A QR code will appear.
Wolffish connects as a linked device using WhatsApp’s multi-device protocol. Your phone doesn’t need to stay online after the initial pairing.
Connection Flow
Commands
The same slash commands available in Telegram work in WhatsApp:| Command | Action |
|---|---|
/stop | Cancel the currently running task |
/new | Start a fresh conversation |
/resume | Continue the previous conversation |
/delete | Delete the current conversation |
/current | Show which conversation is active |
/status | System report (model, memory usage, uptime) |
/local | Switch to local model (Ollama) |
/cloud | Switch to cloud model (Claude/OpenAI) |
Approval Flow
When the amygdala flags a tool call, WhatsApp uses text-based prompts since inline buttons aren’t available:approve, Approve, APPROVE, yes, and y all work.
Unlike Telegram’s inline buttons, WhatsApp approvals are regular text messages. The channel recognizes approval/denial keywords only when an approval request is pending.
Reconnection
If the WebSocket connection drops (network change, sleep/wake, server restart), Wolffish reconnects automatically with exponential backoff:| Attempt | Delay |
|---|---|
| 1 | 2 seconds |
| 2 | 4 seconds |
| 3 | 8 seconds |
| 4 | 16 seconds |
| 5-12 | 30 seconds (capped) |
Stale Message Handling
Messages older than 3 hours are ignored by default. This prevents Wolffish from processing a backlog of messages that accumulated while it was offline — those messages likely no longer need a response. The threshold is configurable inconfig.json:
0 to disable stale message filtering and process everything regardless of age.
Voice Notes
Voice notes sent in WhatsApp are transcribed via Wolffish’s STT (speech-to-text) capability and processed as regular text input. The transcription happens locally before the message enters the brain pipeline.Busy Handling
If a turn is already running when a new WhatsApp message arrives, Wolffish sends a brief acknowledgment:Verbose Task Results
By default, WhatsApp receives a clean feed — the agent’s replies, any files or voice it produces, and errors. Routine tool steps stay in the desktop UI. Toggle this in Settings → Channels → WhatsApp → Verbose task results:- Off (default) — agent messages, file-bearing results, and errors only.
- On — every tool call, result, and activity is relayed to the chat.
Verbose changes only what is sent to WhatsApp. The full turn is still saved to history and memory regardless of the setting.
Conversation Mapping
Each WhatsApp JID (phone number identifier) maps to a Wolffish conversation. In practice:- Messages you send to yourself (via “Message Yourself” in WhatsApp) create one conversation
- If you configure Wolffish to respond to a specific contact, that contact’s JID gets its own conversation
Under the Hood
The WhatsApp channel uses Baileys, an open-source TypeScript implementation of the WhatsApp Web protocol. Baileys handles:- QR code generation and multi-device authentication
- WebSocket connection management
- Message encryption/decryption (Signal protocol)
- Media download and upload
- Presence and typing indicators