rmyndharis

OpenWA: WhatsApp API Gateway with whatsapp-web.js and Baileys

OpenWA is a self-hosted WhatsApp API gateway built on whatsapp-web.js and Baileys, with a REST API, dashboard and multi-session support. It suits developers who want to operate their own messaging infrastructure, but relies on unofficial WhatsApp clients and carries account-restriction risk.

ActiveTypeScriptMITSelf HostedAPIAutomation
Stars
16.2k
Forks
3.8k
Last commit
today
Contributors
78
Releases, 12 months
100+

Our take

Activeregular commits and releases

Health score

66/100

How it is scored
Activity
90
Community
46
Issues
46
Pull requests
82
  • Releases more often than 93% of the projects we track
  • Merges more pull requests than 92% of the projects we track

OpenWA is a feature-rich self-hosted gateway with sustained recent development, but its unofficial WhatsApp engines and highly concentrated contribution make it a considered choice rather than a low-risk messaging dependency.

Good fit if

  • You need a self-hosted WhatsApp API and are comfortable operating its Docker or Node.js deployment.
  • Your use case is a personal project, internal tool or opt-in automation, and you can use a dedicated number.
  • You want control over sessions, storage and key scopes, and can accommodate the project’s active but contributor-concentrated development.

Look elsewhere if

  • Your deployment requires Meta’s official WhatsApp API or must meet strict regulatory or compliance expectations.
  • Account continuity is critical and you cannot accept the possibility of WhatsApp restricting an unofficial client.
  • You need a vendor-supported service rather than a self-hosted gateway whose development depends heavily on one contributor.
All health signals
Last commit2026-10-25 (today)
Commits, last 90 days100+
Releases, last 12 months100+ (latest v0.25.0, 2026-10-15)
Contributors78 (top contributor: 95% of commits)
Issues closed, last 90 days1+
Pull requests merged, last 90 days88 (typically merged in 0 days)
Project age9 months

Checked on 2026-10-25 with the GitHub API.

Overview

OpenWA is a self-hosted WhatsApp API gateway built on whatsapp-web.js and Baileys. It provides a REST API for WhatsApp messaging and session management, aiming to give developers control over their messaging infrastructure without a hosted API vendor.

The project includes a web dashboard and supports multiple sessions. It is aimed at personal projects, internal tools and automation where self-hosting matters. It is not an official Meta WhatsApp Cloud API client: both engines are unofficial, reverse-engineered clients, and WhatsApp may restrict or ban connected accounts.

Key Features

  • REST API for sessions, messages, contacts, groups, labels and other WhatsApp operations.
  • Multi-session support, with whatsapp-web.js as the default engine and Baileys as an alternative.
  • Web dashboard for managing sessions, webhooks and API keys.
  • Webhooks for real-time events, with HMAC signatures and optional event filters.
  • Configurable SQLite or PostgreSQL databases, local or S3-compatible media storage, and optional Redis.
  • Operator and viewer API keys can be restricted to selected sessions and chats.
  • Docker deployment, a bundled dashboard, Swagger API documentation and an optional MCP interface for AI agents.

Use Cases

  • Developers building an internal support bot who need to send and receive WhatsApp messages through an API they host.
  • Teams connecting WhatsApp events to their own services with webhooks and session-specific credentials.
  • Automation hobbyists running multiple WhatsApp accounts on their own infrastructure.
  • Developers experimenting with AI-agent workflows that need a restricted WhatsApp interface through the optional MCP server.

What you need

Detected in the repository

  • Node.js >=22.19 (from package.json)
  • A Dockerfile, so it can run in a container; a Compose file sets up the related services
  • A Helm chart for Kubernetes
  • A test suite and automated checks on GitHub Actions

License in plain words

MITpermissive

  • Commercial use: yes
  • Modify and redistribute: yes
  • You must keep: the copyright and license notice
  • Share your changes: no

A summary, not legal advice: the LICENSE file is what applies.

Getting Started

With Docker Compose:

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

The dashboard and API are served at http://localhost:2785. See the README for the API-key setup, local development instructions and production deployment options.

Alternatives

  • wa-js: wa-js provides a JavaScript API inside a WhatsApp Web session, while OpenWA offers a self-hosted REST gateway with multi-session support.
ProjectLanguageLicenseStarsStatus
OpenWATypeScriptMIT16.2kActive
wa-jsTypeScriptApache-2.0817Active

Considerations

  • Both supported engines connect through unofficial, reverse-engineered WhatsApp clients. The README warns that account restriction or bans are possible, and that the engines differ in resource use and risk profile.
  • The project is actively maintained, with recent commits and releases, but measured contribution is highly concentrated in one person despite participation from other contributors. This is relevant when assessing long-term maintenance dependence.
  • Running it requires Node.js 22.19 or newer for local development, or Docker and Compose. PostgreSQL, Redis and S3-compatible storage are optional rather than prerequisites.
  • The README notes that WhatsApp’s account-linking passkey step is not supported by either engine, and that some first messages to new contacts may be dropped by WhatsApp’s own policies.
  • OpenWA is licensed under MIT. Its README advises using Meta’s official Cloud API instead for regulated or high-stakes messaging deployments.

Found this useful?

Share it with someone who would like OpenWA.

Comparisons