Sandbox
@ilanbenb/wa_llm

WhatsApp group summary bot for Docker and FastAPI

wa_llm is a deployable WhatsApp bot that monitors group chats, stores message history, and generates summaries or mention-based replies. It runs with Docker Compose, connects to a WhatsApp Web API, and uses PostgreSQL with pgvector for persistent context and knowledge base lookup.

168 starsโ€ข59 forksโ€ขPythonโ€ขUpdated 7d ago
Who it's for

Builders who want a WhatsApp bot to follow group chats and generate summaries or replies.

What it delivers

You can run a WhatsApp bot that tracks group conversations and posts AI summaries without building the whole service yourself.

What it does

Mention-based replies

Responds in group chats when the bot is mentioned.

LLM conversation summaries

Generates summaries from group message history.

Knowledge base lookup

Uses stored topic data to answer with more context.

Persistent message history

Stores conversations in PostgreSQL with pgvector.

Multi-message support

Handles text, media, and links.

Opt-out controls

Lets people DM the bot to avoid being tagged in generated messages.

REST API

Exposes endpoints for loading knowledge base topics and triggering summaries.

Docker Compose deployment

Includes development, local-run, and production Compose files.

How to get it

  1. 1Run
    git clone https://github.com/YOUR_USER/wa_llm.git
    cd wa_llm
  2. 2Copy .env.example to .env and fill in required values.
    cp .env.example .env
  3. 3Option A: Development (Build from source)
    docker compose up -d
  4. 4Option B: Production (Use pre-built images)
    docker compose -f docker-compose.prod.yml up -d
  5. 5run the following update statement
    UPDATE public."group"
        SET managed = true
        WHERE group_name = 'Your Group Name';
  6. 6Install dependencies using uv
    uv sync --all-extras --dev

README

๐Ÿ“ฑ WhatsApp Group Summary Bot

release version Build Image Release

AI-powered WhatsApp bot that joins any group, tracks conversations, and generates intelligent summaries.


Features

  • ๐Ÿค– Automated group chat responses (when mentioned)
  • ๐Ÿ“ Smart LLM-based conversation summaries
  • ๐Ÿ“š Knowledge base integration for context-aware answers
  • ๐Ÿ“‚ Persistent message history with PostgreSQL + pgvector
  • ๐Ÿ”— Support for multiple message types (text, media, links)
  • ๐Ÿ‘ฅ Group management & customizable settings
  • ๐Ÿ”• Opt-out feature: Users can opt-out of being tagged in summaries/answers via DM.
  • โšก REST API with Swagger docs (localhost:8000/docs)

๐Ÿณ Docker Compose Configurations

This project includes multiple Docker Compose files for different environments:

FilePurposeUsage
docker-compose.ymlDefault/Development. Builds the application from source code.docker compose up -d
docker-compose.prod.ymlProduction. Uses pre-built images from GHCR. Recommended for deployment.docker compose -f docker-compose.prod.yml up -d
docker-compose.local-run.ymlLocal Execution. For running the app on host while services run in Docker.docker compose -f docker-compose.local-run.yml up -d
docker-compose.base.ymlBase Configuration. Contains shared service definitions.โŒ Do not use directly

๐Ÿ“‹ Prerequisites

  • ๐Ÿณ Docker and Docker Compose
  • ๐Ÿ Python 3.13+
  • ๐Ÿ—„๏ธ PostgreSQL with pgvector extension
  • ๐Ÿ”‘ Voyage AI API key
  • ๐Ÿ“ฒ WhatsApp account for the bot

Quick Start

1. Clone & Configure

git clone https://github.com/YOUR_USER/wa_llm.git cd wa_llm

2. Create .env file

  • Copy .env.example to .env and fill in required values.
cp .env.example .env

Environment Variables

VariableDescriptionDefault
WHATSAPP_HOSTWhatsApp Web API URLhttp://localhost:3000
WHATSAPP_BASIC_AUTH_USERWhatsApp API useradmin
WHATSAPP_BASIC_AUTH_PASSWORDWhatsApp API passwordadmin
VOYAGE_API_KEYVoyage AI keyโ€“
DB_URIPostgreSQL URIpostgresql+asyncpg://user:password@localhost:5432/postgres
LOG_LEVELLog level (DEBUG, INFO, ERROR)INFO
ANTHROPIC_API_KEYAnthropic API key. You need to have a real anthropic key here, starts with sk-....โ€“
LOGFIRE_TOKENLogfire monitoring key, You need to have a real logfire key hereโ€“
DM_AUTOREPLY_ENABLEDEnable auto-reply for direct messagesFalse
DM_AUTOREPLY_MESSAGEMessage to send as auto-replyHello, I am not designed to answer to personal messages.

3. Starting the Services

Option A: Development (Build from source)

docker compose up -d

Option B: Production (Use pre-built images)

docker compose -f docker-compose.prod.yml up -d

4. Connect your device

  1. Open http://localhost:3000
  2. Scan the QR code with your WhatsApp mobile app.
  3. Invite the bot device to any target groups you want to summarize.
  4. Restart service: docker compose restart wa_llm-web-server

5. Activating the Bot for a Group

  1. open pgAdmin or any other posgreSQL admin tool

  2. connect using

    ParameterValue
    Hostlocalhost
    Port5432
    Databasepostgres
    Usernameuser
    Passwordpassword
  3. run the following update statement:

        UPDATE public."group"
        SET managed = true
        WHERE group_name = 'Your Group Name';
    
  4. Restart the service: docker compose restart wa_llm-web-server

6. API usage

Swagger docs available at: http://localhost:8000/docs

Key Endpoints

  • /load_new_kbtopic (POST) Loads a new knowledge base topic, prepares content for summarization.
  • /trigger_summarize_and_send_to_groups (POST) Generates & dispatches summaries, Sends summaries to all managed groups

7. Opt-Out Feature

Users can control whether they are tagged in bot-generated messages (summaries, answers) by sending Direct Messages (DMs) to the bot:

CommandDescription
opt-outOpt-out of being tagged. Your name will be displayed as text instead of a mention.
opt-inOpt-in to being tagged (default).
statusCheck your current opt-out status.

Note: This only affects messages generated by the bot. It does not prevent other users from tagging you manually.


๐Ÿš€ Production Deployment

To deploy in a production environment using the optimized configuration:

  1. Create Production Environment File: Copy .env.example to .env.prod and configure your production secrets.

    cp .env.example .env.prod
    
  2. Start Services:

    docker compose -f docker-compose.prod.yml up -d
    

This configuration includes:

  • Automatic restart policies (restart: always)

Developing

Setup

Install dependencies using uv:

uv sync --all-extras --dev

Development Commands

The project uses Poe the Poet for task automation with parallel execution:

# Run all checks (format, then parallel lint/typecheck/test)
uv run poe check

# Individual tasks
uv run poe format     # Format code with ruff
uv run poe lint       # Lint code with ruff
uv run poe typecheck  # Type check with pyright
uv run poe test       # Run tests with pytest

# List all available tasks
uv run poe

The check command runs formatting first, then executes linting, type checking, and testing in parallel for faster execution.

Key Files

  • Main application: app/main.py
  • WhatsApp client: src/whatsapp/client.py
  • Message handler: src/handler/__init__.py
  • Database models: src/models/

Architecture

The project consists of several key components:

  • FastAPI backend for webhook handling
  • WhatsApp Web API client for message interaction
  • PostgreSQL database with vector storage for knowledge base
  • AI-powered message processing and response generation

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Submit a pull request

License

LICENCE

Files in the repo

Repository payloadโ€ข25 top-level entries
  • .cursor
  • .github
  • .vscode
  • app
  • migrations
  • notebooks
  • src
  • .dockerignore
  • .env.example
  • .gitignore
  • .python-version
  • AGENTS.md
  • alembic.ini
  • CHANGELOG.md
  • CODE_OF_CONDUCT.md
  • conftest.py
  • docker-compose.base.yml
  • docker-compose.local-run.yml
  • docker-compose.prod.yml
  • docker-compose.yml
  • Dockerfile
  • LICENSE
  • pyproject.toml
  • README.md
  • uv.lock

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More other

HKUDS/
Vibe-Trading

"Vibe-Trading: Your Personal Trading Agent"

33k

Your Personal AI Assistant; easy to install, deploy on your own machine or on the cloud; supports multiple chat apps with easily extensible capabilities.

35k

Open-source Claude Design alternative. One-click import your Claude Code / Codex API key. Prompt โ†’ prototype / slides / PDF. Multi-model (Claude, GPT, Gemini, Kimi, GLM, Ollama). BYOK, local-first, MIT.

7.9k

๐Ÿคฏ LobeHub is your Chief Agent Operator, organizing your agents into 7ร—24 operations by hiring, scheduling, and reporting on your entire AI team.

82k