📈 GH Trending Explorer 🎲 Surprise me

← all repos

rmyndharis / OpenWA

git clone https://github.com/rmyndharis/OpenWA.git v0.25.0 · 5d ago 🔥 on GitHub Trending today

Free, Open Source, Self-Hosted WhatsApp API Gateway

+252
stars, 24h · #56
—
stars, 7 days
—
stars, 30 days
16k
★ total
3.7k
forks · 24 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguageTypeScript
LicenseMIT
Created2026-02-02 (8mo ago)
Last pushtoday
Watchers88
OwnerUser

Seen on GitHub Trending

  • 2026-10-20 — #7 daily in typescript · +252 ★

GitHub topics

Links

README excerpt
OpenWA 
 Open Source WhatsApp API Gateway 
 Features •
 Quick Start •
 Docs •
 API •
 Contributing 
---
## ✨ 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 select database engines (SQLite/PostgreSQL), media storage backends (Local/S3), and cache layers (disabled/Redis) through configuration rather than application-code changes. The storage backend is the live store for status media and, when chat-media archiving is enabled, archived chat media; other message media is returned inline to API and webhook consumers. Of the media, `scripts/backup.sh` archives only the local media directory, so an S3 bucket needs a backup of its own.
| | |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| 🔓 **100% Open Source** | No licensing fees, no feature locks, full source code access |
| 🏗️ **Pluggable Architecture** | Swap adapters for database, storage, and cache via config |
| 🖥️ **Full Dashboard** | Modern React UI for session, webhook, and API key management |
| 🔹 **Multi-Session Ready** | Run multiple WhatsApp sessions concurrently on one instance |
| 🐳 **Docker Native** | Production-ready with zero configuration |
| 🧩 **Official Plugins** | Chatwoot, Typebot & more as sandboxed plugins on the Integration Fabric — OpenWA-plugins |
| 🔗 **n8n Integration** | Community nodes for workflow automation |
| 🧩 **Community Adapters** | Third-party integrations (e.g. ioBroker) — see docs |
| 🔐 **Session-scoped keys** | Operator and viewer (reader) tokens can be limited to chosen sessions — or all sessions if none are selected |
| 🔒 **Chat-scoped keys** | Those same tokens can also be limited to chosen chats — a few groups and contacts — so an agent on a shared account sees only its own |
### Session-scoped operator & viewer tokens
When you create or edit an **operator** or **viewer** API key in the dashboard, you can tick the WhatsApp sessions that key may use.
- **No sessions selected** — the key can access every session, including ones created later.
- **One or more sessions selected** — the key can only list, read, and (for operator) manage those sessions. A request naming any other session returns `403` ("API key not authorized for this session"); session-filtered lists (sessions, audit, webhook delivery failures) return that key's rows rather than an error; and the key-management routes and the queue dashboard, which name no session at all, return `403`.
Admin keys stay unscoped in the dashboard so they can keep managing other API keys. The HTTP API still accepts `allowedSessions` on any role if you need that from a client.
### Chat-scoped operator & viewer tokens
A session-scoped key still reaches every chat on the sessions it may use. A key c