Flower AI Summit 2026·April 15–16·London

@gfedops/fedops-mnist

85
1
flwr new @gfedops/fedops-mnist

FedOps MNIST Client App (FlowerHub)

This repository provides a FedOps Client App for MNIST training in a federated setting. It is intended for real client participation (laptop/PC/server/edge nodes), not only single-machine simulation.

In other words, this project is the client-side application that joins a FedOps-managed FL lifecycle.

What Is FedOps?

FedOps (Federated Learning Lifecycle Operations Management Platform) is a platform for operating federated learning end-to-end in production-like environments:

  • migrate existing AI/ML workflows into FL with minimal friction
  • scale participation across many clients in an MLOps-like manner
  • continuously manage and monitor the full FL lifecycle

FedOps official site: https://ccl.gachon.ac.kr/fedops

What This App Is (and Is Not)

This repository (fedops-mnist) is a FedOps Client App.

  • It runs local training on client-side data.
  • It sends updates to an FL server.
  • It receives aggregated global updates for the next round.

It does not create the FedOps FL server itself.

To set up the FedOps FL server first, follow: https://gachon-cclab.github.io/docs/FedOps-Tutorials/Create-FL-Server/

Operational Capabilities in the FedOps Context

FedOps supports real-device FL operations with platform-level capabilities such as:

  • FLScalize: adapt existing models/data into FL client/server workflows
  • Manager: monitor and manage client/server execution states
  • CE/CS (Contribution Evaluation / Client Selection): contribution-aware client selection logic
  • CI/CD/CFL: Git-based deployment and continuous/cyclic federated workflows
  • Monitoring Dashboard: lifecycle visibility across run states, logs, and rounds

How This Client Runs

When you run this app with Flower (flwr run .), it launches two FedOps-side client processes:

  • local training client (fedopsmnist.client_main)
  • communication manager (fedopsmnist.client_manager_main)

Together, they participate in the practical FL cycle:

  1. Train on local client data
  2. Send model updates to the FL server
  3. Receive aggregated global model updates
  4. Repeat for the next round

Installation

pip install -e .

Run

Default run:

flwr run .

Run with a specific FedOps task ID:

flwr run . --run-config 'task_id="<YOUR_TASK_ID>"'

task_id from Flower run config is injected into the FedOps client configuration at startup.

Project Structure

fedops-mnist
├── fedopsmnist
│   ├── __init__.py
│   ├── client_app.py          # Placeholder ClientApp for Flower app validation
│   ├── launcher_app.py        # Flower ServerApp entrypoint (process launcher)
│   ├── client_main.py         # FedOps local training client
│   ├── client_manager_main.py # FedOps communication manager (FastAPI)
│   ├── data_preparation.py    # MNIST data loading
│   ├── models.py              # MNIST model/train/eval helpers
│   └── conf/config.toml       # FedOps client configuration
├── pyproject.toml
└── README.md

Notes

  • Network connectivity to the target FedOps FL server is required.
  • In local (non-Docker) execution, the launcher uses environment-based task ID injection so client-manager communication remains on localhost.