Skip to content

Release history

flower releases

Flower: A Friendly Federated AI Framework

All releases

13 shown

Review required
framework-1.30.0 Breaking risk
Auth Crypto / TLS

Task system + runtime checks + TLS + command restrictions

framework-1.29.0 Breaking risk
Breaking changes
  • Removes Flower File Storage (FFS) and the `--storage-dir` option from `flower-superlink`; replaces with LinkState‑based storage methods.
Notable features
  • Adds `--allow-runtime-dependency-installation` flag to `flower-superexec` enabling per‑run venv creation via uv.
  • Enhances federation management: inspect run details, stream logs, stop runs; adds federation name validation and hides SuperNode status for archived federations.
  • Introduces experimental HMAC shared‑secret authentication for SuperExec with nonce replay protection.
Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Heng Pan, Javier, Micah Sheller, Mohammad Naseri, Patrick Foley, Yan Gao

What's new?

  • Introduce runtime dependency installation option for isolated execution (#6741)

    Introduces the --allow-runtime-dependency-installation flag to flower-superexec, enabling runtime dependency installation via uv so that applications with differing dependencies can run independently. Runtime dependency installation automatically creates an independent venv for each run, even if those runs happen concurrently. Propagates this option from flower-superlink/flower-supernode to automatically started flower-superexec instances when using subprocess isolation mode.

  • Improve federation run management and validation (#6943, #6956, #6957, #6961)

    Enhances federation functionality by enabling members to inspect run details, stream logs, and stop runs directly within a federation. Introduces validation for federation names during creation. Hides the SuperNode status column when a federation is archived.

  • Introduce SuperExec authentication with HMAC and shared secrets (#6948, #6949, #6950, #6951, #6952, #6977, #6978, #6979, #6980, #6981)

    Introduces an experimental SuperExec authentication mechanism based on shared-secret HMAC. Establishes core primitives, nonce replay protection, and interceptor foundations, and integrates authentication into ServerAppIo and ClientAppIo.

  • Show Flower Hub compatibility note in CLI download and review flows (#6989, #6992)

    Surfaces the Flower Hub-provided compatibility note when an app download resolves to an older compatible version instead of the latest release. Reads the returned note field and displays it in flwr run, flwr new and flwr app review, improving transparency around version selection.

  • Enhance authentication for flwr-* processes (#6796)

    Improves security by authenticating RPC calls from flwr-serverapp, flwr-simulation, and flwr-clientapp using token-based mechanism.

  • Update examples with FAB metadata and improved documentation (#6890, #6935)

    Enhances examples by updating README files to use local SuperLink and adding FAB format metadata (fab-format-version = 1 and flwr-version-target). Introduces LICENSE files across published apps and bumps application versions at the minor level to reflect these updates.

  • Display full FAB hash in flwr list JSON output (#6958)

    Replaces truncated FAB hash with the full hash value in the JSON output of flwr list, ensuring complete and accurate identification of FABs.

  • Update documentation (#6959, #6964, #6966)

  • Stabilize CI pipelines and improve test reliability (#6911, #6974, #6985, #6987)

  • General improvements (#6931, #6944, #6946, #6955, #6970, #6973, #6982, #6983, #6988, #6990, #6994, #6995, #6996, #6997, #6999, #7003, #7004, #7005)

    As always, many parts of the Flower framework and quality infrastructure were improved and updated.

Incompatible changes

  • Remove Flower File Storage (FFS) (#6809, #6810)

    Removes Flower File Storage (FFS) and transitions to LinkState-based storage, introducing replacement methods in LinkState and NodeState. Eliminates the --storage-dir option from flower-superlink as part of this change.

framework-1.28.0 Breaking risk
Breaking changes
  • Removed deprecated `run_simulation` Python entrypoint; use `flwr run` instead.
Notable features
  • Introduce federation-based simulation configuration and management
  • Add configurable FAB inclusion and exclusion rules
  • Introduce FAB format v1 validation rules and requirements
Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Daniel Nata Nugraha, Heng Pan, Javier, Julian Rußmeyer, Micah Sheller, Mohammad Naseri, Patrick Foley, Taner Topal, William Lindskog, Yan Gao, xiaoyanshen799

What's new?

  • Introduce federation-based simulation configuration and management (#6787, #6790, #6791, #6806, #6813, #6820, #6821, #6826, #6829, #6837, #6846, #6848, #6857, #6858, #6859, #6860, #6861, #6865, #6867, #6882, #6883, #6888, #6895, #6907, #6934)

    Introduces simulation-capable federations and a mechanism to configure the Simulation Runtime that these federations use in both a persistent manner and with per-run overrides. For the former, the flwr federation simulation-config command is introduced; for the latter --federation-config can be used to dynamically override values at when submitting a run via flwr run. Updates documentation and provides a migration guide here. Refer to the updated Simulation Runtime guide for more details about running simulations with Flower.

  • Improve local SuperLink stability and configuration handling (#6797, #6873, #6874, #6889)

    Improves local SuperLink stability by improving SQLite bootstrap robustness and validating Control API availability before executing CLI calls. Allows magic values (":local:", ":local-in-memory:") for address fields in Flower configuration, which will be translated to the local SuperLink address. Ensures backward compatibility for .options-only connection configurations. Using .options fields in the Flower configuration (config.toml) is now deprecated. See Flower configuration guide for more details.

  • Add configurable FAB inclusion and exclusion rules (#6803, #6804, #6805, #6822, #6823, #6872, #6885)

    Introduces support for user-defined include and exclude patterns in FAB builds via configuration, with validation of pattern lists and extended matching capabilities. Ensures publish filters are applied before FAB build filters, standardizes metadata keys in pyproject.toml, and refactors supporting utilities. Updates documentation with guide on configuring inclusion and exclusion rules.

  • Introduce FAB format v1 validation rules and requirements (#6782, #6825, #6843, #6851, #6887)

    Introduces validation rules for FAB format version 1, requiring flwr-version-target to be specified and enforcing a lower bound for the flwr dependency in pyproject.toml. Adds license file requirements during FAB build.

  • Add non-blocking version update checks across Flower components (#6786, #6788, #6833, #6938)

    Adds non-blocking startup checks in the Flower CLI to detect newer versions of flwr in CLI. Allows disabling by setting environment variable FLWR_DISABLE_UPDATE_CHECK=1.

  • Support port 0 for automatic OS-assigned ports (#6795)

  • Add --version flag to Flower CLI components (#6781)

  • Add dynamic data seed option to FlowerTune LLM examples (#6831)

  • Add flwr federation remove-account command for managing federation membership (#6757, #6759, #6764, #6772, #6777, #6778, #6789)

  • Improve availability and reliability of message delivery and state handling (#6773, #6785, #6877, #6915)

  • Fix handling of scalar (0D) NumPy arrays in strategies and mods (#6783)

  • Improve documentation (#6332, #6742, #6771, #6834, #6838, #6910, #6929, #6941)

  • Improve CI/CD workflows and developer tooling (#6701, #6732, #6738, #6739, #6743, #6744, #6753, #6768, #6769, #6770, #6775, #6793, #6816, #6835)

  • General improvements (#6578, #6627, #6734, #6740, #6748, #6749, #6751, #6755, #6763, #6774, #6776, #6779, #6800, #6801, #6802, #6811, #6815, #6827, #6828, #6839, #6840, #6841, #6842, #6868, #6869, #6893, #6900, #6901, #6906, #6908, #6909, #6918, #6919, #6920, #6921, #6922, #6923, #6930, #6932)

    As always, many parts of the Flower framework and quality infrastructure were improved and updated.

Incompatible changes

  • Remove deprecated run_simulation Python entrypoint (#6752)

    Removes the previously deprecated run_simulation entrypoint to run simulations. The recommended way for launching simulations is flwr run. Refer to the quickstart-turorials for a short guide on how to run your simulations.

framework-1.27.0 Breaking risk
⚠ Upgrade required
  • Unpublished documentation versions v1.8.0–v1.16.0; use current versioned docs.
  • Configure custom Flower directory via `FLWR_HOME` environment variable instead of `--flwr-dir`.
Breaking changes
  • Removed deprecated CLI option `--flwr-dir`; use environment variable `FLWR_HOME` instead.
  • Removed `flower-simulation` CLI entrypoint; superseded by local SuperLink.
Notable features
  • Local SuperLink for managing local simulations (auto‑launches, enables `flwr list`, `flwr log`).
  • SuperLink log rotation with configurable `--log-file`, `--log-rotation-interval-hours`, and `--log-rotation-backup-count`.
  • Multi-federation management via new `flwr federation` CLI commands (create, add‑supernode, remove‑supernode, archive, invite).
Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Heng Pan, Javier, Micah Sheller, Mohammad Naseri, Roma Klapaukh, Ruth Galindo, Taner Topal, Yan Gao

What's new?

Incompatible changes

  • Unpublish v1.8.0-v1.16.0 framework documentation (#6621)

    Unpublishes very old documentation versions that are no longer compatible with the updated documentation structure and release workflow.

  • Drop deprecated --flwr-dir CLI option (#6677)

    Removes the deprecated --flwr-dir option from CLI commands. A custom Flower directory can still be configured using the FLWR_HOME environment variable.

  • Remove flower-simulation CLI entrypoint (#6628)

    Removes the flower-simulation CLI entrypoint. With the introduction of local SuperLink, this command is no longer needed.

v1.26.1 Bug fix

Fixed client resource handling in local simulations to correctly propagate backend configuration settings such as CPU and GPU allocations.

Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Charles Beauville, Chong Shen Ng, Copilot, Daniel J. Beutel, Heng Pan, Javier, Taner Topal

What's new?

  • Fix client resource handling in local simulations (#6536)

    Fix an issue in local simulations where backend configuration is not correctly propagated, causing virtual client resource settings such as CPU and GPU allocations in the Flower Configuration to be ignored.

  • Update framework documentation (#6528, #6530)

  • General improvements (#6526, #6493, #6534, #6531, #6523, #6529, #6501)

v1.26.0 Breaking risk
⚠ Upgrade required
  • Run any `flwr` command after upgrade; the legacy federation configuration in `pyproject.toml` will be automatically migrated to the new central config format.
  • Update scripts and CI pipelines that reference the deprecated `enable-account-auth` flag or rely on `pyproject.toml`‑based CLI settings.
Breaking changes
  • Removes obsolete `enable-account-auth` option and legacy `flwr` CLI configuration stored in `pyproject.toml`; centralizes config via new Flower CLI format.
Notable features
  • Introduce centralized `flwr` CLI configuration for managing SuperLink connections, simulation settings, and reuse of named connections across projects.
  • Enable automated Alembic-based database migrations on Flower version upgrades to ensure DB compatibility.
Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Flippchen, Heng Pan, Iason Ofeidis, Javier, Jun S, Soumik Sarker, Taner Topal, Yan Gao, nihonge

What's new?

Incompatible changes

  • Deprecate legacy flwr CLI configuration via pyproject.toml (#6374, #6393, #6399, #6405)

    Deprecates the now-legacy flwr CLI configuration usage (where configuration lives in pyproject.toml) following the introduction of the (central, project-independent) Flower configuration. Refer to the Flower CLI reference or run flwr <command> --help for updated usage.

v1.25.0 Breaking risk
Breaking changes
  • Removed bundled templates from `flwr new`
  • Deprecated `--framework` and `--username` options in `flwr new`
Notable features
  • Track compute time and network traffic for runs (displayed in run detail view)
  • Refactored `flwr new` to pull apps from the Flower platform with updated quickstart examples
  • CLI now shows human‑readable durations (`xd xh xm xs`) instead of fixed HH:MM:SS format
Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Chong Shen Ng, Daniel J. Beutel, Heng Pan, Javier, Mohammad Naseri, Soumik Sarker, William Lindskog, Yan Gao, sarahhfalco

What's new?

  • Track compute time and network traffic for runs (#6241, #6242, #6243, #6244, #6245, #6249, #6266, #6267, #6268, #6269, #6270, #6271, #6272, #6273, #6274, #6275, #6276, #6279)

    Flower now records compute time and network traffic for a run. The run detail view shown by flwr list --run-id <run-id> displays traffic exchanged between SuperLink and SuperNode, as well as compute time used by ServerApp and ClientApp.

  • Refactor flwr new to pull apps from the Flower platform (#6251, #6252, #6258, #6259, #6260, #6263, #6265, #6283, #6284, #6285, #6292, #6294, #6302)

    Refactors flwr new to fetch Flower apps directly from the Flower platform (see the usage reference). This introduces new and updated quickstart examples (including NumPy and FlowerTune LLM), renames and updates existing examples, aligns CI to run against platform-backed examples, and updates related documentation and benchmark instructions.

  • Migrate examples to the Message API and remove outdated Docker Compose as well as Tensorflow Privacy examples (#6232, #6233, #6238, #6297, #6304)

    Migrates the scikit-learn, Vertical FL, and Opacus examples to the Message API, with the Vertical FL example also updated to use flwr-datasets. The outdated Docker Compose and Tensorflow Privacy examples are removed.

  • Improve CLI output with human-readable durations (#6277, #6296)

    Updates the Flower CLI to display durations in a more human-friendly format (xd xh xm xs), automatically selecting appropriate units instead of the previous HH:MM:SS format.

  • Update examples and baselines (#6234, #6256, #6257, #6264, #6280, #6281, #6286, #6287, #6288, #6290, #6291, #6293)

  • Improve documentation (#6229, #6230, #6255, #6262)

  • Update CI/CD configuration (#6168, #6246, #6295, #6305)

  • General improvements (#6056, #6085, #6176, #6235, #6236, #6254, #6278, #6299)

    As always, many parts of the Flower framework and quality infrastructure were improved and updated.

Incompatible changes

  • Remove bundled templates from flwr new (#6261)

    Removes the templates previously bundled with the Flower wheel now that flwr new pulls apps from the Flower platform. The --framework and --username options are deprecated as part of this change.

v1.24.0 Breaking risk
Breaking changes
  • Minimum supported Python version increased from 3.9 to 3.10.
  • protobuf upgraded to >=5.29.0 (incompatible with TensorFlow <2.18).
  • Deprecation of `flwr.server.utils.tensorboard`.
Notable features
  • Add support for Python 3.13.
  • Unified app heartbeat mechanism prevents hangs on process crash.
  • Extend federation commands (`flwr federation show`, `list`) with clearer SuperNode/run visibility.
Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Daniel Nata Nugraha, Heng Pan, Javier, Patrick Foley, Robert Steiner, Yan Gao

What's new?

Incompatible changes

  • Drop Python 3.9 support (#6118, #6136, #6147)

    flwr now requires Python 3.10 as the minimum supported version, with baselines and development scripts updated accordingly.

  • Bump protobuf to 5.x (#6104)

    Upgrades protobuf to >=5.29.0, ensuring flwr uses the latest gRPC stack and remains compatible with TensorFlow 2.20+. Note that this version is incompatible with TensorFlow versions earlier than 2.18.

  • Deprecate flwr.server.utils.tensorboard (#6113)

    The flwr.server.utils.tensorboard function is now deprecated, and a slow import issue occurring when tensorflow is installed has been resolved.

v1.23.0 Breaking risk
Breaking changes
  • Removed CSV-based SuperNode authentication.
  • Renamed "user authentication" to "account authentication"; YAML key `auth_type` changed to `authn_type`.
  • Deprecated `--auth-supernode-public-key` flag in `flower-supernode`.
Notable features
  • Dynamic SuperNode management via new Flower CLI commands (e.g., `flwr list`).
  • Quantum federated learning example using PennyLane.
  • File‑based ObjectStore implementation
Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Adam Tupper, Alan Yi, Alireza Ghasemi, Charles Beauville, Chong Shen Ng, Daniel Anoruo, Daniel J. Beutel, Daniel Nata Nugraha, Heng Pan, Javier, Patrick Foley, Robert Steiner, Rohat Bozyil, Yan Gao, combe4259, han97901, maviva

What's new?

Incompatible changes

  • Remove CSV-based SuperNode authentication (#5997)

  • Rename user authentication to account authentication (#5965, #5969)

    Renames "user authentication" to "account authentication" across the framework for improved clarity and consistency. This change also updates the YAML key from auth_type to authn_type to align with authz_type.

  • Deprecate --auth-supernode-public-key flag (#6002, #6076)

    The --auth-supernode-public-key flag in flower-supernode is deprecated and no longer in use. The public key is now automatically derived from the --auth-supernode-private-key, simplifying configuration and reducing redundancy.

v1.22.0 Breaking risk
Breaking changes
  • All federated learning strategies (FedAvg, FedOpt variants, FedProx, Krum, MultiKrum, FedAvgM, FedMedian, FedTrimmedAvg, QFedAvg, Bulyan) have been migrated to the new Message API.
  • `flwr new` templates now default to the Message API; legacy PyTorch template is retained as a marked‑legacy option.
  • All tutorials, how‑to guides, and example projects have been updated to use the Message API.
Notable features
  • Experimental `flwr pull` CLI command introduced for future artifact retrieval from remote SuperLink servers.
Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Heng Pan, Javier, Patrick Foley, William Lindskog, William Lindskog-Munzing, Yan Gao

What's new?

  • Migrate all strategies to Message API (#5845, #5850, #5851, #5867, #5884, #5894, #5904, #5905, #5908, #5913, #5914, #5915, #5917, #5919, #5920, #5931)

    Migrates and implements all federated learning strategies to support the new Message API. Strategies updated or introduced include FedAvg, FedOpt and its variants (FedAdam, FedYogi, FedAdagrad), FedProx, Krum, MultiKrum, FedAvgM, FedMedian, FedTrimmedAvg, QFedAvg, and Bulyan. Differential privacy strategies were also migrated, including both fixed and adaptive clipping mechanisms on the server and client sides.

  • Migrate flwr new templates to Message API (#5901, #5818, #5893, #5849, #5883)

    All flwr new templates have been updated to use the Message API. The PyTorch template based on the legacy API is retained and explicitly marked as legacy for those who prefer or require the older approach. A new template for XGBoost is introduced.

  • Revamp main tutorials to use the Message API (#5861)

    The primary tutorial series has been updated to showcase the Message API. The revamped content improves alignment with recent architectural changes and enhances learning clarity. See the updated tutorial: Get started with Flower.

  • Upgrade tutorials and how-to guides to the Message API (#5862, #5877, #5891, #5895, #5896, #5897, #5898, #5906, #5912, #5916, #5921, #5922, #5923, #5924, #5927, #5928, #5925)

    All framework tutorials and how-to guides have been fully migrated to the Message API. This includes quickstarts for JAX, TensorFlow, PyTorch Lightning, MLX, FastAI, Hugging Face Transformers, and XGBoost, along with comprehensive updates to guides covering strategy design, differential privacy, checkpointing, client configuration, evaluation aggregation, and stateful client implementation. These changes ensure all learning resources are up-to-date, aligned with the current architecture, and ready for developers building on the Message API.

  • Migrate and update examples to support the Message API (#5827, #5830, #5833, #5834, #5839, #5840, #5841, #5860, #5868, #5869, #5875, #5876, #5879, #5880, #5882, #5887, #5888, #5889, #5892, #5907, #5911, #5930)

    Migrates a wide range of examples to the new Message API, ensuring consistency with recent framework updates. Examples updated include quickstarts (e.g., TensorFlow, PyTorch Lightning, Hugging Face, MONAI, FastAI, MLX), advanced use cases (e.g., FlowerTune for ViT and LLMs, FedRAG, FL-VAE), and specialized scenarios (e.g., XGBoost, tabular data, embedded devices, authentication, and custom mods). Enhancements also include updated variable naming, model-saving logic, readme improvements, and import path corrections for better usability and alignment with the new API.

  • Introduce experimental flwr pull command (#5863)

    The flwr pull Flower CLI command is the foundation for future functionality allowing for the retrieval of artifacts generated by a ServerApp in a remote SuperLink.

  • Improve CI/CD workflows (#5810, #5842, #5843, #5854, #5856, #5857, #5858, #5859, #5865, #5874, #5900, #5815)

  • General improvements (#5844, #5847, #5870, #5872, #5873, #5881, #5886, #5890, #5902, #5903, #5909, #5910, #5918)

    As always, many parts of the Flower framework and quality infrastructure were improved and updated.

v1.21.0 Breaking risk
⚠ Upgrade required
  • Update imports: `flwr.serverapp`, `flwr.clientapp`, and `flwr.app` replace deprecated locations (`flwr.server`, `flwr.client`, `flwr.common`).
  • Use the new `--control-api-address` flag instead of the deprecated `--exec-api-address`. The old flag remains for backward compatibility.
  • Replace removed `--executor*` flags with `--simulation` when running SuperLink with the simulation runtime.
Breaking changes
  • Exec API renamed to Control API; `exec.proto` → `control.proto`; `--exec-api-address` flag updated (old flag retained for backward compatibility).
  • Deprecate long‑running commands `flwr-serverapp`, `flwr-clientapp`, and `flwr-simulation`; they now launch SuperExec for backward compatibility.
  • Remove `--executor`, `--executor-dir`, and `--executor-config` flags; executor code eliminated. Use `--simulation` flag instead.
Notable features
  • Introduce Message API strategies (FedAvg, FedOpt, FedAdam, etc.) with a migration guide.
  • Introduce Flower SuperExec for scheduling, launching, and managing app processes with token‑based security and new RPCs.
  • Add OpenShift deployment guide for Flower.
Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Daniel Nata Nugraha, Dimitris Stripelis, Evram, Heng Pan, Javier, Robert Steiner, Yan Gao

What's new?

  • Introduce Message API strategies (#5710, #5766, #5770, #5771, #5774, #5779, #5787, #5794, #5798, #5804, #5807, #5813, #5824, #5831, #5838)

    Introduces a new abstract base class Strategy that operate on Message replies, mirroring the design of those operating on FitIns/FitRes or EvaluateIns/EvaluteRes while providing more versatility on the type of payloads that can be federated with Flower. The first batch of Message-based strategies are: FedAvg, FedOpt, FedAdam, FedAdagrad, FedYogi, and fixed-clipping Differential Privacy strategies. More will follow in subsequent releases. A migration guide has been added to help users transition their existing Flower Apps operating on the original Strategy and NumPyClient abstractions to the Message API.

  • Introduce Flower SuperExec (#5659, #5674, #5678, #5680, #5682, #5683, #5685, #5696, #5699, #5700, #5701, #5702, #5703, #5706, #5713, #5726, #5731, #5734, #5735, #5737, #5751, #5759, #5811, #5828)

    SuperExec is a new component responsible for scheduling, launching, and managing app processes (e.g., ServerApp, ClientApp) within the Flower deployment runtime. It is automatically spawned when running a SuperLink or SuperNode in subprocess mode (default). This also introduces a token-based mechanism that improves security by assigning a unique token to each app execution. Supporting changes include new RPCs, protocol updates, plugin abstractions, and Docker image support for SuperExec. For more details, refer to the updated Flower architecture explainer. Documentation has been revised to reflect the introduction of Flower SuperExec, including guides and tutorials such as quickstart with Docker, GCP deployment, and network communication to consistently use SuperExec.

  • Update quickstart-pytorch to use Message API (#5785, #5786, #5802)

    The quickstart-pytorch tutorial has been migrated to the Message API, using the new FedAvg strategy and the new flwr new template.

  • New PyTorch template with Message API (#5784)

    A new PyTorch template using the Message API is now available through flwr new.

  • Add OpenShift deployment guide for Flower (#5781)

    Introduces a guide for deploying Flower on Red Hat OpenShift, including setup steps and configuration examples.

  • Improve Helm documentation (#5711, #5733, #5748, #5758, #5765, #5816)

    Helm guide has been enhanced with additional configuration details and updated formatting. Changes include adding a parameters section, documenting how to set a custom secretKey, updating TLS instructions for version 1.20, introducing audit logging configuration, and using SuperExec.

  • Improve documentation (#5159, #5655, #5668, #5692, #5723, #5738, #5739, #5740, #5753, #5764, #5769, #5775, #5782, #5788, #5795, #5809, #5812, #5817, #5819, #5825, #5836)

    Restructures the tutorial series, removes flower-simulation references, and updates versioned docs to use the correct flwr versions. The framework documentation homepage now defaults to the latest stable release instead of the main branch.

  • Re-export user-facing API from flwr.*app (#5814, #5821, #5832, #5835)

    The following classes are now re-exported:

    • From flwr.serverapp: ServerApp, Grid
    • From flwr.clientapp: ClientApp, arrays_size_mod, message_size_mod
    • From flwr.app: Array, ArrayRecord, ConfigRecord, Context, Message, MetricRecord, RecordDict

    Importing these from flwr.server, flwr.client, or flwr.common is deprecated. Please update your imports to use flwr.serverapp, flwr.clientapp, or flwr.app instead to ensure forward compatibility.

  • Add --health-server-address flag to Flower SuperLink/SuperNode/SuperExec (#5792)

  • Update CI/CD workflows and dependencies (#5647, #5650, #5651, #5656, #5712, #5714, #5747, #5754, #5755, #5796, #5806, #5808, #5829)

  • General improvements (#5622, #5660, #5673, #5675, #5676, #5686, #5697, #5708, #5719, #5720, #5722, #5736, #5746, #5750, #5757, #5776, #5777, #5789, #5805, #5797, #5820)

    As always, many parts of the Flower framework and quality infrastructure were improved and updated.

Incompatible changes

  • Rename Exec API to Control API (#5663, #5665, #5667, #5671)

    The Exec API has been fully renamed to Control API to make its purpose clearer and avoid confusion with SuperExec. This includes renaming exec.proto to control.proto, updating documentation, and changing the --exec-api-address flag to --control-api-address. For backward compatibility, the old flag is still supported.

  • Deprecate flwr-* commands (#5707, #5725, #5727, #5760)

    The long-running commands flwr-serverapp, flwr-clientapp, and flwr-simulation are deprecated in favor of SuperExec. Invoking them now launches the corresponding SuperExec process for backward compatibility.

  • Remove --executor* flags (#5657, #5745, #5749)

    The --executor, --executor-dir, and --executor-config flags have been deprecated and the executor code removed. Use the new --simulation flag to run SuperLink with the simulation runtime.

v1.20.0 Breaking risk
Breaking changes
  • Removed support for non‑`grpc-bidi` transport in the deprecated `start_client` API.
Notable features
  • Arbitrarily large model transmission via automatic chunking
  • Object-based messaging between SuperNode and ClientApp with new RPCs
  • SuperNode refactored to use NodeState exclusively
Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Daniel Nata Nugraha, Dimitris Stripelis, Heng Pan, Javier, Kumbham Ajay Goud, Robert Steiner, William Lindskog, Yan Gao

What's new?

  • Send/receive arbitrarily large models (#5552, #5550, #5600, #5611, #5614, #5551)

    Flower 1.20 can send and receive arbitrarily large models like LLMs, way beyond the 2GB limit imposed by gRPC. It does so by chunking messages sent and received. The best part? This happens automatically without the user having to do anything.

  • Implement object-based messaging between SuperNode and ClientApp (#5540, #5577, #5581, #5582, #5583, #5584, #5585, #5586, #5587, #5589, #5590, #5592, #5595, #5597, #5598, #5599, #5602, #5604, #5605, #5606, #5607, #5609, #5613, #5616, #5624, #5645)

    Redesigns the messaging system to enable object-based communication between the SuperNode and ClientApp, replacing the previous message-coupled design. Introduces new RPCs and enhances the ClientAppIo and Fleet APIs to faciliate better object storage in SuperNode and decouple ObjectStore from Message, improving maintainability and extensibility. Several refactorings improve modularity, naming consistency, and model weight streaming.

  • Refactor SuperNode to use NodeState exclusively (#5535, #5536, #5537, #5541, #5542, #5610, #5628)

    Refactors SuperNode to rely solely on NodeState for managing all information, decoupling internal components for improved maintainability and clearer state handling. RPCs of the ClientAppIo API have been refactored accordingly, laying the groundwork for future concurrent ClientApps support.

  • Enforce maximum size limit for FAB files (#5493)

    Limits the size of FAB files to a maximum of 10MB to prevent oversized artifacts. Developers can reduce FAB size by excluding unnecessary files via the .gitignore file in the Flower app directory.

  • Add CatBoost federated learning quickstart example (#5564)

    This example shows how to use CatBoost with Flower for federated binary classification on the Adult Census Income dataset. It applies a tree-based bagging aggregation method. View the example for more details.

  • Fix Windows path issue in FAB builds (#5608)

    Updates the way FAB files represent relative paths to their internal files to ensure consistency across different operating systems. This fixes an issue where a FAB built on Windows would fail integrity checks when run on UNIX-based systems (e.g., Ubuntu).

  • Add explainer for pyproject.toml configuration (#5636)

    Adds a guide explaining how to configure a Flower app using its pyproject.toml file. The documentation is available here.

  • Improve flwr new templates with TOML comments and README links (#5635)

    Adds comments to the generated pyproject.toml and a new section in the README.md, both linking to the TOML explainer.

  • Warn when running Ray backend on Windows and update simulation guide (#5579)

    Logs a warning when using the Ray backend for simulation on Windows. Updates the simulation guide to include a corresponding note about limited Windows support.

  • Add Helm deployment guide (#5637)

    The documentation now includes a comprehensive guide for deploying Flower SuperLink and SuperNode using Helm charts. For full instructions, refer to the Helm Guide.

  • Add docs for user authentication and audit logging (#5630, #5643, #5649)

    Introduces documentation for configuring user authentication (User Authentication Guide) and audit logging (Audit Logging Guide) in Flower.

  • Support gRPC health check by default (#5591)

  • Bugfixes (#5567, #5545, #5534)

  • Improve CI/CD (#5560, #5544, #5531, #5532, #5547, #5578)

  • Improve and update documentation (#5558, #5603, #5538, #5626, #5566, #5553, #5588, #5549, #5618, #5612, #5646)

  • General improvements (#5543, #5594, #5623, #5615, #5629, #5571, #5617, #5563, #5620, #5619, #5546, #5601, #5641, #5555, #5533, #5548, #5557, #5565, #5554, #5621, #5644, #5576, #5648)

    As always, many parts of the Flower framework and quality infrastructure were improved and updated.

Incompatible changes

  • Remove non-grpc-bidi transport support from deprecated start_client (#5593)

    Drops support for non-grpc-bidi transport in the deprecated start_client API. Pleaes use flower-supernode instead.

v1.19.0 New feature
Notable features
  • Content-addressable messaging system with SHA256‑hashed objects, `InflatableObject` abstraction, and `ObjectStore` for efficient push/pull.
  • Improved user authorization: CLI commands restricted to authenticated user's runs via Flower Account ID with RBAC support.
  • Floco baseline for personalized federated learning; FEMNIST added to FedProx; StatAvg updated to new App format.
Full changelog

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Adam Tupper, Andrej Jovanović, Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Daniel Nata Nugraha, Dimitris Stripelis, Haoran Jie, Heng Pan, Javier, Kevin Ta, Mohammad Naseri, Ragnar, Robert Steiner, William Lindskog, ashley09, dennis-grinwald, sukrucildirr

What's new?

  • Revamp messaging system with content-addressable object model (#5513, #5477, #5424, #5379, #5353, #5372, #5507, #5364, #5517, #5514, #5342, #5393, #5508, #5504, #5335, #5341, #5430, #5308, #5487, #5509, #5438, #5369, #5354, #5486, #5380, #5496, #5399, #5489, #5446, #5432, #5456, #5442, #5462, #5429, #5497, #5435, #5371, #5450, #5384, #5488, #5434, #5425, #5475, #5458, #5494, #5449, #5492, #5426, #5445, #5467, #5474, #5527)

    Introduces a content-addressable messaging system that breaks messages into a tree of uniquely identified, SHA256-hashed objects. This model allows objects to be pushed and pulled efficiently, avoiding redundant uploads and enabling scalable message streaming and broadcasting. Core enhancements include the new InflatableObject abstraction and ObjectStore for storing and retrieving message content, with Array, Message, and *Record classes now inherit from InflatableObject. New utilities and RPCs facilitate recursive object handling, ID recomputation avoidance, and safe deletion. The framework's servicers, REST, and gRPC layers were refactored to integrate this system, improving real-world deployment scalability and communication efficiency.

  • Improve user authorization and access control (#5428, #5505, #5506, #5422, #5510, #5421, #5420, #5448, #5447, #5503, #5501, #5502, #5511)

    Improves user authorization feature that integrates with the existing authentication protocol. When authentication is enabled, commands like flwr ls, flwr log, and flwr stop are restricted to displaying or affecting only the runs submitted by the authenticated user. This is enforced using the Flower Account ID. Additionally, fine-grained access control can be enforced for CLI operations based on assigned roles (RBAC).

  • Add Floco baseline for personalized federated learning (#4941)

    Introduces Floco, a method that enhances both personalized and global model performance in non-IID cross-silo federated learning. It trains a shared solution simplex across clients, promoting collaboration among similar clients and reducing interference from dissimilar ones. Learn more in Floco Baseline Documentation.

  • Add FEMNIST support to FedProx baseline (#5290)

    Adds FEMNIST dataset to FedProx with preprocessing matching the original paper—subsampling 'a'-'j' and assigning 5 classes per device. More details: FedProx Baseline Documentation

  • Upgrade StatAvg baseline to new Flower App format (#4952)

    The StatAvg baseline is updated to use the new Flower App format. Changes include removing Hydra, switching to pyproject.toml configs, using ClientApp and ServerApp, and saving results via a custom Server class. More details: StatAvg Baseline Documentation.

  • Add guide for running Flower on Google Cloud Platform (#5327)

    The documentation now includes a detailed guide on deploying and running Flower on Google Cloud Platform (GCP). It provides step-by-step instructions for managing Flower workloads in a GCP environment. For more information, refer to the official guide.

  • Implement ServerApp heartbeat monitoring (#5228, #5370, #5358, #5332, #5322, #5324, #5230, #5325)

    Adds heartbeat support to ServerApp processes, enabling the SuperLink to detect crashed or terminated processes and mark them as finished:failed when no final status is received.

  • Extend NodeState to improve SuperNode state management (#5470, #5473, #5402, #5521)

    Extends the NodeState interface and implementation to manage all SuperNode state.

  • Refactor SuperNode for improved robustness and maintainability (#5398, #5397, #5443, #5410, #5411, #5469, #5419)

    Ongoing refactoring of SuperNode improves modularity, simplifies client execution, removes gRPC bidirectional streaming and unused code, and centralizes connection logic. These changes align SuperNode's behavior more closely with SuperLink to make Flower the best platform for robust enterprise deployments..

  • Restructure Flower (#5465, #5476, #5460, #5409, #5408, #5396, #5389, #5392, #5461)

    Reorganizes infrastructure code into dedicated submodules to improve maintainability and clarify the separation from user-facing components.

  • Improve CI/CD workflows (#5498, #5265, #5266, #5328, #5500, #5346, #5318, #5256, #5298, #5257, #5483, #5440, #5304, #5313, #5381, #5385, #5316, #5260, #5349, #5319, #5296, #5294, #5317, #5482, #5282, #5223, #5225, #5326)

    Refines CI workflows, templates, and automation; improves Docker, dependency, and version management; removes legacy jobs and adds proactive maintainer tools.

  • Improve documentation and examples (#5345, #5400, #5406, #5401, #5283, #5416, #5337, #5436, #5373, #5471, #5395, #5279, #5288, #5457, #5305, #5365, #5491, #5463, #5367, #5360, #5374, #5361, #5063)

    Adds documentation for the Flower Components Network Interface and Communication Model, updates the Deployment Engine page, and clarifies the distinctions between simulation and deployment. The custom-mods example has also been revised.

  • Build FAB in memory with new utility function (#5334)

  • Add logging for incoming and outgoing messages in size modifiers (#5437)

  • Bugfixes (#5340, #5366, #5478)

  • General improvements (#5516, #5499, #4927, #5310, #5343, #5359, #5413, #5299, #5433, #5390, #5427, #5350, #5394, #5295, #5315, #5468, #5412, #5348, #5444, #5522)

    As always, many parts of the Flower framework and quality infrastructure were improved and updated.

Beta — feedback welcome: [email protected]