Open-source realtime server that adds reliable two-way WebSocket and SSE communication to existing backends.
dunglas/mercure
A protocol and Go reference hub for pushing real-time data updates to browsers and HTTP clients over Server-Sent Events.
Open-source alternative to:Pusher
- Stars
- 5,358
- Forks
- 348
- Open issues
- 17
- Last commit
- 3 days ago
What is it?
Mercure is a protocol for pushing data updates to web browsers and other HTTP clients. It is aimed at publishing asynchronous and real-time updates of resources served through web APIs to reactive web and mobile apps.
This repository contains the protocol specification and a production-grade reference hub written in Go, which acts as the server. The hub is distributed as a free AGPL-licensed program with an official Docker image, and it ships with a Go library that lets any Go application implement the protocol directly without running a separate hub. A managed, high-scalability version of the hub is offered as a hosted service.
The protocol is also published as an Internet-Draft, so other implementations can interoperate with clients that speak it.
Key features
- 01Pushes updates to browsers and HTTP clients over Server-Sent Events.
- 02Ships a reference hub written in Go with an official Docker image.
- 03Provides a Go library for embedding the protocol directly in an application.
- 04Publishes the protocol specification as an Internet-Draft.
Use cases
- Live-updating a web dashboard when backend API resources change.
- Sending asynchronous job progress or notifications to reactive web and mobile apps.
- Embedding real-time push directly into a Go service without a separate hub.
Quick start
- 1
Read the getting started guide on mercure.rocks
- 2
Use the official Docker image from Docker Hub (dunglas/mercure)
Things to know
- The hub is licensed under AGPL, a copyleft license that may restrict how you can use it in proprietary products.
In collections
Topics
FAQ
- What is mercure?
- A protocol and Go reference hub for pushing real-time data updates to browsers and HTTP clients over Server-Sent Events. Mercure is a protocol for pushing data updates to web browsers and other HTTP clients. It is aimed at publishing asynchronous and real-time updates of resources served through web APIs to reactive web and mobile apps.
- Is mercure free to use? What license does it have?
- mercure is open source under the AGPL-3.0 license. Check the license terms before using it in commercial products.
- Is mercure still maintained?
- Actively maintained. The last commit to mercure was on Nov 4, 2026.
- What can I use mercure for?
- Live-updating a web dashboard when backend API resources change. Sending asynchronous job progress or notifications to reactive web and mobile apps. Embedding real-time push directly into a Go service without a separate hub.
- How do I install mercure?
- Read the getting started guide on mercure.rocks Use the official Docker image from Docker Hub (dunglas/mercure)
- Where can I get mercure?
- The source code and installation instructions are on GitHub: https://github.com/dunglas/mercure
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A JavaScript framework for building type-safe web APIs, generating OpenAPI specs from JSDoc comments, with built-in SSE streaming for LLM responses.
Self-hosted, language-agnostic real-time PUB/SUB messaging server that pushes messages to users over WebSocket, SSE, HTTP-streaming, GRPC and WebTransport.
A self-hosted Go application server that turns a schema into permission-aware JSON:API, GraphQL, realtime, file, automation and integration endpoints.
Open-source, React-based headless CMS studio for configuring structured content workspaces backed by the hosted Content Lake data store.
A Go library that generates type-safe GraphQL server code from a schema-first GraphQL definition.