asopi tech
asopi techIndie Developer

Cluster Communication

Alopex Chirps

The layer that connects nodes and carries them to agreement

Chirps is a Rust library you embed in an application. Node discovery and joining, gossip-based membership, messaging over QUIC and Raft consensus work without standing up a separate server.

A Rust communication layer that brings node discovery, membership, messaging and Raft consensus together.

v0.6.3OSS

Key points

  • One library from node discovery to messaging
  • Nodes always authenticate each other with mutual TLS
  • Raft building blocks you embed as they are
distributednetworkingrust

Challenge

Cluster communication assembled from separate parts

  • Discovery, liveness, messaging and consensus each come from a different mechanism
  • Authentication between nodes is added later
  • A dedicated server just for consensus to operate

One library to connect, know, send and agree

Embed it in the application and cluster communication and consensus are in place.

  • Join from a seed list and track members through gossip
  • Targeted sends, broadcast, and subscriptions
  • Raft consensus and multiple Raft groups

Capabilities

Two layers

Consensus building blocks sit on top of the mesh.

Mesh

Connect nodes and know their state

  • Join a cluster from a seed list, without DNS
  • Track alive, suspect and dead through SWIM-style gossip
  • Receive node join, leave and status changes as events
  • Targeted sends and broadcast over QUIC with mutual TLS

Consensus

Make decisions in the same order across the cluster

  • Raft consensus. The application owns the state machine
  • Multiple Raft groups, each with its own storage
  • A timestamp oracle that hands out increasing timestamps

Features

Key features

What Chirps provides for cluster communication.

Discovery and membership

Join from a seed list and track each node's liveness through SWIM-style gossip. Node IDs are persisted and survive restarts.

Messaging

Targeted sends, broadcast to all nodes, and subscriptions. Raft traffic travels on the control delivery profile with priority.

Mutual TLS

Communication runs over QUIC, and nodes always authenticate each other with mutual TLS. Only certificates configured as trusted are accepted.

Raft and multiple Raft groups

Raft consensus, with multiple Raft groups running on storage separated per group. Snapshot transfer is supported.

File transfer

Send, broadcast and sync files. The receiver verifies the hash before placing a file.

Prometheus metrics

Mesh, gossip and Raft state through an authenticated endpoint.

Tech Stack

Tech stack

Written in Rust and sharing parts with the Alopex family.

Communication

QUIC + TLS

QUIC transportNode authentication with mutual TLSSWIM-style gossip

Consensus

Raft

Raft through openraftRaft log storage on alopex-core

Resources

Resources

Source code, package, and related pages.

“Start from the problem you have today. You will see quickly what this product removes.”

Takamine Akari

Product guide

“Open the repository and read the design rationale and the tests yourself.”

Asmati Tatsumi

Technical explanation

Get Involved

Try it and tell us where you got stuck

If joining nodes or setting up certificates gave you trouble, open an issue.