WhatsApp CLI: sync, search, send
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Healthy fork ratio
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/openclaw/wacliTools overview
# wacli 🗃️ — WhatsApp from your terminal  [](https://github.com/openclaw/wacli/actions/workflows/ci.yml) [](https://github.com/openclaw/wacli/releases/latest) [](https://github.com/openclaw/wacli/releases/latest) [](LICENSE) [](https://github.com/openclaw/homebrew-tap) [](https://wacli.sh) `wacli` is a scriptable WhatsApp client for people and tools that work from the command line. It pairs as a linked device, mirrors messages into a local SQLite store, and supports search, sending, and chat management. > `wacli` uses the WhatsApp Web protocol through [`whatsmeow`](https://github.com/tulir/whatsmeow). It is not affiliated with WhatsApp or Meta. ## Install Homebrew on macOS or Linux: ```sh brew install openclaw/tap/wacli ``` Prebuilt archives for macOS, Linux, and Windows are available from [GitHub Releases](https://github.com/openclaw/wacli/releases/latest). To build from source, install Go 1.27.0 or newer and a C compiler, then run: ```sh CGO_ENABLED=1 CGO_CFLAGS="-Wno-error=missing-braces" \ go install -tags sqlite_fts5 github.com/openclaw/wacli/cmd/wacli@latest ``` See the [installation guide](docs/install.md) for release archives, Docker, and platform-specific build requirements. ## Quick start Pair the CLI by scanning the terminal QR code from WhatsApp's **Linked devices** screen. `auth` performs the first sync after pairing. ```sh wacli auth wacli messages search "meeting" wacli send text --to +15551234567 --message "hello" ``` Sending requires a recipient you are allowed to contact. Recipients can be phone numbers, WhatsApp JIDs, or synced contact, group, and chat names. The [quickstart](docs/quickstart.md) covers phone-number pairing, named accounts, media, and diagnostics. ## Keep messages in sync Run a continuous sync to keep the local store current: ```sh wacli sync --follow ``` `wacli` keeps the WhatsApp session and its own searchable message index in separate SQLite databases. Search reads the local index, so it works without a live WhatsApp connection: ```sh wacli messages search "invoice" --has-media wacli --json messages list --limit 20 ``` WhatsApp Web provides history on a best-effort basis. Use [`history coverage`](docs/history.md) to inspect what is available locally before requesting older messages from the primary phone. ## Use wacli from scripts Human-readable tables are the default. Use `--json` for one-shot commands and `--events` for NDJSON lifecycle events from long-running commands. Progress and errors stay on stderr. Use `--read-only` or `WACLI_READONLY=1` when an integration must not change WhatsApp or the local store: ```sh wacli --read-only --json messages search "invoice" WACLI_READONLY=1 wacli --json doctor ``` Write commands take a per-store lock. After a `sync --follow` process finishes startup, supported send commands plus `chats mark-read` and `chats mark-unread` are delegated to it while it owns that lock. See [companion integrations](docs/integrations.md) for webhooks and safe read-only SQLite access. ## Commands | Area | What it covers | | --- | --- | | [`auth`](docs/auth.md), [`accounts`](docs/accounts.md) | Pair a linked device and manage isolated account stores. | | [`sync`](docs/sync.md), [`history`](docs/history.md) | Mirror new events and request older per-chat history. | | [`messages`](docs/messages.md), [`calls`](docs/calls.md) | Search, inspect, export, and manage local records. | | [`send`](docs/send.md), [`media`](docs/media.md) | Send text and files or download synced media. | | [`contacts`](docs/contacts.md), [`chats`](docs/chats.md) | Find people and manage local or remote chat state. | | [`groups`](docs/groups.md), [`channels`](docs/channels.md) | Inspect and manage groups, communities, and channels. | | [`profile`](docs/profile.md), [`presence`](docs/presence.md) | Manage profile details and chat presence. | | [`store`](docs/store.md), [`doctor`](docs/doctor.md) | Inspect local storage and diagnose the setup. | The complete documentation is at [wacli.sh](https://wacli.sh), or run `wacli help <command>` for the installed command reference. ## Configuration The default store is `~/.local/state/wacli` on Linux and `~/.wacli` elsewhere. Override it with `--store DIR` or `WACLI_STORE_DIR`; use named accounts when each WhatsApp identity needs its own session, database, and lock. ```sh wacli accounts add work wacli --account work sync --follow ``` See [accounts](docs/accounts.md) for store selection and [sync](docs/sync.md) for storage limits, media downloads, webhooks, and presence behavior. ## Development Development uses the Go 1.27.1 toolchain selected by `go.mod`, Node.js 24 or newer, pnpm, cgo, and a C compiler. The source minimum remains Go 1.27.0. ```sh pnpm install --frozen-lockfile pnpm build pnpm format:check && pnpm lint && pnpm test ``` ## Credits Heavily inspired by [`whatsapp-cli`](https://github.com/vicentereig/whatsapp-cli) by Vicente Reig. ## Maintainers - Created by [@steipete](https://github.com/steipete) - Currently maintained by [@dinakars777](https://github.com/dinakars777) ## License [MIT](LICENSE).
What people ask about wacli
What is openclaw/wacli?
+
openclaw/wacli is tools for the Claude AI ecosystem. WhatsApp CLI: sync, search, send It has 2.7k GitHub stars and its last recorded update is dated 2026-09-15.
How do I install wacli?
+
You can install wacli by cloning the repository (https://github.com/openclaw/wacli) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is openclaw/wacli safe to use?
+
Our security agent has analyzed openclaw/wacli and assigned a Trust Score of 100/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains openclaw/wacli?
+
openclaw/wacli is maintained by openclaw. The last recorded GitHub activity is dated 2026-09-15, with 11 open issues.
Are there alternatives to wacli?
+
Yes. On ClaudeWave you can browse similar tools at /categories/tools, sorted by popularity or recent activity.
Deploy wacli to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/openclaw-wacli)<a href="https://claudewave.com/repo/openclaw-wacli"><img src="https://claudewave.com/api/badge/openclaw-wacli" alt="Featured on ClaudeWave: openclaw/wacli" width="320" height="64" /></a>More Tools
A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.
An AI skill that provides design intelligence for building professional UI/UX across multiple platforms.
🪨 why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.
CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies
The fastest, litest AI Gateway. Rust core with Python SDK. Call 100+ LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]
Use Claude Code, Codex, Pi, and OpenCode (and 6 other harnesses) for free (1.3B+ free tokens) from your terminal, app, IDE, or phone, and now from the browser with native browser sessions (multi-harness + multi-model) like OpenClaw (voice supported + ToS friendly)