WhatsApp

WhatsApp

WhatsApp

Reeboot connects to WhatsApp using Baileys, a WhatsApp Web multi-device library. No WhatsApp Business API account or phone number is required beyond your own WhatsApp account.

WhatsApp is a Tier 1 channel: messages from external senders are subject to the channel policy layer (owner verification, trust gating).

Two Deployment Modes

Mode 1 — Self-Chat (default)

The agent runs on your own WhatsApp account. You talk to it by messaging yourself (the “Reeboot” linked device appears in your contacts). Leave owner_id empty.

{
  "channels": {
    "whatsapp": {
      "enabled": true,
      "owner_only": true
    }
  }
}

Mode 2 — Dedicated Account

The agent runs on a separate WhatsApp account (a second phone number or a dedicated SIM). You talk to it by messaging that number from your own account. Set owner_id to your own phone number or JID so reeboot knows who the owner is.

{
  "channels": {
    "whatsapp": {
      "enabled": true,
      "owner_id": "+15551234567",
      "owner_only": true
    }
  }
}

Setup

Step 1 — Enable in config

{
  "channels": {
    "whatsapp": { "enabled": true }
  }
}

Step 2 — Start the agent

reeboot start

Step 3 — Link the device

reeboot channels login whatsapp

A QR code appears in your terminal. Open WhatsApp on your phone:

Settings → Linked Devices → Link a Device → Scan QR

Step 4 — Send a message

In Mode 1: message yourself. In Mode 2: message the agent’s number from your own account.

The session persists across restarts — credentials are saved in ~/.reeboot/channels/whatsapp/auth/.

Re-linking

If the WhatsApp session expires or is revoked:

reeboot channels logout whatsapp
reeboot channels login whatsapp

Configuration Reference

FieldTypeDefaultDescription
channels.whatsapp.enabledbooleanfalseEnable the WhatsApp channel
channels.whatsapp.owner_idstring""Owner’s phone number or JID. Empty = Mode 1 (self-chat). Non-empty = Mode 2 (dedicated account)
channels.whatsapp.owner_onlybooleantrueWhen true, only the owner’s messages are processed. Set to false to allow the agent to respond to anyone
channels.whatsapp.truststring"owner"Trust level: "owner" or "end-user"
channels.whatsapp.trusted_sendersstring[][]Additional JIDs whose messages bypass owner_only gating

→ See Trust and Access for a full explanation of trust levels and access control.

Troubleshooting

Owner identity not recognised — @s.whatsapp.net vs @lid

Symptom: Messages from your phone are silently ignored even though owner_id appears to be set correctly.

Cause: WhatsApp’s multi-device protocol (Linked Devices mode) uses two different JID formats to identify the same phone number:

  • @s.whatsapp.net — the traditional E.164-based format (e.g. 15551234567@s.whatsapp.net)
  • @lid — an opaque identifier assigned by WhatsApp’s multi-device infrastructure (e.g. 43624150659184@lid)

When Baileys receives a message in multi-device mode, it may report the sender using the @lid format rather than the phone-number-based @s.whatsapp.net format. If owner_id was set using the phone number format but Baileys delivers messages with @lid, the strict equality check in the policy layer will silently drop all messages.

Manual fix: Run reeboot with debug logging, send a message, and copy the exact peerId value from the log:

reeboot start --log-level debug
# Send a WhatsApp message to the agent from your phone
# Look for a log line containing "peerId" — copy that exact value

Then update your config:

{
  "channels": {
    "whatsapp": {
      "owner_id": "43624150659184@lid"
    }
  }
}

Recommended fix: Use the automated owner setup command, which captures the exact peerId from a live message and saves it for you:

reeboot channels setup owner-whatsapp

This eliminates the format guessing entirely — whatever JID Baileys reports is exactly what gets saved.