Receive encrypted Webex messages.
Emit decrypted ones.
Lightweight Webex Mercury WebSocket + KMS decryption for receiving bot messages — no Webex SDK required. Available for Node.js, Python, Go, and Rust.
The receive path, and nothing you don't need.
The official Webex JS SDK pulls in hundreds of transitive dependencies for a job that's really just a WebSocket and a decrypt loop. This extracts only that.
Small, audited surface
A handful of direct dependencies per language, scanned on every release. Nothing you can't read in an afternoon.
Dependencies, not a framework
The Webex JS SDK ships 300+ transitive packages. This ships the Mercury + KMS essentials and stops there.
Works behind a firewall
An outbound WebSocket, so bots receive messages with no public webhook endpoint and no Hookbuster in the middle.
Install
The same receive-and-decrypt model in each language, with idiomatic APIs. Pick your runtime.
npm install webex-message-handlerFive steps from socket to plaintext.
Every message follows the same pipeline. The library owns all five; you subscribe to the last one.
Register device
Register with WDM and obtain the Mercury WebSocket URL.
Connect Mercury
Open the socket, authorize the token, heartbeat with ping/pong.
Encrypted activity
Mercury pushes encrypted conversation.activity frames.
Fetch KMS key
Retrieve the decryption key over an ECDH-secured KMS channel.
Decrypt & emit
JWE/AES-GCM decrypt, then emit message:created.
More than plain text.
The decrypt loop surfaces the parts of a Webex activity you actually act on — parsed, deduped, and typed.
message:updated with the re-decrypted content.attachmentAction:created with the submitted inputs.files.parentId plus REST ↔ Mercury ID conversion helpers.Where it fits.
It does one side of the conversation — receive — and expects you to send with the plain REST API.
| webex-message-handler | Webex JS SDK | Hookbuster | |
|---|---|---|---|
| Dependencies | ~6 | ~300+ | Full SDK |
| Known vulnerabilities | 0 | Multiple | Inherits SDK |
| Languages | Node · Python · Go · Rust | JavaScript | JavaScript |
| Receive messages | Yes | Yes | Yes |
| Send messages | No — use REST | Yes | No |
| Public webhook required | No | No | No |
| Footprint | ~50 KB | ~5 MB+ | ~5 MB+ |