wacli : un client WhatsApp en terminal avec recherche SQLite locale et envoi
WhatsApp CLI : synchroniser, rechercher, envoyer. Construire à partir des sources wacli nécessite Go 1.26.5 ou plus récent et utilise go-sqlite3, donc cgo + un compilateur C sont requis.
En bref
- De quoi s’agit-il ?
- Un client WhatsApp scriptable qui s'apparie comme appareil lié, reflète les messages dans un stockage SQLite local et propose la recherche, l'envoi et la gestion des conversations via des sous-commandes.
- À qui s’adresse-t-il ?
- Le README explique clairement ce qu'est wacli et comment l'exécuter, mais il ne promet aucun niveau de performance, de sécurité ou de support. La configuration Docker exacte, les charges utiles des webhooks et le comportement de history coverage sur un compte donné restent à vérifier.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Les derniers commits datent d’il y a 1 jour.
- En quel langage est-il écrit ?
- Principalement Go, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Un client pour appareil lié via le protocole WhatsApp Web
wacli est un client WhatsApp en ligne de commande pour les personnes et les outils qui travaillent depuis un terminal. Il s'apparie comme appareil lié, reflète les messages entrants dans un stockage SQLite local et expose la recherche, l'envoi et la gestion des conversations via des sous-commandes. Le README précise qu'il utilise le protocole WhatsApp Web via la bibliothèque whatsmeow et qu'il n'est pas affilié à WhatsApp ni à Meta. La page d'accueil du projet est wacli.sh, où se trouve aussi la documentation complète. Le dépôt ne décrit aucun serveur séparé ni composant hébergé ; le client s'exécute localement.
Installation via Homebrew, archives ou source Go
Sur macOS et Linux, le mode d'installation documenté dans le README est Homebrew avec `brew install openclaw/tap/wacli`. Des archives précompilées pour macOS, Linux et Windows sont indiquées comme disponibles sur GitHub Releases. Pour compiler depuis les sources, le README demande Go 1.26.5 ou plus, un compilateur C, et cette commande : `CGO_ENABLED=1 CGO_CFLAGS="-Wno-error=missing-braces" go install -tags sqlite_fts5 github.com/openclaw/wacli/cmd/wacli@latest`. Il renvoie aussi à un guide d'installation pour les archives de version, Docker et les exigences de compilation spécifiques aux plateformes ; le README lui-même ne contient pas d'instructions Docker, donc la configuration Docker exacte reste une question à vérifier.
Appairage, première synchronisation et envoi d'un message
L'appairage commence par le scan d'un code QR depuis l'écran Appareils liés de WhatsApp ; la commande `auth` effectue la première synchronisation après l'appairage. Le README montre `wacli auth`, puis `wacli messages search "meeting"` et `wacli send text --to +15551234567 --message "hello"` comme séquence de démarrage rapide. Il précise que l'envoi nécessite un destinataire que l'on est autorisé à contacter, et que les destinataires peuvent être des numéros de téléphone, des JID WhatsApp, ou des noms synchronisés de contacts, de groupes et de conversations. Le guide de démarrage rapide couvre l'appairage par numéro de téléphone, les comptes nommés, les médias et le diagnostic, mais le README ne reproduit pas ces instructions.
Synchronisation continue et recherche hors ligne depuis l'index local
Exécuter `wacli sync --follow` lance une synchronisation continue. La session et l'index de messages recherchable vivent dans des bases SQLite distinctes, et la recherche lit l'index local, donc elle fonctionne sans connexion WhatsApp active. Le README donne `wacli messages search "invoice" --has-media` et `wacli --json messages list --limit 20` comme exemples. Il avertit aussi que WhatsApp Web fournit l'historique au mieux, et suggère d'utiliser `history coverage` pour inspecter ce qui est disponible localement avant de demander des messages plus anciens au téléphone principal.
Sortie pour scripts, mode lecture seule et comportement des verrous
La sortie par défaut est un tableau lisible par un humain. Pour les commandes ponctuelles, `--json` renvoie du JSON ; pour les commandes longues, `--events` renvoie des événements de cycle de vie en NDJSON. La progression et les erreurs vont sur stderr. Une intégration peut passer `--read-only` ou définir `WACLI_READONLY=1` pour ne pas modifier WhatsApp ni le stockage local. Les commandes d'écriture prennent un verrou par stockage ; lorsque `sync --follow` détient ce verrou, les commandes d'envoi prises en charge sont déléguées au processus de synchronisation en cours. Le README renvoie à la documentation d'intégration pour les webhooks et l'accès SQLite en lecture seule, mais il ne liste pas les formats de charge utile des webhooks, ce qui reste une question à vérifier.
Groupes de commandes et configuration du stockage
L'ensemble des commandes est organisé par domaine : auth et accounts pour l'appairage et les stockages isolés ; sync et history pour la mise en miroir et l'historique ; messages et calls pour les enregistrements locaux ; send et media pour l'envoi et le téléchargement ; contacts, chats, groups et channels pour les personnes et l'état des conversations ; profile et presence pour les détails du compte ; store et doctor pour l'inspection du stockage et le diagnostic. Le stockage par défaut est `~/.local/state/wacli` sous Linux et `~/.wacli` ailleurs, avec `--store DIR` ou `WACLI_STORE_DIR` comme surcharge. Les comptes nommés, montrés avec `wacli accounts add work` et `wacli --account work sync --follow`, permettent à chaque identité WhatsApp d'avoir sa propre session, sa propre base et son propre verrou.
Conclusion éditoriale
Le README explique clairement ce qu'est wacli et comment l'exécuter, mais il ne promet aucun niveau de performance, de sécurité ou de support. La configuration Docker exacte, les charges utiles des webhooks et le comportement de history coverage sur un compte donné restent à vérifier. Lancez wacli avec l'option --help puis la commande de lecture JSON du README; comparez les champs retournés avec les données du compte de test.
Notes de la communauté