Skip to content

nictru/wabr

Repository files navigation

wabr

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.

Requirements

  • Python 3.12+
  • uv
  • wacli installed and available in PATH — see the wacli README for install instructions

Setup

# 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 --once

You only need to do this once. wacli stores your session locally and stays authenticated.

Configuration

uv run wabr configure

This 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:0021:00)
  • Timezone — IANA timezone name (e.g. Europe/Berlin) or local
  • 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.

Running as a systemd service

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 uninstall

The 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.

Running manually

uv run wabr run

The 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.

Commands

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

How it works

  1. At startup, the daemon picks a random time T within [window_start, window_end] for today.
  2. At time T, it sends the configured reminder message to the group.
  3. At time T + response_window_minutes, it sends the timeout message to the group.
  4. A new reminder is scheduled for the next day.

About

BeReal-style daily WhatsApp reminders via a self-hosted CLI daemon

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages