
WhizMQ - A message queue library implementing ZMTP 3.0 in Nim.
Built on top of PowPow event library
nimble install whiz
- ZMTP 3.0 wire protocol, full greeting, framing, and command handling
- Socket patterns: PAIR, PUB/SUB, REQ/REP, PUSH/PULL, File Transfer
- Security mechanisms:
- NULL: no authentication (plaintext)
- PLAIN: username/password authentication with ZAP callback
- CURVE: X25519 + XChaCha20-Poly1305 AEAD encryption and mutual authentication
- Transport TCP and IPC (Unix domain sockets)
- Built on PowPow event notification library in Nim
Note
CURVE requires Monocypher (via the e2ee package). Install it with your system package manager (brew install monocypher, apt install libmonocypher-dev, etc.) or build from source.
- ZMTP 3.0 wire protocol (greeting, framing, commands)
- PAIR, PUB/SUB, REQ/REP, PUSH/PULL socket patterns
- File transfer over ZMTP
- PLAIN security mechanism + ZAP auth callbacks
- CURVE security mechanism (X25519 + AEAD)
- RADIO/DISH (dgram) socket pattern
- CLIENT/SERVER (stream) socket pattern
- CURVE vouch (Ed25519 signature in HELLO for key continuity)
- TLS/DTLS transport
- GSSAPI / Kerberos mechanism
- WebSocket transport (RFC 7692)
- Formal ZMTP conformance tests
- Performance benchmarks vs ØMQ
...
Note
Benchmark results are not consistent and may show different results across runs and environments.
[Suite] bench_zmtp
bench_pair_latency N=5000 size=1 98626us 50696/s
[OK] bench_pair_latency
bench_pair_throughput N=10000 size=512 23014us 434518/s
[OK] bench_pair_throughput
bench_pubsub_1sub N=10000 size=512 19494us 512978/s
[OK] bench_pubsub_1sub
bench_pubsub_2sub N=5000 size=256 14203us 704076/s
[OK] bench_pubsub_2sub
bench_reqrep N=5000 size=128 143962us 34731/s
[OK] bench_reqrep
bench_sizes_pair N=2000 size=64 6377us 313627/s
bench_sizes_pair N=2000 size=1024 8975us 222841/s
bench_sizes_pair N=2000 size=65536 575434us 3475/s
[OK] bench_sizes_pair
bench_pushpull_throughput N=10000 size=512 110386us 90591/s
[OK] bench_pushpull_throughput
bench_pushpull_1worker N=10000 size=128 11950us 836820/s
[OK] bench_pushpull_1worker
bench_pushpull_3workers N=5000 size=128 8454us 591436/s
[OK] bench_pushpull_3workers
- 🐛 Found a bug? Create a new Issue
- 👋 Wanna help? Fork it!
![]() |
Switch to Open-Source LLMs via OpenCode GO, choosing from a variety of powerful models such as DeepSeek, Qwen, Kimi, GLM-5, MiniMax, MiMo. 🍕 Use our referral link to get started! |
MIT license. Made by Humans from OpenPeeps.
Copyright OpenPeeps & Contributors — All rights reserved.
