Federated Learning Without Central Trust

Federated Learning Without Central Trust

Replace your central FedAvg server with MPC-based aggregation—no single party sees model updates.

Replace your central FedAvg server with MPC-based aggregation—no single party sees model updates.

Who's it for?

Who's it for?

Who's it for?

Teams using Flower (Python) or similar FL frameworks who want a decentralized, “no central trust” aggregator.

Teams using Flower (Python) or similar FL frameworks who want a decentralized, “no central trust” aggregator.

Teams using Flower (Python) or similar FL frameworks who want a decentralized, “no central trust” aggregator.

No central trust

Answers-only outputs

Only global weights/metrics

Minimal change to training code & ops

# server.py
import flwr as fl
# drop-in FedAvg replacement
from stoffel_flower.strategy import StoffelFedAvg 

# Instantiate Stoffel’s FedAvg
strategy = StoffelFedAvg(
    # Standard FedAvg parameters (unchanged)
    fraction_fit=0.5,
    min_fit_clients=2,
    min_available_clients=2,
    on_fit_config_fn=fit_config,

fl.server.start_server(
    server_address="0.0.0.0:8080",
    config=fl.server.ServerConfig(num_rounds=5),
    strategy=strategy,
)

What you get

FedAvg Lang module (drop-in for rounds)

VM orchestration for round management

App-specific SDK (Python/Flower adapter) to call the aggregator like today

Your Integration Perks

Keep your Flower pipeline

Install the adapter SDK

Point your aggregator endpoint to Stoffel

How it Works

  1. Each party computes local updates as usual.
  1. FedAvg in Stoffel Lang runs via Stoffel VM to combine updates—no peer sees another’s.
  1. Only the new global model (and approved metrics) is shared.

Data never leaves your environment

Data never leaves your environment

Team A train locally

Team A train locally

Team B train locally

Team B train locally

Team C train locally

Team C train locally

Stoffel combines updates

Stoffel combines updates

Everyone gets a better model

Everyone gets a better model

Common Questions

Is there any data movement?
Is there any data movement?
Is there any data movement?
How are stragglers handled?
How are stragglers handled?
How are stragglers handled?
DP/clipping?
DP/clipping?
DP/clipping?