EN | PT | ES
GitHub Download
HERMES Project Rhizomatica

DATA COMMUNICATIONS ANYWHERE

Mercury is a fully open-source HF modem — built for emergency communications, remote communities, and amateur radio operators. Developed by Rhizomatica as part of the HERMES Project

  • 150+ GitHub Stars
  • 🔱GPL-3.0 Open Source
  • 📡HF Radio Compliant
  • 🪟Linux & Windows
  • 🔁16+ Releases
  • 🤝VARA Compatible
Features

Mercury delivers high-quality HF data communications in a lean, open-source package.

Adaptive ARQ Protocol

Intelligent error-correction with connect/accept handshake, ACK/retry logic, keepalive, and controlled disconnect. Every byte delivered, even under harsh conditions.

Reliability

Intelligent Gear-Shifting

Per-direction adaptive mode selection: automatically shifts between DATAC4, DATAC3, and DATAC1 based on live SNR feedback.

Performance

Broadcast Mode

Simultaneously send data to many stations in parallel alongside ARQ sessions. Dedicated broadcast framing with its own TCP ingress port — one transmitter, many receivers.

Scale

VARA TCP Compatible

Drop-in replacement for VARA TNC. The same control and data socket interface means Mercury works instantly with Winlink, JS8Call, and most ham radio apps.

Compatibility

Cross-Platform

Native binaries for Linux (AMD64 & ARM64 / Raspberry Pi) and Windows. ALSA, PulseAudio, WASAPI audio backends. Works on any hardware with a sound card.

Portability

Radio Agnostic

Works with virtually any amateur or commercial HF radio via Hamlib — Icom, Yaesu, Kenwood, and more. Automatic PTT keying.

Flexibility

FreeDV Physical Layer

Built on field-proven FreeDV digital data modes Mode pool eliminates codec re-initialization — the fastest possible link setup.

Proven Tech

GPL-3.0 Open Source

Full source code published. No license fees. Audit every line, fork it, extend it, deploy it. Community-driven development.

Freedom
How It Works

Up and Running in Three Steps

Mercury is designed for simplicity without sacrificing usability or performance.

1
STEP 01

Connect Your HF Radio

Plug your HF transceiver into your computer via a sound card interface (SignaLink, Rigblaster, or built-in). Mercury supports any radio Hamlib does — thousands of models from Icom, Yaesu, Kenwood, and more.

USB-C / Serial / Audio Interface
2
STEP 02

Install & Configure Mercury

Install Mercury via Debian package, compile from source, or download the Windows ZIP. Edit a simple INI config file to set your callsign, audio devices, and radio model. That's it.

Linux, Windows, Raspberry Pi
3
STEP 03

Start Communicating

Mercury exposes a VARA-compatible TCP interface. Connect Winlink Express, JS8Call, or any ARQ-capable app. Or use Mercury directly to send files, email, and data thousands of kilometers.

Winlink, JS8Call, Custom Apps

Ready to connect? Follow our detailed installation guide.

View Installation Guide
Testimonials

Trusted by World-Class Experts

"I am very pleased to see Rhizomatica using the FreeDV data modes combined with their own custom ARQ protocol to send data over low SNR HF channels. It is great to see Rhizomatica embracing those waveforms, and spreading the use of open source in HF Data."

David Rowe VK5DGR
Inventor of Codec 2 & FreeDV
Open-Source Digital Radio Pioneer

"Not only has Rhizomatica developed a fully open-source software modem, they have done so to empower communities in need of their own communication infrastructure. We are proud to have supported Rhizomatica in this work, and very excited to see it now available to the amateur community and others around the world using HF for critical communication."

Rosy Schechter KJ7RYV
Executive Director, ARDC
Amateur Radio Digital Communications

"This development is a very big deal in the evolution of data communications in Amateur Radio. Mercury now offers a well-engineered data communications system for use on the Amateur Radio HF bands...But the real significance of Mercury is that it’s an open source project, and has already been ported to Linux. Prior to Mercury, open source data communications systems for HF were generally lower performance, and not very robust, such as 300 bps Audio Frequency Shift Keying (AFSK) packet radio...I applaud the Mercury developers for their savvy choice to implement the Orthogonal Frequency Division Multiplexing (OFDM) subsystem that was developed and proven out by FreeDV...I hope… expect… that Mercury will eventually become the primary data communications mode in use on Amateur Radio HF."

Steve Stroh N8GNJ
Editor
Zero Retries
Open Source

Built for Humanity, Not for Profit

Rhizomatica is a non-profit. Mercury is a public good. Communication is a human right — and that means the tools must be open, free, and impossible to monopolize.

No Vendor Lock-In

GPL-3.0 means you own your communication stack. Deploy it, modify it, share it. No subscription necessary.

Full Auditability

Every line of code is public. Security researchers, governments, and communities can verify exactly what Mercury does.

Community Driven

Built by Rhizomatica with contributions from radio enthusiasts, researchers, and humanitarian workers worldwide. You can contribute too. Generously supported by ARDC over the years.

Built for Longevity

Open standards (FreeDV, Hamlib) ensure Mercury works today and tomorrow.

GPL-3.0 License
Strong open protection

Mercury is licensed under the GNU General Public License v3.0. This guarantees your freedom to study, share, and modify the software — and ensures those freedoms are preserved for everyone.

Read the license
Amateur Radio Digital Communications

Mercury development was sponsored by ARDC — a foundation dedicated to supporting open, digital radio communications.

Get Started

Install Mercury in Minutes

Choose your platform and follow the steps. Full documentation available at rhizomatica.github.io/mercury.

1 Install Dependencies
$ sudo apt-get update && sudo apt-get install \
libasound2-dev libpulse-dev libhamlib-dev make git
2 Clone & Build
$ git clone https://github.com/Rhizomatica/mercury.git
$ cd mercury && make
$ sudo make install
3 Configure & Run
$ cp mercury.ini.example mercury.ini
# Edit mercury.ini with your callsign and audio devices
$ mercury -z # List available sound cards
$ mercury -l # List available modem modes
$ mercury # Start Mercury
1 Add Repository Key
$ wget --no-check-certificate -qO- \
https://debian.hermes.radio/hermes/hermes.key | \
gpg --dearmor -o - | \
sudo tee /etc/apt/trusted.gpg.d/hermes.gpg > /dev/null
2 Add Source (AMD64)
$ echo 'deb [arch=amd64] http://debian.hermes.radio/hermes trixie main' | \
sudo tee /etc/apt/sources.list.d/hermes.list
# For ARM64 (Raspberry Pi), replace amd64 with arm64
3 Install Mercury
$ sudo apt-get update
$ sudo apt-get install mercury
$ mercury --version # Verify installation
1 Download the ZIP
# 1. Visit the releases page:
# https://github.com/Rhizomatica/mercury/releases
# 2. Download the latest Windows ZIP package
# 3. Extract to your preferred directory
2 Configure & Run
# Copy and edit the configuration file:
$ copy mercury.ini.example mercury.ini
# Edit mercury.ini with Notepad or VS Code
# Double-click mercury.exe to launch
3 Connect Your App
# Mercury exposes a VARA-compatible TCP TNC:
# ARQ Control: localhost:8300
# ARQ Data: localhost:8301
# Broadcast: localhost:8100
# Configure Winlink, JS8Call, or your app to connect here
1 Prerequisites
# Required: GCC, Make, ALSA/PulseAudio dev libs, HAMLIB dev libs
$ sudo apt-get install build-essential libasound2-dev \
libpulse-dev libhamlib-dev
2 Clone Repository
$ git clone https://github.com/Rhizomatica/mercury.git
$ cd mercury
# Check config.mk for compiler options
$ cat config.mk
3 Build & Install
$ make -j$(nproc) # Build with all CPU cores
$ sudo make install # Install system-wide
$ mercury -h # View all options

Join our Community

Join our community mailing list to contribute, report issues, and shape the future of HF communications.