Open SourceUniversity of Melbourne

Decentralized Federated Learning, Made Modular

Murmura is an open-source framework for running Byzantine-resilient decentralized federated learning experiments. Swap aggregators, topologies, and backends from a single config file.

Node

What is Murmura?

Murmura is a config-driven research framework for decentralized federated learning. Define your topology, aggregation algorithm, attack scenario, and execution backend in a single YAML file and run reproducible experiments with one command.

Config-Driven

Full experiments defined in YAML — reproducible, shareable, version-controlled

Modular

Plug in any aggregator, topology, or attack without touching the training loop

Two Backends

Fast in-process simulation or real distributed ZMQ processes — same config

Framework Features

Everything you need to design, run, and extend decentralized FL experiments.

Flexible Topologies

Ring, fully-connected, Erdős-Rényi, and k-regular graphs. Topology is decoupled from training logic.

Byzantine Attack Simulation

Built-in Gaussian noise, directed deviation, and topology-liar attacks with configurable Byzantine fraction.

Simulation & Distributed Backends

Run in-process for fast iteration or as real OS processes over ZeroMQ — switch with one config line.

Dynamic Topology Support

Mobility model generates time-varying graphs deterministically from a shared seed across all nodes.

Config-Driven Experiments

YAML or JSON configs with Pydantic validation. Every experiment is fully reproducible and shareable.

Extensible by Design

Add a new aggregator, topology, or attack by subclassing a single base class — no framework internals to touch.

Quick Start

Install, configure, and run your first experiment in minutes.

Install
pip install murmura
# or with uv (recommended)
uv pip install murmura
Run an experiment
# Run with a config file
murmura run experiments/basic_fedavg.yaml

# List available components
murmura list-components aggregators
murmura list-components topologies
murmura list-components attacks
Example config (YAML)
experiment:
  name: "my-experiment"
  rounds: 50

topology:
  type: "k-regular"
  num_nodes: 20
  k: 4

aggregation:
  algorithm: "krum"

attack:
  enabled: true
  type: "gaussian"
  percentage: 0.2

backend: simulation

Built-in Aggregators

Six aggregation algorithms ready to use out of the box — or bring your own by subclassing Aggregator.

FedAvg

Simple averaging

Krum

Distance-based filtering

BALANCE

Adaptive threshold

Sketchguard

Sketch compression

UBAR

Two-stage robust

Evidential Trust

Uncertainty-aware

Stay Updated

Subscribe to receive updates on Murmura's development and new releases.

We respect your privacy. Unsubscribe at any time.