BackchannelIgor Schwarzmann

Backchannel

Your group chats, readable by your agents. Plain files. One local index.

Backchannel turns WhatsApp into local Markdown and a search index, so you or an agent can find what was said before the follow-up work begins. It builds onwacli.

brew install openclaw/tap/wacli
wacli auth          # scan the QR once
.venv/bin/pip install .
backchannel setup

Alpha · macOS only · links via an unofficial client —what that means

Why this exists

Email has IMAP. Group chat has nothing.

Email archives can be searched, read by other tools and turned back into work. WhatsApp remains where conversations stop.

Decisions, requests and commitments now arrive in group chats. Once they scroll past, you cannot search them, an agent cannot read them, and the follow-up depends on what you remembered. WhatsApp exports one chat at a time, by hand, capped, and without media.

Voice notes make the gap harder to see. You cannot skim one, search one, or give it to an agent to read. In an active group, the decision is often there.

What it produces

Three artifacts, all of them files.

corpus/whatsapp/groups/…2026-08-07.md
---
source: whatsapp
type: group
name: Studio Reading Group
date: 2026-08-07
message_count: 34
has_links: true
---

**09:14 — Mara**: did anyone
get through the Latour piece

**09:22 — Jonas**: half. the
middle section is worth it

One file per chat per day. Frontmatter you can filter on, body you can read.

voice notetranscribed locally
before
**14:02 — Priya**:
  [voice note · 0:47]

after
**14:02 — Priya**:
  🎙 I looked at the venue
  again and the back room
  only fits about thirty,
  so we should decide by
  Friday either way

Whisper runs on your machine. No audio leaves it, no API key exists.

searchacross every chat
$ qmd query "what did we
  decide about the venue"

0.83 Studio Reading Group
     2026-08-07 · whatsapp
     🎙 …the back room only
     fits about thirty…

0.71 Ana Ruiz
     2026-08-05 · whatsapp
     …booked it for the 14th

Semantic search over text and transcripts together, offline.

Image OCR is opt-in. The daemon schedules it only when BC_DESCRIBE_ENABLED is set; it is the newest and least-proven capability over long runs.

Source

WhatsApp, through wacli.

Maintained client

wacli

wacli is a Go CLI that pairs by QR as a linked device, the same slot WhatsApp Web occupies, and mirrors your messages into a local SQLite store. It installs with one Homebrew command and tracks the protocol library weekly. Backchannel reads that store read-only and builds everything else on top.

Unofficial client

What that costs

wacli speaks the protocol through an independent implementation rather than a Meta-built client, which WhatsApp's terms do not permit. Accounts have been blocked for unofficial-client use, and the reported cases cluster around automated sending. Backchannel never sends: there is no send path in the codebase. Low risk, not none, and it is your account.

How it works

One durable record. Everything else rebuilds.

The captured store is the only thing that cannot be regenerated. Corpus, transcripts and search index are derivations — delete any of them and run the job again.

wacliwacli.dbdurable recordcorpus/*.mdtranscripts.dbqmd indexderivations — rebuildable at any time

Install

Install from source.

Early software. Backchannel installs from a source checkout on macOS. Interfaces, config keys and defaults may still change.

Read this before step one. wacli links as a companion device using an independent implementation of the protocol, not a Meta-built client. WhatsApp's terms don't allow that, so an account could in principle be blocked. Backchannel only ever reads, and the account is yours to risk. Everything below runs on your machine; nothing is sent anywhere.

  1. Install wacli

    One Homebrew command. It is the client that talks to WhatsApp; Backchannel reads what it stores.

    brew install openclaw/tap/wacli
  2. Link your account

    Scan the QR from your phone once, under Linked devices. WhatsApp sends roughly three months of recent history straight away; older messages can be requested afterwards.

    wacli auth
  3. Install Backchannel

    From a source checkout, create a virtual environment, install, and initialise it on this machine.

    python3 -m venv .venv
    .venv/bin/pip install .
    backchannel setup
  4. Start it

    One process handles capture, derivation, transcription and indexing on their own schedules. Search needs qmd, which lives on npm.

    export BC_WHATSAPP_BACKEND=wacli
    backchannel daemon
    npm install -g @tobilu/qmd   # for search

Constraints

What it does not do.

History has a floor

Linking brings roughly three months of recent history. Going deeper means asking your phone for it, chat by chat, and you can only ever recover what your handset still holds.

No sending

Read-only by design. Nothing in it can post a message, which removes a whole class of ways for it to go wrong.

No action layer

Backchannel reads the archive out. It does not decide anything, create tasks, or reply.

macOS only

Tested on macOS only. Nothing in the design forbids Linux, but untested is untested and pretending otherwise would waste your afternoon.

No cloud

Transcription and search run locally. That is a privacy property and also a hardware requirement — Whisper wants a machine that can carry it.