type: overview title: Quickstart description: What the wh WhatsApp terminal client with per-chat AI autoreply does, how to build and run it, and where to find each topic in this wiki. tags: [overview, quickstart, rust, whatsapp, tui, ai] verified:
651d1fb6c9
resource: repo://Cargo.toml2a737474d8
resource: repo://src/config.rsb55a21a31e
resource: repo://src/main.rs
generated: { by: "claude-code", at: "2026-10-19T18:58:46.219Z" }
---wh (Cargo.toml:1-5) is a Rust terminal client for WhatsApp. It links as a
companion device by QR code, shows chats and contacts in a
ratatui interface, stores messages locally in
SQLite and can answer incoming private messages automatically with an
OpenAI-compatible model, chat by chat.
cargo build --release
cargo run --release
cargo test
The crate uses edition 2024. whatsapp-rust is built with
default-features = false because its default simd feature needs nightly
(Cargo.toml:8-10).
On first start the app shows a QR code: scan it from WhatsApp → Linked
devices. The session is kept in session.db, so later starts connect
directly. Main keys: Tab switches list/input, F2 chats/contacts, Enter
opens a chat or sends, Ctrl+A toggles autoreply for the open chat,
Ctrl+C quits (key bindings).
Settings live in config.toml inside the data directory
<platform config dir>/wh (on Windows %APPDATA%\wh), next to session.db
and history.db (src/config.rs:23-43, src/config.rs:106-110). Without
the file the app still runs as a plain WhatsApp client; the autoreply needs
openai_api_key and system_prompt. Keys and defaults:
Configuration and data.
main loads the config, opens the history, starts the WhatsApp client and
an input thread, then runs the draw/receive loop until quit
(src/main.rs:28-51, see Runtime and event loop).
| Task | Page | Source |
|---|---|---|
| Startup, channels, threads, main loop | Runtime and event loop | src/main.rs |
| Events, state, keys, background tasks | Application state | src/app.rs |
| Screens, rendering, message formatting | Terminal UI | src/ui.rs |
| WhatsApp session, events, JIDs, media | WhatsApp client | src/whatsapp.rs |
| AI HTTP requests, vision, errors | AI client | src/ai.rs |
| When and how the AI replies | AI auto-reply workflow | src/autoreply.rs, src/app.rs |
| Local SQLite messages, chats, contacts | History store | src/history.rs |
| Config keys, data dir, security notes | Configuration and data | src/config.rs |
| Test suites and how to run them | Unit tests | src/*.rs |