Stay in touch with the people you don't see often enough.
wabr brings the BeReal experience to your WhatsApp group. Once a day, at a surprise moment, everyone gets a nudge to share what they're up to — no filters, no planning, just a genuine glimpse into each other's lives. It's a lightweight ritual that keeps friend groups connected across cities, time zones, and busy schedules.
A self-hosted daemon runs quietly in the background on your server or laptop. At a random time within your configured window, it sends a reminder to the group. After a configurable response window, it sends a follow-up to close the round.
- Python 3.12+
uvwacliinstalled and available inPATH— see the wacli README for install instructions
# Install dependencies
uv sync
# Log in to WhatsApp — this shows a QR code to scan with your phone
wacli auth
# Sync recent messages and contacts
wacli sync --onceYou only need to do this once. wacli stores your session locally and stays authenticated.
uv run wabr configureThis fetches your WhatsApp groups, lets you pick one with an interactive selector, then prompts for:
- Window start / end — the time range within which the daily reminder fires (e.g.
09:00–21:00) - Timezone — IANA timezone name (e.g.
Europe/Berlin) orlocal - Response window — how many minutes before the timeout message is sent (default: 60)
- Reminder message — the text sent at the start of the window
- Timeout message — the text sent when the window closes
Config is saved to ~/.local/share/wa_bereal/config.toml. Override the path with --config <path> or the WA_BEREAL_CONFIG environment variable.
The recommended way to run wabr is as a systemd user service so it starts automatically and runs in the background:
# Install the binary
uv tool install .
# Install and start the service
wabr service install
# View live logs
journalctl --user -u wabr -f
# Remove the service
wabr service uninstallThe service starts automatically on login and restarts on failure. If you run wabr configure while the service is running, you'll be prompted to restart it to apply the new config.
uv run wabr runThe daemon blocks until interrupted (Ctrl+C). Daemon state is persisted across restarts — if restarted mid-window, it will still fire the timeout message at the correct time.
| Command | Description |
|---|---|
wabr configure |
Create or update the config file |
wabr run |
Start the scheduling daemon |
wabr status |
Show auth state, current config, and last run info |
wabr groups |
List WhatsApp groups with their JIDs |
wabr test reminder |
Send the reminder message immediately |
wabr test timeout |
Send the timeout message immediately |
wabr service install |
Install and start the systemd user service |
wabr service restart |
Restart the systemd user service |
wabr service uninstall |
Stop and remove the systemd user service |
- At startup, the daemon picks a random time
Twithin[window_start, window_end]for today. - At time
T, it sends the configured reminder message to the group. - At time
T + response_window_minutes, it sends the timeout message to the group. - A new reminder is scheduled for the next day.