Download Latest Version v1.11.0 source code.zip (17.1 MB)
Email in envelope

Get an email when there's a new version of Appfl

Home / v1.11.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-08-25 2.9 kB
v1.11.0 source code.tar.gz 2026-08-25 16.6 MB
v1.11.0 source code.zip 2026-08-25 17.1 MB
Totals: 3 Items   33.7 MB 0

New Features

  • Introduce appfl.vsim, a virtual-time federated learning simulation engine from @sungminkg, which trains all clients serially on a single CPU/GPU while reconstructing the wall-clock behavior of a real federation with a virtual clock. It ships synchronous and asynchronous drivers together with configurable client availability, communication, and compute models. [Documentation].
  • Add a Keycloak-based authenticator for FL client/server authentication from @Abhijit4-debug.
  • Integrate DIMAT into APPFL, together with a gRPC example, from @mnpham0417.
  • Add simulation data loaders and support for user-provided external datasets in appfl.sim from @vaseline555.
  • Add a federated GWAS example running on GA4GH TES endpoints, with documentation from @mfjoel01. [Documentation].
  • Add an APPFL agent skill for coding agents, installable via the new appfl-install-skill command.
  • Add a federated learning example on the Bridge2AI voice dataset.
  • Add a prototype scikit-learn trainer for non-deep-learning federated models.
  • Relax the numpy version requirement to allow numpy 2.x dependencies, reported by @bourdeet in #433.
  • Add a wandb_configs.exp_id option so that all clients of a federation can log into a single Weights & Biases run, which is useful when each client runs in its own process (e.g. gRPC). If unset, the id assigned by the server is used when available, otherwise a random one is generated.

Bug Fixes

  • Fix a series of security issues reported and fixed by @mdorier, including: preventing shell injection when setting up SSL certificates via appfl-setup-ssl, requiring an explicit auth_token in NaiveAuthenticator, no longer shipping the test SSL certificates and private key in the released wheel, creating APPFL working directories with 0o700 permissions and a uid-namespaced /tmp fallback, enforcing owner-only permissions on the Globus token store directory and database, refusing AWS credentials files with insecure permissions, and using randomly named temporary files while refusing symlinks in TES client writes.
  • Tune the gRPC keepalive defaults so long-idle FL channels are not dropped, from @mdorier.
  • Fix the scheduling logic and logging of the QueueScheduler, from @Emon-dey.
  • Guard against a divide-by-zero (NaN) crash in dirichlet_noniid_partition, from @sungminkg.
  • Rename server.pem to server.crt for consistent naming of generated SSL certificates.
  • Log client metrics to Weights & Biases against the federated learning round rather than the implicit wandb step, so that all clients share a common x-axis instead of being spread over interleaved steps.
  • Lazily import Pillow so that it is only required when actually used.
Source: README.md, updated 2026-08-25