Skip to main content

AlphaAvatar WhatsApp Channel

Status Driver Architecture

A pluggable WhatsApp channel for AlphaAvatar, built with a driver abstraction architecture to support multiple backend APIs (Baileys / Meta / Twilio).

Built with a Driver Abstraction Architecture for future API replacement.


🏗 Architecture

This module is divided into two independent layers:

WhatsApp Backend API
        │
        ▼
Driver Layer (replaceable)
        │  WebSocket
        ▼
Bridge Core (Python)
        │  LiveKit DataChannel
        ▼
AlphaAvatar Agent

Layer Responsibilities

🔌 Driver Layer (Replaceable)

Located at:

drivers/
  baileys/

Responsible for:

  • Connecting to WhatsApp backend
  • Receiving inbound messages
  • Sending outbound messages
  • Converting raw events → unified schema
  • Communicating with Bridge Core via WebSocket

This layer can be replaced without modifying the Agent or Bridge Core.


🧠 Bridge Core (Stable API Layer)

Located at:

src/alphaavatar/channels/whatsapp/

Responsible for:

  • WebSocket hub
  • Message deduplication
  • Session mapping
  • LiveKit publish/subscribe
  • Routing whatsapp.in / whatsapp.out

This layer does not depend on a specific WhatsApp API provider.


📦 Current Driver: Baileys (WhatsApp Web)

Development & local testing only.

When to Use

  • Development
  • Internal testing
  • Personal bot
  • Production
  • Public bots
  • High-volume systems

🚀 Quick Start

1️⃣ Start Python Bridge Core

From repo root:

uv run alphaavatar-whatsapp-core

Expected output:

WhatsApp Core WS listening on ws://127.0.0.1:18789

Verify port:

ss -lntp | grep 18789

2️⃣ Start Baileys Driver

cd drivers/baileys
pnpm install
pnpm dev

Expected logs:

Connected to Core WS

Then a QR code will appear.


On your phone:

  1. WhatsApp → Settings
  2. Linked Devices
  3. Link a device
  4. Scan terminal QR

Successful login:

WhatsApp connection opened

4️⃣ Test Message

Send a message to the linked account.

You should receive:

[echo] your message

If echo works, the channel pipeline is healthy.


🔄 Unified Event Schema

All drivers must emit events in the following format.

Inbound Event

{
  "v": 1,
  "channel": "whatsapp",
  "direction": "in",
  "from": "+9715xxxxxxx",
  "chat_id": "wa:xxx",
  "message_id": "xxx",
  "ts": 1700000000,
  "type": "text",
  "text": "hello",
  "meta": { "driver": "baileys" }
}

Outbound Event

{
  "v": 1,
  "channel": "whatsapp",
  "direction": "out",
  "to": "+9715xxxxxxx",
  "chat_id": "wa:xxx",
  "text": "hi!"
}

🔌 Driver Abstraction Model

Future drivers should implement:

  • Inbound handler → send to Bridge Core
  • Outbound handler → send via API
  • Reconnect logic
  • Auth lifecycle

Recommended structure:

drivers/
  baileys/
  meta/
  twilio/

Only the driver directory changes when switching backend API.


🔁 Switching to Official APIs

For production usage, replace Baileys with:

Meta Cloud API

  • Webhook-based inbound
  • HTTPS outbound
  • Business account required

Twilio WhatsApp API

  • Twilio webhook
  • Twilio REST outbound

What Does NOT Change

  • Python Bridge Core
  • LiveKit topics
  • Agent routing logic
  • Memory / RAG / MCP plugins

Only driver implementation changes.


🧠 LiveKit Integration

Bridge Core publishes:

  • whatsapp.in
  • whatsapp.out

Agent subscribes to whatsapp.in Agent replies to whatsapp.out

This decouples channel transport from AI logic.


🛠 Production Hardening Checklist

When moving beyond development:

  • Persistent deduplication (Redis / DB)
  • Per-user message queue
  • Rate limiting
  • Allowlist / pairing
  • Monitoring & health checks
  • Containerization
  • Replace Baileys with official API

📁 Project Structure

avatar-channels/
  avatar-channels-whatsapp/
    drivers/
      baileys/
        src/
    src/
      alphaavatar/channels/whatsapp/
    pyproject.toml
    README.md

📌 Design Philosophy

This module is designed with:

  • Clean separation of concerns
  • Replaceable transport layer
  • Stable AI core
  • Production upgrade path

It ensures that WhatsApp API provider changes do not cascade into AlphaAvatar core logic.

Metadata

Release files for alpha-avatar-channels-whatsapp 0.6.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for alpha-avatar-channels-whatsapp 0.6.7
File Size Uploaded Provenance
alpha_avatar_channels_whatsapp-0.6.7.tar.gz 11.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for alpha-avatar-channels-whatsapp 0.6.7
File Interpreter ABI Platform
alpha_avatar_channels_whatsapp-0.6.7-py3-none-any.whl Python 3 none any Details

Total release size: 29.1 kB

Release files / alpha_avatar_channels_whatsapp-0.6.7.tar.gz

Download URL alpha_avatar_channels_whatsapp-0.6.7.tar.gz
Size 11.0 kB
Tags Source
SHA-256 checksum
How to use checksums
2bf154cddc17f731c0d44f8618a96253e458648a1454620a6e4dd16dea6dd73e
BLAKE2b-256 checksum
How to use checksums
71df086ad751851b42fbff10e672c3684ea673aeabcb48ed5e66fa3cf3cf2601
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / alpha_avatar_channels_whatsapp-0.6.7-py3-none-any.whl

Download URL alpha_avatar_channels_whatsapp-0.6.7-py3-none-any.whl
Size 18.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9821e0019995b6672beec12012c36f549b3d93874e8f1bd2e02a561d6d7f8542
BLAKE2b-256 checksum
How to use checksums
541378082f54da723f6ed84ed1b7c5aeb2802b6f0d2f8c15460c869d6a035aed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Security for alpha-avatar-channels-whatsapp 0.6.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page