Mercure is a protocol and reference implementation for pushing real-time data updates to web browsers and HTTP clients in a battery-efficient manner. The project provides both the protocol specification and a production-grade hub server written in Go, along with a library for implementing the protocol directly in Go applications.
Mercure solves the problem of delivering real-time updates to web and mobile applications by establishing a standardized protocol built on HTTP and server-sent events. Rather than requiring clients to continuously poll for changes, the protocol allows servers to push updates to subscribed clients efficiently. The approach emphasizes reliability and battery efficiency, making it suitable for mobile environments where connection overhead matters.
Teams building reactive web applications, mobile apps, or systems that need to publish async updates through web APIs should consider Mercure. It works well for scenarios where you need to keep multiple clients synchronized with server-side state changes without the complexity of traditional WebSocket implementations. The project provides a complete stack: the protocol specification itself, a ready-to-deploy hub server, a Go library for direct protocol implementation, and an official Docker image for containerized deployment. A managed, high-scalability hosted version is also available for teams preferring not to operate their own infrastructure.
The project maintains an active specification process, with the protocol documented as an Internet-Draft. Development shows consistent engagement with the codebase, regular updates to both the hub implementation and supporting libraries, and ongoing refinement of the protocol specification. The project welcomes community contributions through its established contribution guidelines.