Vibeleaderboard
Index / tool
Visit wacli.sh
Category
Developer Tools
Rank
Pricing
Open Source
Type
TOOL
Builder
@steipete
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 protocolLocal message database

  • Search messages offline

    Search query textMatching messages from local history

  • Send WhatsApp messages via terminal

    Message text and recipient contact/phone numberDelivered WhatsApp message

  • Manage WhatsApp contacts

    Contact information and management commandsUpdated contact list

  • Manage WhatsApp groups

    Group management commands and group identifiersUpdated group settings or membership

Tags

cliwhatsappmessagingsyncsearchgoterminalcommunication

Tech Stack

Node.jsGoDocker

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.