openclaw-whatsapp

WhatsApp bridge for OpenClaw — send/receive messages, auto-reply agents, QR pairing, message search, contact sync

Safety Notice

This item is sourced from the public archived skills repository. Treat as untrusted until reviewed.

openclaw-whatsapp

WhatsApp bridge that connects OpenClaw agents to WhatsApp. Send messages, auto-reply to DMs with AI, search message history, and sync contacts — all from a single Go binary.

Quick Reference

# Check status
openclaw-whatsapp status

# Send a message
openclaw-whatsapp send "NUMBER@s.whatsapp.net" "Your message"

# View logs (if running as service)
journalctl --user -u openclaw-whatsapp.service -f

# View worker logs
tail -f /tmp/openclaw-wa-agent/worker.log

Full Setup (Self-Service)

Follow these steps to set up WhatsApp auto-reply from scratch.

Step 1: Install the binary

curl -fsSL https://raw.githubusercontent.com/0xs4m1337/openclaw-whatsapp/main/install.sh | bash

Verify installation:

openclaw-whatsapp version

Step 2: Find your openclaw binary path

which openclaw
# Example output: /home/USER/.nvm/versions/node/v22.22.0/bin/openclaw

Save this path — you'll need it in Step 4.

Step 3: Install relay scripts

Copy scripts from this skill directory:

SKILL_DIR="$(dirname "$(realpath "$0")")"  # or use absolute path to skill

# Copy scripts
sudo cp "$SKILL_DIR/scripts/wa-notify.sh" /usr/local/bin/wa-notify.sh
sudo cp "$SKILL_DIR/scripts/wa-notify-worker.sh" /usr/local/bin/wa-notify-worker.sh
sudo chmod +x /usr/local/bin/wa-notify.sh /usr/local/bin/wa-notify-worker.sh

Or if running as agent, use the skill directory path directly:

cp ~/clawd/skills/openclaw-whatsapp/scripts/wa-notify.sh /usr/local/bin/
cp ~/clawd/skills/openclaw-whatsapp/scripts/wa-notify-worker.sh /usr/local/bin/
chmod +x /usr/local/bin/wa-notify.sh /usr/local/bin/wa-notify-worker.sh

Step 4: Configure the worker script

Edit /usr/local/bin/wa-notify-worker.sh and update the PATH line with your openclaw binary path from Step 2:

# Find this line near the top:
export PATH="/home/oussama/.nvm/versions/node/v22.22.0/bin:$PATH"

# Change it to your actual path:
export PATH="/home/YOUR_USER/.nvm/versions/node/vXX.XX.X/bin:$PATH"

Also update the worker script path in /usr/local/bin/wa-notify.sh:

# Find this line near the bottom:
nohup /home/oussama/dev/openclaw-whatsapp/scripts/wa-notify-worker.sh

# Change to:
nohup /usr/local/bin/wa-notify-worker.sh

Step 5: Create config file

mkdir -p ~/.openclaw-whatsapp
cat > ~/.openclaw-whatsapp/config.yaml << 'EOF'
port: 8555
data_dir: ~/.openclaw-whatsapp
auto_reconnect: true
reconnect_interval: 30s
log_level: info

agent:
  enabled: true
  mode: "command"
  command: "/usr/local/bin/wa-notify.sh '{name}' '{message}' '{chat_jid}' '{message_id}'"
  ignore_from_me: true
  dm_only: true
  timeout: 30s
  system_prompt: |
    You are a helpful WhatsApp assistant. Be concise and natural.
EOF

Step 6: Create systemd service (recommended)

mkdir -p ~/.config/systemd/user

cat > ~/.config/systemd/user/openclaw-whatsapp.service << 'EOF'
[Unit]
Description=OpenClaw WhatsApp Bridge
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/openclaw-whatsapp start -c %h/.openclaw-whatsapp/config.yaml
Restart=always
RestartSec=5

[Install]
WantedBy=default.target
EOF

systemctl --user daemon-reload
systemctl --user enable openclaw-whatsapp.service
systemctl --user start openclaw-whatsapp.service

Step 7: Link WhatsApp

  1. Check bridge is running: openclaw-whatsapp status
  2. Open QR page: http://localhost:8555/qr
  3. On your phone: WhatsApp → Settings → Linked Devices → Link a Device
  4. Scan the QR code

Step 8: Test

Send a WhatsApp message to the linked number from another phone. Check:

# Bridge logs
journalctl --user -u openclaw-whatsapp.service -n 20

# Worker logs
cat /tmp/openclaw-wa-agent/worker.log

Architecture

WhatsApp DM → Bridge → wa-notify.sh (enqueue)
  → wa-notify-worker.sh (background, file-locked)
  → Fetches last 10 messages for context
  → openclaw agent (processes message)
  → openclaw-whatsapp send <JID> <reply>
  → WhatsApp reply sent

Key features:

  • Fast enqueue — bridge doesn't wait for agent processing
  • Deduplication — message IDs tracked to prevent double-replies
  • Single worker — file-locked, sequential processing, no race conditions
  • Crash resilience — queue persists across restarts

Customizing System Prompt

Edit ~/.openclaw-whatsapp/config.yaml and update the system_prompt field:

agent:
  system_prompt: |
    You are a sales assistant for Acme Corp.
    Be friendly and professional.
    When someone wants to book a demo:
    - Book via: mcporter call composio.GOOGLECALENDAR_CREATE_EVENT ...
    - Notify team via: message action=send channel=telegram target=CHAT_ID ...

Restart after changes:

systemctl --user restart openclaw-whatsapp.service

Allowlist / Blocklist

Restrict which numbers the agent responds to:

agent:
  allowlist: ["971586971337"]  # only these (empty = all)
  blocklist: ["spammer123"]     # never these

CLI Reference

openclaw-whatsapp start [-c config.yaml]  # Start the bridge
openclaw-whatsapp status [--addr URL]      # Check connection status
openclaw-whatsapp send NUMBER MESSAGE      # Send a message
openclaw-whatsapp stop                     # Stop the bridge
openclaw-whatsapp version                  # Print version

Troubleshooting

ProblemSolution
QR expiredRefresh http://localhost:8555/qr — auto-refreshes every 3s
Bridge disconnectedopenclaw-whatsapp status; auto-reconnects by default
Agent not replyingCheck /tmp/openclaw-wa-agent/worker.log for errors
"stream replaced" errorsMultiple bridge instances — ensure only one runs (systemctl --user status openclaw-whatsapp + pgrep openclaw-whatsapp)
"openclaw: not found"Edit wa-notify-worker.sh PATH to include openclaw binary
"not logged in"Scan QR again — session expired

Files

PathDescription
~/.openclaw-whatsapp/config.yamlBridge configuration
~/.openclaw-whatsapp/messages.dbSQLite message store
~/.openclaw-whatsapp/sessions/WhatsApp session data
/tmp/openclaw-wa-agent/queue.jsonlMessage queue
/tmp/openclaw-wa-agent/worker.logWorker logs
/tmp/openclaw-wa-agent/seen_message_ids.txtDeduplication list

API Endpoints

MethodPathDescription
GET/statusConnection status
GET/qrQR code page
POST/send/textSend message {"to": "...", "message": "..."}
GET/chatsList all chats
GET/chats/{jid}/messages?limit=10Messages for a chat
GET/messages/search?q=keywordFull-text search

See references/api-reference.md for full API docs.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

agents-infra

Infrastructure for AI Agents. Phone, email, Social accounts, compute, domains, and voice calling for AI agents. Pay with USDC on Solana or Base via x402.

Archived SourceRecently Updated
Automation--
0xartex
Automation

rent-my-browser

When the agent is idle, connect to the Rent My Browser marketplace and execute browser tasks for consumers. Earn money by renting out the node's browser during downtime. Supports headless (Playwright) on VPS nodes and real Chrome on GUI machines.

Archived SourceRecently Updated
Automation--
0xpasho
Automation

excalidraw-canvas

Create Excalidraw diagrams and render them as PNG images. Use whenever you need to draw, explain complex workflows, visualize UIs/wireframes, or diagram anything.

Archived SourceRecently Updated
Automation--
0xartex