WS over ZAP
Multi-stream pubsub channel — schema published, runtime in progress.
WS over ZAP
Status — spec-only, January 2026. The wire schema is published; the Go runtime hasn't shipped. "WS" stands for wire stream — this is not WebSocket.
zap-proto/ws is a planned multi-stream pubsub layer on top of ZAP. Each stream gets its own per-stream forward-error-correction (FEC) so a packet loss in one stream doesn't block any other. Subscriptions are filtered server-side using ZAP's content-addressed framing. Every published message is signed by the publisher's identity.
Why on ZAP
The trade-offs WS makes compared to existing pubsub:
| Versus | Why pick WS over ZAP |
|---|---|
| NATS | per-stream FEC, no head-of-line blocking, signed messages by default |
| MQTT | binary framing, capability-based subscription, no broker auth surface |
| Redis pub/sub | content-addressed filtering, durable subscribers via signed offsets |
Schema
Published at zap-proto/ws/schema/zap_ws.zap. Covers PublishRequest, SubscribeRequest, Message, Ack, DurableConfig. Generate types via SDK codegen.
Roadmap
| Milestone | Target |
|---|---|
| Wire schema published | ✅ |
| Go broker runtime | in progress |
| Per-stream FEC integration | in progress |
| Durable subscriber with signed offsets | in progress |
| Cross-language client packages | once Go reference stabilizes |
| Bench against NATS, MQTT | once runtime stabilizes |
Performance claims will be sourced from zap-proto/bench. No numbers will be published before the harness exists.
Track progress on zap-proto/ws.