FLIP is an open-source platform for federated training and evaluation of medical-imaging AI models across healthcare institutions. Models travel to the data held inside each institution; patient data remains within the institution's security boundary.
The platform combines a Central Hub for project orchestration with independently operated Trust nodes. It supports both NVIDIA FLARE and Flower as federated-learning backends. FLIP is developed by the London AI Centre with Guy's and St Thomas' NHS Foundation Trust and King's College London.
For the platform architecture, workflows, deployment guides, and user documentation, start with the FLIP documentation.
This developer quickstart starts the Central Hub and the shipped GSTT and KCH example Trust nodes on one Linux host. It uses the development AWS resources and XNAT artifacts maintained for authorised FLIP developers. If you do not have access to those resources, begin with the Central Hub deployment guide to create your own environment.
- Docker Engine with Compose and Swarm mode, plus the NVIDIA Container Toolkit on GPU hosts
- GNU Make,
jq, the AWS CLI, and uv - An AWS SSO profile with access to the development Cognito, S3, and SES resources
- GitHub Container Registry access for the published FLIP images
The complete tool list and environment-variable checklist are in CONTRIBUTING.md.
cp .env.development.example .env.development
# Fill the required AWS, Cognito, SES, database, encryption, and S3 values.
aws sso login --profile <your-profile>
docker login ghcr.io
# Required once per Docker host.
docker swarm init
# Provision the two local NVFLARE networks used by the example Trusts. `make up` does not do
# this for you, and the FL containers cannot start without it.
make -C fl-services/nvflare provision-2-nets
# Pull the published service images, start the hub, register GSTT and KCH,
# then start both Trust and XNAT stacks.
make upIf Swarm is already active, docker swarm init reports that and can be skipped. Open https://localhost for the UI
and http://localhost:8080/docs for the Central Hub API documentation.
To run the scripted project lifecycle against the running stack:
make e2e_smokeThis creates a project, submits a cohort query, waits for imaging import, runs federated training, and downloads the result. It is intentionally not part of CI and can take several minutes.
Stop the local platform with:
make downThe default backend is NVFLARE. To run the same topology with Flower, provision its per-net credentials instead —
once per network, and again before make up:
make -C fl-services/flower provision NET_NUMBER=1
make -C fl-services/flower provision NET_NUMBER=2
make up FL_BACKEND=flowerSee the Flower service guide for the full workflow. Use make up BUILD=true when
dependency or Dockerfile changes require locally rebuilt images; ordinary source edits are bind-mounted for live
reload. More detail is in Running the stack.
| Goal | Guide |
|---|---|
| Understand the platform and its security model | ReadTheDocs |
| Set up a development environment or contribute | CONTRIBUTING.md |
| Run or adapt a federated-learning example | FL tutorials |
| Build a FLIP application | Working with FLIP apps |
| Deploy the Central Hub on AWS | Central Hub deployment |
| Deploy a Trust on premises | Local provider |
| Deploy a Trust on Kubernetes | Kubernetes provider |
| Operate Trust-side services | Trust services |
| Debug a service in VS Code | DEBUG.md |
| Debug or test a particular service | That service's README and Makefile |
FLIP is maintained as one monorepo. Each major area owns its detailed setup and operational documentation.
| Directory | Responsibility |
|---|---|
flip-api/ |
Central Hub FastAPI service, database, scheduling, and project lifecycle |
flip-ui/ |
Vue 3 web application |
trust/ |
Trust gateway, data and imaging APIs, and local OMOP/PACS/XNAT services |
flip-utils/ |
Shared, pip-installable flip Python library |
fl-services/ |
NVFLARE and Flower network services, images, and provisioning |
fl-apps/ |
Backend-specific application templates bundled by the Central Hub |
fl-tutorials/ |
Worked federated-learning applications and local runners |
deploy/ |
Compose configuration and AWS, on-premises, and Kubernetes providers |
docs/ |
Sphinx source published on ReadTheDocs |
scripts/ |
Repository-wide development and deployment helpers |
Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request; commits must include a DCO sign-off. Use GitHub Issues for bugs, feature proposals, and documentation gaps.
For security concerns, follow SECURITY.md rather than opening a public issue.
FLIP is licensed under the Apache License 2.0.