DiscoverVulcain | Server Push Web APIs


Install the hub

Managed and HA Versions

Managed and High Availability versions of are available, give them a try!

Prebuilt Binary

First, download the archive corresponding to your operating system and architecture from the release page, extract the archive and open a shell in the resulting directory.

Note: Mac OS users must use the Darwin binary.

Then, on Linux and Mac OS X, run:

./mercure --jwt-key='!ChangeMe!' --addr=':3000' --debug --allow-anonymous --cors-allowed-origins='*' --publish-allowed-origins='http://localhost:3000'

On Windows, start PowerShell, go into the extracted directory and run:

$env:JWT_KEY='!ChangeMe!'; $env:ADDR='localhost:3000'; $env:DEMO='1'; $env:ALLOW_ANONYMOUS='1'; $env:CORS_ALLOWED_ORIGINS='*'; $env:PUBLISH_ALLOWED_ORIGINS='http://localhost:3000'; .\mercure.exe

The Windows Defender Firewall will ask you if you want to allow mercure.exe to communicate through it. Allow it for both public and private networks. If you use an antivirus, or another firewall software, be sure to whitelist mercure.exe.

The server is now available on http://localhost:3000, with the demo mode enabled. Because the allow_anonymous option is enabled, anonymous subscribers are allowed.

To run it in production mode, and generate automatically a Let's Encrypt TLS certificate, run the following command as root:

JWT_KEY='!ChangeMe!' ACME_HOSTS='' ./mercure

Using Windows in production is not recommended.

The value of the ACME_HOSTS environment variable must be updated to match your domain name(s). A Let's Encrypt TLS certificate will be automatically generated. If you omit this variable, the server will be exposed using a not encrypted HTTP connection.

When the server is up and running, the following endpoints are available:

  • POST to publish updates
  • GET to subscribe to updates

See the protocol for more details about these endpoints.

To compile the development version and register the demo page, see

Docker Image


A Docker image is available on Docker Hub. The following command is enough to get a working server in demo mode:

docker run \
    -e JWT_KEY='!ChangeMe!' -e DEMO=1 -e ALLOW_ANONYMOUS=1 -e CORS_ALLOWED_ORIGINS=* -e PUBLISH_ALLOWED_ORIGINS='http://localhost' \
    -p 80:80 \

The server, in demo mode, is available on http://localhost. Anonymous subscribers are allowed.

In production, run:

docker run \
    -e JWT_KEY='!ChangeMe!' -e ACME_HOSTS='' \
    -p 80:80 -p 443:443 \

Be sure to update the value of ACME_HOSTS to match your domain name(s), a Let's Encrypt TLS certificate will be automatically generated.

Docker Compose

You can use this Docker image in your Compose stack:

    image: dunglas/mercure
        - 80:80
        - JWT_KEY=!ChangeMe!
        - DEMO=1
        - PUBLISH_ALLOWED_ORIGINS=http://localhost

In production:

    image: dunglas/mercure
        - 80:80
        - 443:443
        - JWT_KEY=!ChangeMe!


To install in a Kubernetes cluster, use the official Helm Chart:

helm install stable/mercure

Arch Linux is available on the AUR, you can install it with your favorite AUR wrapper:

yay -S mercure

Or download the PKGBUILD and compile and install it: makepkg -sri.