wacli
- title
- wacli
- type
- toolbox
- summary
- WhatsApp command-line client that syncs history into local SQLite for offline full-text search
- tags
- golang, cli, messaging
- language
- Go
- license
- Other
- created
- 2026-04-16
- updated
- 2026-04-16
WhatsApp CLI for syncing messages locally, searching offline, and sending messages. Built on whatsmeow (WhatsApp Web protocol). Local-first: stores everything in SQLite with FTS5 for fast offline search.
What it does
- Sync message history locally with continuous capture
- Fast offline full-text search
- Send text messages and files
- Contact and group management
- Best-effort backfill of older messages
Key commands
# Authenticate (shows QR code) and initial sync
wacli auth
# Continuous sync (no QR, requires prior auth)
wacli sync --follow
# Search messages offline
wacli messages search "meeting"
# Send a message
wacli send text --to 1234567890 --message "hello"
# Send a file with caption
wacli send file --to 1234567890 --file ./pic.jpg --caption "hi"
# Backfill older messages for a chat
wacli history backfill --chat 1234567890@s.whatsapp.net --requests 10 --count 50
# List and manage groups
wacli groups list
wacli groups rename --jid 123456789@g.us --name "New name"
Storage
Default: ~/.wacli (override with --store DIR). SQLite with FTS5 for search.
History backfill
WhatsApp Web sends what it sends opportunistically. To fetch older messages:
- Request from your primary device (phone must be online)
- Per-chat, anchored to oldest local message
- Best-effort: WhatsApp may not return full history
- Recommended:
--count 50per request
Backfill all known chats:
wacli --json chats list --limit 100000 \
| jq -r '.[].JID' \
| while read -r jid; do
wacli history backfill --chat "$jid" --requests 3 --count 50
done
Install
# Homebrew
brew install steipete/tap/wacli
# Or build from source
go build -tags sqlite_fts5 -o ./dist/wacli ./cmd/wacli
Environment
WACLI_DEVICE_LABELโ linked device label shown in WhatsAppWACLI_DEVICE_PLATFORMโ override platform (defaults to CHROME)
Notes
Third-party tool, not affiliated with WhatsApp. Uses WhatsApp Web protocol via whatsmeow. Output is human-readable by default; --json for machine-readable.
Repo: https://github.com/steipete/wacli (1,554 stars)
Linked from