Overview
You're on a train, you had an idea, you dictate a voice note. Rousseau transcribes it with whisper, edits the file on your workstation via the bind-mounted workspace, and replies with a summary. Session picks up where you left it thanks to --session.
Prerequisites
- WhatsApp paired and confirmed (
rousseau whatsappat least once). whisper(whisper.cpp CLI) installed on the daemon host.- Workspace bind mount (
/workspace) with the repo you're editing. - Any provider that handles tool-use —
claudecliif you have Claude Code,anthropicotherwise.
Config
provider: claudecli
agent:
max_iterations: 40
approver:
mode: pattern
default: deny
allow:
- {tool: read, match: ".*"}
- {tool: grep, match: ".*"}
- {tool: edit, match: "^/workspace/.*"}
- {tool: write, match: "^/workspace/.*"}
- {tool: bash, match: "^(git (log|diff|status|add [^&|;`$]+|commit -m)|go test ./...|npm test)"}
deny:
- {tool: bash, match: "rm|sudo|git push"}
whatsapp:
reply_header: ""
voice:
enabled: true
binary: /usr/local/bin/whisper
model: base.en
language: en
The approver:
edit/writescoped to/workspace— the container sees nothing else.bashlimited to safe git + test invocations.git pushexplicitly denied — pushing decisions belong to a human.
Launch
# In the Podman quadlet, or bare metal:
rousseau whatsapp --allow 447900123456@s.whatsapp.net
Verification
- Send a text: "Read /workspace/README.md and give me a one-line summary." — reply lands within 5 s.
- Send a voice note: "Add a docstring to the main function in server.go" — whisper transcribes, the file is edited, git status shows the change.
-
rousseau session list --limit 3shows the pair session.
Failure modes
- Voice notes silently dropped —
whatsapp.voice.enabled: falseorwhisperbinary missing.rousseau doctorcatches both. - Edits fail with "unique-string constraint violated" — the built-in
edittool refuses when the search string appears more than once (a safety rail). Include more surrounding context. - Transcription in the wrong language — set
whatsapp.voice.languageexplicitly instead of relying on auto-detect.