rmyndharis/OpenWA

GitHub Trending (daily) Tools

Summary

OpenWA is a free, open-source WhatsApp API Gateway with a pluggable architecture, multi-session support, Docker deployment, and a full React dashboard, giving developers full control over their messaging infrastructure without vendor lock-in.

Free, Open Source, Self-Hosted WhatsApp API Gateway
Original Article
View Cached Full Text

Cached at: 05/20/26, 02:25 PM

rmyndharis/OpenWA

Source: https://github.com/rmyndharis/OpenWA

OpenWA Logo

OpenWA

Open Source WhatsApp API Gateway

Features • Quick Start • Docs • API • Contributing

Version License Node NestJS Docker TypeScript


✨ Why OpenWA?

OpenWA is a free, open-source WhatsApp API Gateway designed for developers who need full control over their messaging infrastructure—without vendor lock-in or hidden paywalls.

Built on a pluggable architecture, OpenWA lets you swap database engines (SQLite/PostgreSQL), storage backends (Local/S3), and cache layers (Memory/Redis) without changing a single line of application code.

🔓 100% Open SourceNo licensing fees, no feature locks, full source code access
🏗️ Pluggable ArchitectureSwap adapters for database, storage, and cache via config
🖥️ Full DashboardModern React UI for session, webhook, and API key management
🔹 Multi-Session ReadyRun multiple WhatsApp sessions concurrently on one instance
🐳 Docker NativeProduction-ready with zero configuration
🔗 n8n IntegrationCommunity nodes for workflow automation

🎯 Features

Core Features

FeatureStatusDescription
REST API✅Full WhatsApp API via HTTP endpoints
Multi-Session✅Manage multiple WhatsApp accounts
Webhooks✅Real-time events with HMAC signature
Web Dashboard✅Visual management interface
API Key Auth✅Secure API authentication
Swagger Docs✅Interactive API documentation

Messaging

FeatureStatusDescription
Text Messages✅Send/receive text messages
Media Messages✅Images, videos, documents, audio
Message Reactions✅React to messages with emoji
Bulk Messaging✅Send to multiple recipients
Message Status✅Track delivery and read receipts

Advanced

FeatureStatusDescription
Groups API✅Create, manage, and message groups
Channels/Newsletter✅WhatsApp Channels support
Labels Management✅Organize chats with labels
Proxy Support✅Per-session proxy configuration
Rate Limiting✅Configurable request limits
CIDR Whitelisting✅IP-based access control
Audit Logging✅Track all API operations

Infrastructure

FeatureStatusDescription
SQLite✅Zero-config embedded database
PostgreSQL✅Production-grade database
Redis Cache✅Optional performance caching
S3/MinIO Storage✅Scalable media storage
Docker✅One-command deployment
Health Checks✅Kubernetes-ready probes
Data Migration✅Export/import between backends

🚀 Quick Start

Option A: Docker (Recommended)

# Clone and start
git clone https://github.com/rmyndharis/OpenWA.git
cd OpenWA
docker compose -f docker-compose.dev.yml up -d

# Access
# Dashboard: http://localhost:2886
# API: http://localhost:2785/api
# Swagger: http://localhost:2785/api/docs

Option B: Local Development

# Clone repository
git clone https://github.com/rmyndharis/OpenWA.git
cd OpenWA

# Install dependencies (includes dashboard)
npm install

# Start API + Dashboard (config is auto-generated on first run)
npm run dev

# Access
# Dashboard: http://localhost:2886
# API: http://localhost:2785/api
# Swagger: http://localhost:2785/api/docs

🏭 Production Deployment

For production, use the main docker-compose.yml with optional services:

# Basic production (SQLite, local storage)
docker compose up -d

# With PostgreSQL database
docker compose --profile postgres up -d

# Full stack (PostgreSQL, Redis, Dashboard, Traefik)
docker compose --profile full up -d
ProfileServices
postgresPostgreSQL database
redisRedis cache
minioS3-compatible storage
with-dashboardWeb dashboard
with-proxyTraefik reverse proxy
fullAll services above

Development vs Production

  • Development (docker-compose.dev.yml): SQLite, local storage, both API & Dashboard included
  • Production (docker-compose.yml): Configurable database, profiles for optional services

🔌 Ports

ServicePortDescription
API2785REST API endpoints
Dashboard2886Web management interface
Swagger2785/api/docsInteractive API docs

📡 API Examples

Create a Session

curl -X POST http://localhost:2785/api/sessions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"name": "my-bot"}'

Start Session & Get QR Code

# Start the session
curl -X POST http://localhost:2785/api/sessions/{sessionId}/start \
  -H "X-API-Key: YOUR_API_KEY"

# Get QR code (scan with WhatsApp)
curl http://localhost:2785/api/sessions/{sessionId}/qr \
  -H "X-API-Key: YOUR_API_KEY"

Send a Message

curl -X POST http://localhost:2785/api/sessions/{sessionId}/messages/send-text \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "chatId": "[email protected]",
    "text": "Hello from OpenWA!"
  }'

Setup Webhook

curl -X POST http://localhost:2785/api/sessions/{sessionId}/webhooks \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "url": "https://your-server.com/webhook",
    "events": ["message.received", "session.status"],
    "secret": "your-hmac-secret"
  }'

🛠 Tech Stack

LayerTechnology
RuntimeNode.js 22 LTS
FrameworkNestJS 11.x
LanguageTypeScript 5.x
WA Enginewhatsapp-web.js
DatabaseSQLite / PostgreSQL
CacheRedis (optional)
StorageLocal / S3 / MinIO
ORMTypeORM
ContainerDocker + Docker Compose

📁 Project Structure

openwa/
├── src/
│   ├── main.ts                 # Application entry point
│   ├── app.module.ts           # Root module
│   ├── config/                 # Configuration
│   ├── common/                 # Shared utilities
│   │   ├── cache/              # Redis caching
│   │   └── storage/            # File storage (Local/S3)
│   ├── core/                   # Core systems
│   │   ├── hooks/              # Plugin hooks
│   │   └── plugins/            # Plugin system
│   ├── engine/                 # WhatsApp engine abstraction
│   └── modules/
│       ├── session/            # Session management
│       ├── message/            # Message handling
│       ├── webhook/            # Webhook management
│       ├── group/              # Groups API
│       ├── contact/            # Contacts API
│       ├── auth/               # API key authentication
│       ├── infra/              # Infrastructure management
│       └── health/             # Health checks
├── dashboard/                  # React web dashboard
├── docs/                      # Documentation
├── docker-compose.yml
├── Dockerfile
└── package.json

📚 Documentation

Comprehensive documentation is available in the docs/ folder:

DocumentDescription
Project OverviewIntroduction and goals
RequirementsFeature specifications
ArchitectureSystem design
SecuritySecurity implementation
DatabaseData models and migrations
API SpecComplete API reference
DevelopmentCoding standards
Migration GuideDatabase & storage migration

🤝 Contributing

We welcome contributions! Here’s how to get started:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please read our Development Guidelines for coding standards and best practices.


📄 License

This project is licensed under the MIT License – free for personal and commercial use.

See LICENSE for details.


OpenWA – Free, Open Source WhatsApp API Gateway

📖 Documentation · 🔌 API Docs · 🐛 Report Bug · 💡 Request Feature


Made with ❤️ by Yudhi Armyndharis and the OpenWA Community

Similar Articles

Warp Open-Source

Product Hunt

Warp, an AI-powered agentic development environment, has been open-sourced to be built with the community.

Open WebUI Desktop Released!

Reddit r/LocalLLaMA

Open WebUI Desktop launches as a native app letting users run local LLMs or connect to remote servers without Docker or terminal setup, featuring offline operation, system-wide voice input, and floating chat overlay.

Simpler self hosted alt to Open WebUI

Reddit r/LocalLLaMA

OvertChat is a simpler, polished self-hosted alternative to Open WebUI for local AI models, featuring single Docker compose setup, built-in web search, and Kokoro TTS, all MIT licensed.

Open WireGuard Endpoints

Hacker News Top

The article announces new capabilities in UDP Gateway, including open WireGuard endpoints that accept any client without pre-registration and async Lambda invocation for event-driven workflows.