- Category
- Developer Tools
- Rank
- No. 514Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- @steipete
- GitHub
- 2.7k stars
- Latest release
- v0.18.1
- Date
About
A command-line interface for WhatsApp that syncs message history locally, enables fast offline search, and allows sending messages through the terminal. Built on the WhatsApp Web protocol for power users who prefer CLI workflows.
What it does
wacli turns a WhatsApp account into a scriptable local workspace. Pair it as another device, then inspect conversations, export records, manage chats, download media, and send several message types. Separate databases isolate account credentials from the searchable conversation index, while named stores keep multiple identities apart.
Why it's ranked here
The tool has unusual depth for terminal automation. Structured output, lifecycle events, read-only safeguards, storage caps, webhooks, and delegated sends make it suitable for serious scripts, not just interactive commands. Its value depends on accepting an unofficial protocol and incomplete historical coverage, so it is capable but operationally fragile.
What's good
Automation boundaries are thoughtful. Normal results go to standard output while progress and errors stay separate. One-shot commands emit JSON, long-running work emits newline-delimited events, and read-only mode blocks mutations. Store locks prevent competing sessions, while a continuous sync process can safely handle supported sends from other commands.
Tradeoffs
WhatsApp Web supplies history only on a best-effort basis, so this cannot promise a complete archive. The protocol is unpublished and upstream changes may break compatibility. Sending confirms WhatsApp accepted a request, not recipient delivery. Webhooks do not retry, media transfers are capped, and some interactive message controls remain unsupported.
How to use it well
Use it for shell pipelines, coding agents, searchable personal archives, bounded message capture, and carefully paced outbound automation. Keep continuous sync running, set storage limits, choose quiet presence when appropriate, and give analysis tools read-only access. It does not replace a GUI, an MCP server, guaranteed archival software, contact creation, or voice calling.
Technical notes+
The Go module in go.mod uses Cobra, whatsmeow, and go-sqlite3; builds require cgo plus the sqlite_fts5 tag. package.json wraps Go compilation and defines Go, FTS5, Windows lock, cgo requirement, documentation, and release workflow tests, while Makefile adds formatting, vet, vulnerability, dead-code, build, and release checks. internal/app/app.go opens wacli.db separately from session.db, supports read-only database access, lazily opens the WhatsApp session, and abstracts protocol operations behind WAClient. docs/sync.md documents continuous event capture, bounded storage, signed best-effort webhooks, reconnect controls, delegated sends, and NDJSON events. docs/send.md documents send acknowledgement semantics, retry behavior, media limits, polls, statuses, locations, and unsupported native-flow replies.
Observed
- License
- MIT
- Primary language
- Go
- Interface
- Command-line application with human-readable, JSON, and NDJSON output modes
- Platforms
- macOS, Linux, and Windows
- Installation
- Homebrew, prebuilt release archives, Docker guidance, and Go source installation
- Packaging
- Single binary built with cgo and SQLite FTS5 support
- Storage
- Separate SQLite databases hold the WhatsApp session and the local message index
- Integration surface
- Signed webhooks can emit message, receipt, and chat-presence events
Read from README.md, go.mod, Makefile, package.json, internal/app/app.go, docs/auth.md, docs/docs.md, docs/help.md, docs/send.md, docs/spec.md, docs/sync.md, docs/index.md, docs/calls.md, docs/chats.md, docs/media.md.
What it can do
Sync WhatsApp message history to local storage
WhatsApp account via Web protocol → Local message database
Search messages offline
Search query text → Matching messages from local history
Send WhatsApp messages via terminal
Message text and recipient contact/phone number → Delivered WhatsApp message
Manage WhatsApp contacts
Contact information and management commands → Updated contact list
Manage WhatsApp groups
Group management commands and group identifiers → Updated group settings or membership
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
