Check out our Launch week free trial and the Polymorfa Builders Program! 15 Pro numbers + add-ons for 30 days.

Ends in ––d : ––h : ––m : ––s

Command Palette

Search for a command to run...

Bartender · mock server

A fake WhatsApp Web. For real tests.

Bartender is a drop-in WhatsApp Web server that speaks the same protocol Polymorfa does, without touching a real number. Same API, same webhooks, deterministic messages. Free in CI; free in dev.

The name is a joke. The server is not.

Bartender serves fake drinks. It implements the WhatsApp multi-device protocol end-to-end, sockets, binary frames, encryption handshake, and returns synthetic but realistic responses. Your code never knows it is talking to a mock.

Point a Polymorfa runner at Bartender instead of WhatsApp and run your whole system: send messages, receive webhooks, test bans, simulate disconnects. When you flip back to production, nothing else changes.

Bartender on GitHub
# Start Bartender locally
$ docker run --rm -p 9000:9000 ghcr.io/polymorfa/bartender:latest
 
# Point a Polymorfa runner at it
$ export POLYMORFA_WA_ENDPOINT=ws://localhost:9000
$ polymorfa runner start
 
# Run your test suite
$ pnpm test
Capabilities

Everything a test bench needs.

A synthetic WhatsApp that behaves like the real one, minus the risk.

Protocol-accurate

Implements the WhatsApp multi-device wire protocol, not a shim over our REST API. Your runner code runs unchanged.

Scripted scenarios

Inject bans, disconnects, slow networks, message floods, group join spam. Reproduce the rare production incident on demand.

CI-friendly

One Docker image. Spins up in under a second. Deterministic by default: same seed, same messages, same ordering.

Same API, same webhooks

Your webhook endpoints get identical payloads to production, minus the real-world noise. HMAC signatures still verify.

Free for everyone

Bartender is open source and free to self-host. No Polymorfa account needed: we built it for ourselves, and published it.

Fast feedback

Tests that took 45 seconds against a real number run in milliseconds. CI pipelines stop costing real money.

Deep dive

Test in a synthetic WhatsApp.

You can't run WhatsApp in CI, so most teams test in production with their own phones. Bartender fixes the root cause: a server that speaks the real wire protocol, running wherever your tests run.

Because it is deterministic, the rare production incident becomes a fixture: same seed, same messages, same ordering, every run.

1:1
wire-protocol parity
<1s
startup in CI
$0
open source, self-hosted
How it works

Pull the image.

One command to start. Point your dev Polymorfa runner at it and you are in a synthetic WhatsApp.

Read the docs
1
docker run bartenderOne command; the wire-protocol server is listening in under a second.
2
Point your runner at itSwap the WhatsApp endpoint for ws://localhost:9000; nothing else changes.
3
Run your suiteSend, receive, ban, disconnect. Assert on identical payloads and HMAC-signed webhooks.
By the numbers

The mock, quantified.

Small enough for CI, faithful enough to trust.

ProtocolWhatsApp multi-device, end-to-end
Packagingone Docker image
Startupunder 1 second
Determinismseeded · replayable
Licenceopen source · free

Ship a WhatsApp integration this afternoon.

Free on the sandbox. No credit card. The projects you start here migrate straight into production.