├── openfl-tutorials ├── __init__.py └── experimental │ ├── workflow │ ├── CrowdGuard │ │ ├── .gitignore │ │ ├── director │ │ │ ├── start_director.sh │ │ │ └── director_config.yaml │ │ ├── Bangalore │ │ │ ├── start_envoy.sh │ │ │ └── Bangalore_config.yaml │ │ ├── Chandler │ │ │ ├── start_envoy.sh │ │ │ └── Chandler_config.yaml │ │ ├── Detroit │ │ │ ├── start_envoy.sh │ │ │ └── Detroit_config.yaml │ │ └── Amsterdam │ │ │ ├── start_envoy.sh │ │ │ └── Amsterdam_config.yaml │ ├── SecAgg │ │ ├── director │ │ │ ├── start_director.sh │ │ │ └── director_config.yaml │ │ ├── Bengaluru │ │ │ ├── start_envoy.sh │ │ │ └── Bengaluru_config.yaml │ │ ├── Portland │ │ │ ├── start_envoy.sh │ │ │ └── Portland_config.yaml │ │ └── workspace │ │ │ └── mermaid-flow.png │ ├── FederatedEvaluation │ │ ├── director │ │ │ ├── start_director.sh │ │ │ └── director_config.yaml │ │ ├── Bengaluru │ │ │ ├── start_envoy.sh │ │ │ ├── Bengaluru_config.yaml │ │ │ └── private_attributes.py │ │ └── Portland │ │ │ ├── start_envoy.sh │ │ │ ├── Portland_config.yaml │ │ │ └── private_attributes.py │ ├── FederatedRuntime │ │ ├── 101_MNIST │ │ │ ├── director │ │ │ │ ├── start_director.sh │ │ │ │ └── director_config.yaml │ │ │ ├── Seattle │ │ │ │ ├── start_envoy.sh │ │ │ │ └── Seattle_config.yaml │ │ │ └── Portland │ │ │ │ ├── start_envoy.sh │ │ │ │ └── Portland_config.yaml │ │ └── 301_MNIST_Watermarking │ │ │ ├── director │ │ │ ├── start_director.sh │ │ │ └── director_config.yaml │ │ │ ├── Bangalore │ │ │ ├── start_envoy.sh │ │ │ ├── requirements.txt │ │ │ └── Bangalore_config.yaml │ │ │ └── Chandler │ │ │ ├── start_envoy.sh │ │ │ ├── requirements.txt │ │ │ └── Chandler_config.yaml │ ├── Global_DP │ │ ├── test_config.yml │ │ └── requirements_global_dp.txt │ ├── Privacy_Meter │ │ ├── Results │ │ │ ├── result_adam │ │ │ │ ├── Portland_auc.png │ │ │ │ ├── Seattle_auc.png │ │ │ │ ├── Seattle_roc_at_30.png │ │ │ │ ├── Portland_roc_at_30.png │ │ │ │ ├── Portland_tpr_at_0.1.png │ │ │ │ ├── Portland_tpr_at_0.2.png │ │ │ │ ├── Portland_tpr_at_0.3.png │ │ │ │ ├── Seattle_tpr_at_0.1.png │ │ │ │ ├── Seattle_tpr_at_0.2.png │ │ │ │ └── Seattle_tpr_at_0.3.png │ │ │ └── result_sgd │ │ │ │ ├── Portland_auc.png │ │ │ │ ├── Seattle_auc.png │ │ │ │ ├── Portland_roc_at_30.png │ │ │ │ ├── Seattle_roc_at_30.png │ │ │ │ ├── Seattle_tpr_at_0.1.png │ │ │ │ ├── Seattle_tpr_at_0.2.png │ │ │ │ ├── Seattle_tpr_at_0.3.png │ │ │ │ ├── Portland_tpr_at_0.1.png │ │ │ │ ├── Portland_tpr_at_0.2.png │ │ │ │ └── Portland_tpr_at_0.3.png │ │ └── requirements_privacy_meter.txt │ └── workflow_interface_requirements.txt │ └── pretrainedmodels │ └── cnn_mnist.pth ├── openfl-workspace ├── no-op │ ├── .workspace │ ├── requirements.txt │ ├── plan │ │ ├── cols.yaml │ │ ├── data.yaml │ │ └── plan.yaml │ └── src │ │ └── data_loader.py ├── flower-app-pytorch │ ├── .workspace │ ├── requirements.txt │ ├── src │ │ └── app-pytorch │ │ │ ├── app_pytorch │ │ │ └── __init__.py │ │ │ └── pyproject.toml │ └── plan │ │ ├── data.yaml │ │ └── cols.yaml ├── federated_analytics │ ├── histogram │ │ ├── requirements.txt │ │ ├── .workspace │ │ ├── plan │ │ │ ├── defaults │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ │ └── src │ │ │ └── __init__.py │ └── smokers_health │ │ ├── .workspace │ │ ├── requirements.txt │ │ └── plan │ │ ├── cols.yaml │ │ └── data.yaml ├── gandlf_seg_test │ ├── requirements.txt │ ├── .workspace │ └── plan │ │ ├── defaults │ │ ├── cols.yaml │ │ └── data.yaml ├── torch │ ├── mnist │ │ ├── plan │ │ │ ├── defaults │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ │ ├── .workspace │ │ ├── requirements.txt │ │ └── src │ │ │ └── __init__.py │ ├── template │ │ ├── .workspace │ │ ├── plan │ │ │ ├── defaults │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ │ ├── src │ │ │ └── __init__.py │ │ └── requirements.txt │ ├── histology │ │ ├── .workspace │ │ ├── requirements.txt │ │ ├── src │ │ │ └── __init__.py │ │ └── plan │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ ├── histology_s3 │ │ ├── .workspace │ │ ├── requirements.txt │ │ ├── src │ │ │ └── __init__.py │ │ ├── plan │ │ │ ├── data.yaml │ │ │ └── cols.yaml │ │ └── data │ │ │ ├── collaborator2 │ │ │ └── datasources.json │ │ │ └── collaborator1 │ │ │ └── datasources.json │ ├── histology_fedcurv │ │ ├── .workspace │ │ ├── requirements.txt │ │ ├── src │ │ │ └── __init__.py │ │ └── plan │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ ├── mnist_eden_compression │ │ ├── .workspace │ │ ├── plan │ │ │ ├── defaults │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ │ ├── requirements.txt │ │ └── src │ │ │ └── __init__.py │ ├── mnist_straggler_check │ │ ├── .workspace │ │ ├── plan │ │ │ ├── defaults │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ │ ├── src │ │ │ └── __init__.py │ │ └── requirements.txt │ └── mnist_fed_eval │ │ └── requirements.txt ├── workspace │ ├── .workspace │ ├── plan │ │ ├── defaults │ │ │ ├── data_loader.yaml │ │ │ ├── task_runner.yaml │ │ │ ├── compression_pipeline.yaml │ │ │ ├── straggler_handling_policy.yaml │ │ │ ├── collaborator.yaml │ │ │ ├── connector_flower.yaml │ │ │ ├── aggregator.yaml │ │ │ ├── tasks_flower.yaml │ │ │ ├── assigner.yaml │ │ │ ├── tasks_torch.yaml │ │ │ ├── network.yaml │ │ │ ├── tasks_xgb.yaml │ │ │ ├── tasks_keras.yaml │ │ │ └── tasks_fast_estimator.yaml │ │ └── plans │ │ │ └── default │ │ │ ├── base_plan_interactive_api.yaml │ │ │ └── plan.yaml │ └── __init__.py ├── xgb_higgs │ ├── .workspace │ ├── requirements.txt │ ├── src │ │ └── __init__.py │ └── plan │ │ ├── cols.yaml │ │ └── data.yaml ├── keras │ ├── 2dunet │ │ ├── .workspace │ │ ├── plan │ │ │ ├── defaults │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ │ ├── requirements.txt │ │ └── src │ │ │ └── __init__.py │ ├── mnist │ │ ├── .workspace │ │ ├── plan │ │ │ ├── defaults │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ │ ├── requirements.txt │ │ └── src │ │ │ └── __init__.py │ ├── hippmapp3r │ │ ├── .workspace │ │ ├── plan │ │ │ ├── defaults │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ │ ├── src │ │ │ └── __init__.py │ │ └── requirements.txt │ ├── jax │ │ └── mnist │ │ │ ├── .workspace │ │ │ ├── plan │ │ │ ├── defaults │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ │ │ ├── requirements.txt │ │ │ └── src │ │ │ └── __init__.py │ ├── torch │ │ └── mnist │ │ │ ├── .workspace │ │ │ ├── plan │ │ │ ├── defaults │ │ │ ├── cols.yaml │ │ │ └── data.yaml │ │ │ ├── requirements.txt │ │ │ └── src │ │ │ └── __init__.py │ └── tensorflow │ │ └── mnist │ │ ├── .workspace │ │ ├── plan │ │ ├── defaults │ │ ├── cols.yaml │ │ └── data.yaml │ │ ├── requirements.txt │ │ └── src │ │ └── __init__.py ├── experimental │ └── workflow │ │ └── FederatedRuntime │ │ └── template_workspace │ │ ├── .workspace │ │ ├── requirements.txt │ │ ├── src │ │ └── __init__.py │ │ └── plan │ │ └── plan.yaml └── __init__.py ├── .dockerignore ├── .gitattributes ├── linters-requirements.txt ├── docs ├── .gitignore ├── images │ ├── sgx.png │ ├── FedEval.png │ ├── ct_vs_fl.png │ ├── fx_help.png │ ├── graphene.png │ ├── CI_details.png │ ├── diagram_fl.png │ ├── trusted_fl.png │ ├── docker_design.png │ ├── openfl_flow.png │ ├── pki_creation.png │ ├── why_intel_fl.png │ ├── diagram_fl_new.png │ ├── hls_fl_graphic.png │ ├── timeout_design.png │ └── workflow_interface.png ├── _templates │ ├── layout.html │ ├── custom-exception-template.rst │ ├── custom-function-template.rst │ └── custom-class-template.rst ├── _static │ ├── favicon.png │ └── openfl_logo.png ├── README.md ├── reference │ ├── fx.pki.rst │ ├── fx.plan.rst │ ├── fx.model.rst │ ├── fx.aggregator.rst │ ├── fx.workspace.rst │ ├── fx.collaborator.rst │ ├── fx.experimental.rst │ ├── openfl.transport.rst │ ├── openfl.callbacks.rst │ ├── openfl.protocols.rst │ ├── openfl.databases.rst │ ├── openfl.federated.rst │ ├── openfl.cryptography.rst │ ├── openfl.plugins.rst │ ├── openfl.component.rst │ ├── openfl.experimental.rst │ ├── openfl.pipelines.rst │ ├── openfl.interface.rst │ └── openfl.utilities.rst ├── about │ ├── license.rst │ ├── features_index │ │ └── pynative.rst │ └── notices_and_disclaimers.rst ├── developer_guide │ ├── running_the_federation.singularity.rst │ ├── running_the_federation.tutorial.rst │ ├── utilities.rst │ ├── openfl_structure.rst │ └── manual.rst ├── requirements.txt ├── openfl.rst ├── structurizer_dsl │ └── README.md ├── fx.rst ├── deprecation.md ├── Makefile └── mermaid │ ├── envoy_representation_and_RPCs.mmd │ ├── CSR_signing.mmd │ └── pki_scheme.mmd ├── .coverage ├── .trivyignore ├── openfl-docker ├── __init__.py ├── README.md └── Dockerfile.workspace ├── openfl ├── plugins │ ├── __init__.py │ └── frameworks_adapters │ │ └── __init__.py ├── utilities │ ├── ca │ │ └── __init__.py │ ├── optimizers │ │ ├── __init__.py │ │ ├── keras │ │ │ └── __init__.py │ │ ├── numpy │ │ │ └── __init__.py │ │ └── torch │ │ │ └── __init__.py │ ├── fedcurv │ │ ├── __init__.py │ │ └── torch │ │ │ └── __init__.py │ ├── __init__.py │ ├── secagg │ │ └── __init__.py │ ├── data_splitters │ │ ├── __init__.py │ │ └── data_splitter.py │ └── path_check.py ├── __init__.py ├── interface │ ├── __init__.py │ └── aggregation_functions │ │ ├── experimental │ │ └── __init__.py │ │ ├── core │ │ └── __init__.py │ │ ├── __init__.py │ │ └── fedcurv_weighted_average.py ├── protocols │ ├── __init__.py │ ├── README.md │ └── base.proto ├── cryptography │ └── __init__.py ├── experimental │ ├── __init__.py │ └── workflow │ │ ├── __init__.py │ │ ├── protocols │ │ ├── __init__.py │ │ └── README.md │ │ ├── interface │ │ ├── cli │ │ │ ├── __init__.py │ │ │ └── experimental.py │ │ └── __init__.py │ │ ├── component │ │ ├── envoy │ │ │ └── __init__.py │ │ ├── director │ │ │ └── __init__.py │ │ ├── aggregator │ │ │ └── __init__.py │ │ ├── collaborator │ │ │ └── __init__.py │ │ └── __init__.py │ │ ├── federated │ │ ├── __init__.py │ │ └── plan │ │ │ └── __init__.py │ │ ├── placement │ │ └── __init__.py │ │ ├── transport │ │ ├── grpc │ │ │ ├── exceptions.py │ │ │ ├── grpc_channel_options.py │ │ │ └── __init__.py │ │ └── __init__.py │ │ ├── notebooktools │ │ └── __init__.py │ │ ├── runtime │ │ └── __init__.py │ │ └── utilities │ │ ├── __init__.py │ │ └── resources.py ├── federated │ ├── plan │ │ └── __init__.py │ ├── data │ │ ├── sources │ │ │ ├── __init__.py │ │ │ └── torch │ │ │ │ ├── __init__.py │ │ │ │ ├── verifiable_map_style_image_folder.py │ │ │ │ └── image_folder.py │ │ └── __init__.py │ └── task │ │ └── __init__.py ├── __version__.py ├── component │ ├── collaborator │ │ └── __init__.py │ ├── connector │ │ └── __init__.py │ ├── aggregator │ │ └── __init__.py │ ├── assigner │ │ └── __init__.py │ └── __init__.py ├── databases │ ├── utilities │ │ └── __init__.py │ └── __init__.py ├── transport │ ├── __init__.py │ ├── grpc │ │ ├── __init__.py │ │ └── interop │ │ │ ├── __init__.py │ │ │ └── flower │ │ │ └── __init__.py │ └── rest │ │ └── __init__.py ├── callbacks │ └── __init__.py └── pipelines │ ├── no_compression_pipeline.py │ └── __init__.py ├── MANIFEST.in ├── ROADMAP.md ├── tests ├── __init__.py ├── github │ ├── __init__.py │ └── experimental │ │ └── workflow │ │ ├── FederatedRuntime │ │ ├── testcase_internalloop │ │ │ ├── envoy_one │ │ │ │ ├── envoy_config.yaml │ │ │ │ ├── start_envoy.sh │ │ │ │ └── requirements.txt │ │ │ ├── envoy_two │ │ │ │ ├── envoy_config.yaml │ │ │ │ ├── start_envoy.sh │ │ │ │ └── requirements.txt │ │ │ └── director │ │ │ │ ├── start_director.sh │ │ │ │ └── director_config.yaml │ │ ├── testcase_include_exclude │ │ │ ├── envoy_one │ │ │ │ ├── envoy_config.yaml │ │ │ │ ├── start_envoy.sh │ │ │ │ └── requirements.txt │ │ │ ├── envoy_two │ │ │ │ ├── envoy_config.yaml │ │ │ │ ├── start_envoy.sh │ │ │ │ └── requirements.txt │ │ │ └── director │ │ │ │ ├── start_director.sh │ │ │ │ └── director_config.yaml │ │ ├── testcase_datastore_cli │ │ │ ├── director │ │ │ │ ├── start_director.sh │ │ │ │ └── director_config.yaml │ │ │ ├── envoy_one │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── requirements.txt │ │ │ │ └── envoy_config.yaml │ │ │ └── envoy_two │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── requirements.txt │ │ │ │ └── envoy_config.yaml │ │ ├── testcase_reference │ │ │ ├── director │ │ │ │ ├── start_director.sh │ │ │ │ └── director_config.yaml │ │ │ ├── envoy_one │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── private_attributes │ │ │ │ │ └── collaborator_private_attrs.py │ │ │ │ ├── envoy_config.yaml │ │ │ │ └── requirements.txt │ │ │ └── envoy_two │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── private_attributes │ │ │ │ └── collaborator_private_attrs.py │ │ │ │ ├── envoy_config.yaml │ │ │ │ └── requirements.txt │ │ ├── testcase_reference_with_include_exclude │ │ │ ├── envoy_one │ │ │ │ ├── envoy_config.yaml │ │ │ │ ├── start_envoy.sh │ │ │ │ └── requirements.txt │ │ │ ├── envoy_two │ │ │ │ ├── envoy_config.yaml │ │ │ │ ├── start_envoy.sh │ │ │ │ └── requirements.txt │ │ │ └── director │ │ │ │ ├── start_director.sh │ │ │ │ └── director_config.yaml │ │ ├── testcase_private_attributes │ │ │ ├── director │ │ │ │ ├── start_director.sh │ │ │ │ ├── private_attributes │ │ │ │ │ └── aggregator_private_attrs.py │ │ │ │ └── director_config.yaml │ │ │ ├── envoy_one │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── envoy_config.yaml │ │ │ │ ├── requirements.txt │ │ │ │ └── private_attributes │ │ │ │ │ └── collaborator_private_attrs.py │ │ │ └── envoy_two │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── envoy_config.yaml │ │ │ │ ├── requirements.txt │ │ │ │ └── private_attributes │ │ │ │ └── collaborator_private_attrs.py │ │ ├── testcase_subset_of_collaborators │ │ │ ├── director │ │ │ │ ├── start_director.sh │ │ │ │ └── director_config.yaml │ │ │ ├── envoy_four │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── private_attributes │ │ │ │ │ └── collaborator_private_attrs.py │ │ │ │ ├── envoy_config.yaml │ │ │ │ └── requirements.txt │ │ │ ├── envoy_one │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── private_attributes │ │ │ │ │ └── collaborator_private_attrs.py │ │ │ │ ├── envoy_config.yaml │ │ │ │ └── requirements.txt │ │ │ ├── envoy_three │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── private_attributes │ │ │ │ │ └── collaborator_private_attrs.py │ │ │ │ ├── envoy_config.yaml │ │ │ │ └── requirements.txt │ │ │ └── envoy_two │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── private_attributes │ │ │ │ └── collaborator_private_attrs.py │ │ │ │ ├── envoy_config.yaml │ │ │ │ └── requirements.txt │ │ ├── testcase_private_attributes_initialization_with_both_options │ │ │ ├── director │ │ │ │ ├── start_director.sh │ │ │ │ ├── director_config.yaml │ │ │ │ └── private_attributes │ │ │ │ │ └── aggregator_private_attrs.py │ │ │ ├── envoy_one │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── requirements.txt │ │ │ │ ├── envoy_config.yaml │ │ │ │ └── private_attributes │ │ │ │ │ └── collaborator_private_attrs.py │ │ │ └── envoy_two │ │ │ │ ├── start_envoy.sh │ │ │ │ ├── requirements.txt │ │ │ │ ├── envoy_config.yaml │ │ │ │ └── private_attributes │ │ │ │ └── collaborator_private_attrs.py │ │ └── testcase_private_attributes_initialization_without_callable │ │ │ ├── director │ │ │ ├── start_director.sh │ │ │ ├── private_attributes │ │ │ │ └── aggregator_private_attrs.py │ │ │ └── director_config.yaml │ │ │ ├── envoy_one │ │ │ ├── start_envoy.sh │ │ │ ├── envoy_config.yaml │ │ │ ├── private_attributes │ │ │ │ └── collaborator_private_attrs.py │ │ │ └── requirements.txt │ │ │ └── envoy_two │ │ │ ├── start_envoy.sh │ │ │ ├── envoy_config.yaml │ │ │ ├── private_attributes │ │ │ └── collaborator_private_attrs.py │ │ │ └── requirements.txt │ │ └── LocalRuntime │ │ └── requirements_experimental_localruntime_tests.txt ├── openfl │ ├── __init__.py │ ├── component │ │ ├── __init__.py │ │ ├── aggregator │ │ │ └── __init__.py │ │ ├── assigner │ │ │ └── __init__.py │ │ └── collaborator │ │ │ └── __init__.py │ ├── databases │ │ └── __init__.py │ ├── pipelines │ │ └── __init__.py │ ├── transport │ │ └── rest │ │ │ ├── __init__.py │ │ │ └── conftest.py │ ├── utilities │ │ ├── __init__.py │ │ ├── optimizers │ │ │ └── __init__.py │ │ └── test_path_check.py │ └── interface │ │ ├── plan │ │ ├── cols.yaml │ │ ├── data.yaml │ │ └── plan.yaml │ │ └── test_model_api.py └── end_to_end │ └── pytest.ini ├── CONTRIBUTING.md ├── scripts ├── build_wheel.sh ├── format.sh └── lint.sh ├── TSC.md ├── .gitignore ├── test-requirements.txt ├── SECURITY.md ├── .github ├── actions │ ├── trufflehog_logs_scan │ │ └── action.yml │ ├── tr_pre_test_run │ │ └── action.yml │ └── wf_pre_test_run │ │ └── action.yml ├── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── pull_request_template.md ├── dependabot.yml └── workflows │ ├── lint.yml │ ├── pytest_coverage.yml │ ├── taskrunner.yml │ └── openfl-docker-build.yml ├── CITATION ├── .readthedocs.yaml └── .pre-commit-config.yaml /openfl-tutorials/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /openfl-workspace/no-op/.workspace: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | *.egg-info 2 | build 3 | venv -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.ipynb linguist-vendored -------------------------------------------------------------------------------- /openfl-workspace/no-op/requirements.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /openfl-workspace/flower-app-pytorch/.workspace: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /linters-requirements.txt: -------------------------------------------------------------------------------- 1 | pre-commit 2 | ruff==0.11.8 -------------------------------------------------------------------------------- /openfl-workspace/federated_analytics/histogram/requirements.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /openfl-workspace/federated_analytics/smokers_health/.workspace: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | /_build 2 | **/.ipynb_checkpoints 3 | _autosummary -------------------------------------------------------------------------------- /openfl-workspace/federated_analytics/smokers_health/requirements.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /openfl-workspace/gandlf_seg_test/requirements.txt: -------------------------------------------------------------------------------- 1 | onnx==1.17.0 2 | -------------------------------------------------------------------------------- /openfl-workspace/flower-app-pytorch/requirements.txt: -------------------------------------------------------------------------------- 1 | ./src/app-pytorch -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults -------------------------------------------------------------------------------- /openfl-workspace/torch/template/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | -------------------------------------------------------------------------------- /openfl-workspace/workspace/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/xgb_higgs/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/2dunet/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/mnist/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/torch/template/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults -------------------------------------------------------------------------------- /openfl-workspace/gandlf_seg_test/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/2dunet/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/hippmapp3r/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/jax/mnist/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/mnist/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/mnist/requirements.txt: -------------------------------------------------------------------------------- 1 | keras==3.10.0 2 | tensorflow==2.18.0 -------------------------------------------------------------------------------- /openfl-workspace/keras/torch/mnist/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_s3/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/CrowdGuard/.gitignore: -------------------------------------------------------------------------------- 1 | .metaflow/ 2 | data 3 | -------------------------------------------------------------------------------- /openfl-workspace/gandlf_seg_test/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/hippmapp3r/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/jax/mnist/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/tensorflow/mnist/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/torch/mnist/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_fedcurv/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/xgb_higgs/requirements.txt: -------------------------------------------------------------------------------- 1 | modin[all] 2 | scikit-learn 3 | xgboost 4 | -------------------------------------------------------------------------------- /.coverage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/.coverage -------------------------------------------------------------------------------- /.trivyignore: -------------------------------------------------------------------------------- 1 | # Accept the risk 2 | CVE-2025-0395 3 | CVE-2024-3596 4 | CVE-2024-12133 5 | -------------------------------------------------------------------------------- /openfl-workspace/federated_analytics/histogram/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/tensorflow/mnist/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/tensorflow/mnist/requirements.txt: -------------------------------------------------------------------------------- 1 | keras==3.10.0 2 | tensorflow==2.18.0 -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_eden_compression/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_straggler_check/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_eden_compression/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_straggler_check/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/federated_analytics/histogram/plan/defaults: -------------------------------------------------------------------------------- 1 | ../../workspace/plan/defaults 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/jax/mnist/requirements.txt: -------------------------------------------------------------------------------- 1 | jax==0.5.0 2 | keras==3.10.0 3 | tensorflow==2.18.0 -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/data_loader.yaml: -------------------------------------------------------------------------------- 1 | template: openfl.federated.DataLoader 2 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology/requirements.txt: -------------------------------------------------------------------------------- 1 | setuptools>=65.5.1 2 | torch==2.7.0 3 | torchvision==0.22.0 -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist/requirements.txt: -------------------------------------------------------------------------------- 1 | setuptools>=65.5.1 2 | torch==2.7.0 3 | torchvision==0.22.0 -------------------------------------------------------------------------------- /docs/images/sgx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/sgx.png -------------------------------------------------------------------------------- /openfl-docker/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | -------------------------------------------------------------------------------- /openfl/plugins/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | -------------------------------------------------------------------------------- /docs/_templates/layout.html: -------------------------------------------------------------------------------- 1 | {% extends "!layout.html" %} 2 | {% set css_files = css_files + ["_static/style.css"] %} -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_fedcurv/requirements.txt: -------------------------------------------------------------------------------- 1 | setuptools>=65.5.1 2 | torch==2.7.0 3 | torchvision==0.22.0 -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/task_runner.yaml: -------------------------------------------------------------------------------- 1 | template: openfl.federated.task_runner.CoreTaskRunner 2 | -------------------------------------------------------------------------------- /docs/_static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/_static/favicon.png -------------------------------------------------------------------------------- /docs/images/FedEval.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/FedEval.png -------------------------------------------------------------------------------- /docs/images/ct_vs_fl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/ct_vs_fl.png -------------------------------------------------------------------------------- /docs/images/fx_help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/fx_help.png -------------------------------------------------------------------------------- /docs/images/graphene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/graphene.png -------------------------------------------------------------------------------- /openfl-workspace/experimental/workflow/FederatedRuntime/template_workspace/.workspace: -------------------------------------------------------------------------------- 1 | current_plan_name: default 2 | 3 | -------------------------------------------------------------------------------- /openfl-workspace/flower-app-pytorch/src/app-pytorch/app_pytorch/__init__.py: -------------------------------------------------------------------------------- 1 | """app-pytorch: A Flower / PyTorch app.""" 2 | -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/compression_pipeline.yaml: -------------------------------------------------------------------------------- 1 | template: openfl.pipelines.NoCompressionPipeline 2 | -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/straggler_handling_policy.yaml: -------------------------------------------------------------------------------- 1 | template : openfl.component.WaitForAllPolicy 2 | -------------------------------------------------------------------------------- /docs/images/CI_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/CI_details.png -------------------------------------------------------------------------------- /docs/images/diagram_fl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/diagram_fl.png -------------------------------------------------------------------------------- /docs/images/trusted_fl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/trusted_fl.png -------------------------------------------------------------------------------- /openfl-workspace/xgb_higgs/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | recursive-include openfl-workspace * 2 | recursive-include openfl-docker * 3 | recursive-include openfl-tutorials * 4 | -------------------------------------------------------------------------------- /ROADMAP.md: -------------------------------------------------------------------------------- 1 | # OpenFL Project Roadmap 2 | For more information, see [roadmap](https://openfl.readthedocs.io/en/latest/roadmap.html). -------------------------------------------------------------------------------- /docs/_static/openfl_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/_static/openfl_logo.png -------------------------------------------------------------------------------- /docs/images/docker_design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/docker_design.png -------------------------------------------------------------------------------- /docs/images/openfl_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/openfl_flow.png -------------------------------------------------------------------------------- /docs/images/pki_creation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/pki_creation.png -------------------------------------------------------------------------------- /docs/images/why_intel_fl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/why_intel_fl.png -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_s3/requirements.txt: -------------------------------------------------------------------------------- 1 | setuptools>=65.5.1 2 | torch==2.7.0 3 | torchvision==0.22.0 4 | boto3>=1.37.19 -------------------------------------------------------------------------------- /openfl-workspace/torch/template/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | -------------------------------------------------------------------------------- /openfl/plugins/frameworks_adapters/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """Tests package.""" 4 | -------------------------------------------------------------------------------- /docs/images/diagram_fl_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/diagram_fl_new.png -------------------------------------------------------------------------------- /docs/images/hls_fl_graphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/hls_fl_graphic.png -------------------------------------------------------------------------------- /docs/images/timeout_design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/timeout_design.png -------------------------------------------------------------------------------- /docs/images/workflow_interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/docs/images/workflow_interface.png -------------------------------------------------------------------------------- /tests/github/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """Tests package.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/no-op/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /tests/openfl/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """tests.openfl package.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/keras/torch/mnist/requirements.txt: -------------------------------------------------------------------------------- 1 | keras==3.10.0 2 | torch==2.7.0 3 | torch-xla==2.6.0 4 | torchvision==0.22.0 5 | tensorflow==2.18.0 -------------------------------------------------------------------------------- /openfl/utilities/ca/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """CA package.""" 6 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to OpenFL 2 | For more information, see [Contributing to OpenFL](https://openfl.readthedocs.io/en/latest/contributing.html). -------------------------------------------------------------------------------- /openfl-workspace/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """openfl-workspace package.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/torch/template/requirements.txt: -------------------------------------------------------------------------------- 1 | # Set your workspace's requirements here 2 | setuptools>=65.5.1 3 | torch==2.7.0 4 | torchvision==0.22.0 5 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Update documentation 2 | For more information, refer [here](https://openfl.readthedocs.io/en/latest/contributing.html#update-documentation). 3 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/CrowdGuard/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/SecAgg/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /openfl/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.__version__ import __version__ 6 | -------------------------------------------------------------------------------- /openfl/interface/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.interface package.""" 6 | -------------------------------------------------------------------------------- /openfl/protocols/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.protocols module.""" 6 | -------------------------------------------------------------------------------- /docs/reference/fx.pki.rst: -------------------------------------------------------------------------------- 1 | ``fx pki`` command 2 | ==================== 3 | 4 | .. click:: openfl.interface.pki:pki 5 | :prog: fx pki 6 | :nested: full 7 | -------------------------------------------------------------------------------- /openfl/cryptography/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.cryptography package.""" 6 | -------------------------------------------------------------------------------- /openfl/experimental/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl experimental package.""" 6 | -------------------------------------------------------------------------------- /openfl/utilities/optimizers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """Optimizers package.""" 6 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_internalloop/envoy_one/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_internalloop/envoy_two/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 -------------------------------------------------------------------------------- /tests/openfl/component/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """tests.openfl.component package.""" 4 | -------------------------------------------------------------------------------- /tests/openfl/databases/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """tests.openfl.databases package.""" 4 | -------------------------------------------------------------------------------- /tests/openfl/pipelines/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """tests.openfl.pipelines package.""" 4 | -------------------------------------------------------------------------------- /tests/openfl/transport/rest/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """Transport tests package.""" 4 | -------------------------------------------------------------------------------- /tests/openfl/utilities/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """tests.openfl.utilities package.""" 4 | -------------------------------------------------------------------------------- /docs/reference/fx.plan.rst: -------------------------------------------------------------------------------- 1 | ``fx plan`` command 2 | ==================== 3 | 4 | .. click:: openfl.interface.plan:plan 5 | :prog: fx plan 6 | :nested: full 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedEvaluation/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /docs/reference/fx.model.rst: -------------------------------------------------------------------------------- 1 | ``fx model`` command 2 | ==================== 3 | 4 | .. click:: openfl.interface.model:model 5 | :prog: fx model 6 | :nested: full 7 | -------------------------------------------------------------------------------- /openfl-workspace/experimental/workflow/FederatedRuntime/template_workspace/requirements.txt: -------------------------------------------------------------------------------- 1 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 2 | -------------------------------------------------------------------------------- /openfl/federated/plan/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.federated.plan.plan import Plan 6 | -------------------------------------------------------------------------------- /openfl/utilities/fedcurv/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.utilities.fedcurv package.""" 6 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_include_exclude/envoy_one/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_include_exclude/envoy_two/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/101_MNIST/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /openfl-workspace/experimental/workflow/FederatedRuntime/template_workspace/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/SecAgg/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds -------------------------------------------------------------------------------- /openfl-workspace/keras/2dunet/requirements.txt: -------------------------------------------------------------------------------- 1 | keras==3.10.0 2 | nibabel 3 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 4 | tensorflow==2.18.0 5 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl experimental workflow package.""" 6 | -------------------------------------------------------------------------------- /openfl/federated/data/sources/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """This package contains utilities for verifying datasets.""" 4 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_datastore_cli/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_internalloop/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference_with_include_exclude/envoy_one/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 -------------------------------------------------------------------------------- /tests/openfl/component/aggregator/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """tests.openfl.component.aggregator package.""" 4 | -------------------------------------------------------------------------------- /tests/openfl/component/assigner/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """tests.openfl.component.assigner package.""" 4 | -------------------------------------------------------------------------------- /tests/openfl/utilities/optimizers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """tests.openfl.utilities.optimizers package.""" 4 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/301_MNIST_Watermarking/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /openfl-workspace/no-op/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | # collaborator_name,data_directory_path 5 | one,1 6 | 7 | 8 | -------------------------------------------------------------------------------- /openfl/__version__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl version information.""" 6 | 7 | __version__ = "1.9.0.dev" 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_include_exclude/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference_with_include_exclude/envoy_two/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | -------------------------------------------------------------------------------- /tests/openfl/component/collaborator/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """tests.openfl.component.collaborator package.""" 4 | -------------------------------------------------------------------------------- /docs/reference/fx.aggregator.rst: -------------------------------------------------------------------------------- 1 | ``fx aggregator`` command 2 | ==================== 3 | 4 | .. click:: openfl.interface.aggregator:aggregator 5 | :prog: fx aggregator 6 | :nested: full 7 | -------------------------------------------------------------------------------- /docs/reference/fx.workspace.rst: -------------------------------------------------------------------------------- 1 | ``fx workspace`` command 2 | ==================== 3 | 4 | .. click:: openfl.interface.workspace:workspace 5 | :prog: fx workspace 6 | :nested: full 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/pretrainedmodels/cnn_mnist.pth: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/pretrainedmodels/cnn_mnist.pth -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/CrowdGuard/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds 5 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedEvaluation/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds -------------------------------------------------------------------------------- /openfl-workspace/workspace/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/protocols/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.protocols module.""" 6 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/CrowdGuard/Bangalore/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/CrowdGuard/Chandler/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/CrowdGuard/Detroit/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/101_MNIST/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Global_DP/test_config.yml: -------------------------------------------------------------------------------- 1 | differential_privacy: 2 | noise_multiplier: 0.1 3 | clip_norm: 1.0 4 | clip_frequency: 1 5 | sample_rate: 0.5 6 | delta: 0.00001 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/SecAgg/Bengaluru/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/SecAgg/Portland/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-workspace/keras/mnist/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl/federated/data/sources/torch/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | """This package contains utilities for PyTorch verifying datasets.""" 5 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference_with_include_exclude/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /docs/reference/fx.collaborator.rst: -------------------------------------------------------------------------------- 1 | ``fx collaborator`` command 2 | ==================== 3 | 4 | .. click:: openfl.interface.collaborator:collaborator 5 | :prog: fx collaborator 6 | :nested: full 7 | -------------------------------------------------------------------------------- /docs/reference/fx.experimental.rst: -------------------------------------------------------------------------------- 1 | ``fx experimental`` command 2 | ==================== 3 | 4 | .. click:: openfl.interface.experimental:experimental 5 | :prog: fx experimental 6 | :nested: full 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/CrowdGuard/Amsterdam/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-workspace/keras/2dunet/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/keras/hippmapp3r/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/keras/jax/mnist/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_s3/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_fed_eval/requirements.txt: -------------------------------------------------------------------------------- 1 | setuptools>=65.5.1 2 | tensorboard 3 | torch==2.7.0 4 | torchvision==0.22.0 5 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability -------------------------------------------------------------------------------- /openfl/component/collaborator/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.component.collaborator.collaborator import Collaborator 6 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/interface/cli/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.interface.cli package.""" 6 | -------------------------------------------------------------------------------- /openfl/utilities/fedcurv/torch/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.utilities.fedcurv.torch.fedcurv import FedCurv # NOQA 6 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedEvaluation/Bengaluru/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedEvaluation/Portland/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-workspace/keras/torch/mnist/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds 5 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/101_MNIST/Seattle/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/SecAgg/Portland/Portland_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Portland: 6 | private_attributes: private_attributes.portland_attrs -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/SecAgg/workspace/mermaid-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/SecAgg/workspace/mermaid-flow.png -------------------------------------------------------------------------------- /openfl-workspace/federated_analytics/histogram/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/flower-app-pytorch/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | -------------------------------------------------------------------------------- /openfl-workspace/keras/tensorflow/mnist/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_fedcurv/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_s3/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_eden_compression/requirements.txt: -------------------------------------------------------------------------------- 1 | setuptools>=65.5.1 2 | tensorboard 3 | torch==2.7.0 4 | torchvision==0.22.0 5 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability -------------------------------------------------------------------------------- /openfl/utilities/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.utilities.types import * # NOQA 6 | from openfl.utilities.utils import * # NOQA 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_datastore_cli/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds 5 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/101_MNIST/Portland/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/SecAgg/Bengaluru/Bengaluru_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Bengaluru: 6 | private_attributes: private_attributes.bengaluru_attrs -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_eden_compression/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_straggler_check/src/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """You may copy this file as the starting point of your own model.""" 4 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_internalloop/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds 5 | 6 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_with_both_options/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_without_callable/director/start_director.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | fx director start --disable-tls -c director_config.yaml -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/collaborator.yaml: -------------------------------------------------------------------------------- 1 | template : openfl.component.Collaborator 2 | settings : 3 | opt_treatment : 'CONTINUE_LOCAL' 4 | use_delta_updates : True 5 | db_store_rounds : 1 6 | -------------------------------------------------------------------------------- /openfl/databases/utilities/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.databases.utilities.dataframe import ROUND_PLACEHOLDER, _retrieve, _search, _store 6 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_include_exclude/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_internalloop/envoy_one/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_internalloop/envoy_two/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference/envoy_one/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference/envoy_two/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedEvaluation/Portland/Portland_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Portland: 6 | private_attributes: private_attributes.portland_attrs -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/301_MNIST_Watermarking/Bangalore/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/301_MNIST_Watermarking/Chandler/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /scripts/build_wheel.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (C) 2020-2024 Intel Corporation 3 | # SPDX-License-Identifier: Apache-2.0 4 | set -Eeuo pipefail 5 | 6 | python3 setup.py sdist bdist_wheel 7 | echo "Pip wheel created under dist/" 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_datastore_cli/envoy_one/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_datastore_cli/envoy_two/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_include_exclude/envoy_one/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_include_exclude/envoy_two/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds 5 | 6 | -------------------------------------------------------------------------------- /tests/openfl/interface/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedEvaluation/Bengaluru/Bengaluru_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Bengaluru: 6 | private_attributes: private_attributes.bengaluru_attrs -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/101_MNIST/Portland/Portland_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Portland: 6 | private_attributes: private_attributes.portland_attrs -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/101_MNIST/Seattle/Seattle_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Seattle: 6 | private_attributes: private_attributes.seattle_attrs -------------------------------------------------------------------------------- /openfl-workspace/gandlf_seg_test/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-workspace/keras/2dunet/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_s3/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl/databases/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.databases.persistent_db import PersistentTensorDB 6 | from openfl.databases.tensor_db import TensorDB 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes/envoy_one/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes/envoy_two/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-workspace/flower-app-pytorch/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-workspace/keras/hippmapp3r/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-workspace/keras/hippmapp3r/requirements.txt: -------------------------------------------------------------------------------- 1 | keras==3.10.0 2 | tensorflow==2.18.0 3 | keras-contrib @ git+https://www.github.com/keras-team/keras-contrib.git@3fc5ef709e061416f4bc8a92ca3750c824b5d2b0 4 | gdown==5.2.0 5 | scikit-learn==1.6.1 -------------------------------------------------------------------------------- /openfl-workspace/keras/jax/mnist/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-workspace/keras/mnist/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | one,1 5 | two,2 6 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference_with_include_exclude/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_four/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_one/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_three/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_two/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/LocalRuntime/requirements_experimental_localruntime_tests.txt: -------------------------------------------------------------------------------- 1 | dill==0.3.6 2 | metaflow==2.7.15 3 | ray==2.43.0 4 | torch 5 | tabulate==0.9.0 6 | torchvision 7 | nbformat==5.10.4 8 | nbdev==2.3.37 9 | tensorboard -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Portland_auc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Portland_auc.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Seattle_auc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Seattle_auc.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Portland_auc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Portland_auc.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Seattle_auc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Seattle_auc.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/workflow_interface_requirements.txt: -------------------------------------------------------------------------------- 1 | chardet 2 | charset-normalizer 3 | dill==0.3.6 4 | matplotlib>=2.0.0 5 | metaflow==2.7.15 6 | nbdev==2.3.37 7 | nbformat==5.10.4 8 | ray==2.43.0 9 | tabulate==0.9.0 10 | -------------------------------------------------------------------------------- /openfl-workspace/keras/torch/mnist/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_fedcurv/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference_with_include_exclude/envoy_one/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference_with_include_exclude/envoy_two/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Global_DP/requirements_global_dp.txt: -------------------------------------------------------------------------------- 1 | cloudpickle 2 | matplotlib==3.6.0 3 | numpy==1.23.3 4 | opacus==1.5.1 5 | pillow==10.3.0 6 | pyyaml==6.0 7 | torch==2.7.0 8 | torchvision==0.22.0 9 | torchaudio==2.2.0 10 | -------------------------------------------------------------------------------- /openfl-workspace/federated_analytics/histogram/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-workspace/keras/tensorflow/mnist/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_fedcurv/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | one,1 5 | two,2 6 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/component/envoy/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | """Envoy package.""" 5 | 6 | from openfl.experimental.workflow.component.envoy.envoy import Envoy 7 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Seattle_roc_at_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Seattle_roc_at_30.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Portland_roc_at_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Portland_roc_at_30.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Seattle_roc_at_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Seattle_roc_at_30.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Seattle_tpr_at_0.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Seattle_tpr_at_0.1.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Seattle_tpr_at_0.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Seattle_tpr_at_0.2.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Seattle_tpr_at_0.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Seattle_tpr_at_0.3.png -------------------------------------------------------------------------------- /openfl-workspace/federated_analytics/smokers_health/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_eden_compression/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_straggler_check/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | collaborators: 5 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Portland_roc_at_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Portland_roc_at_30.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Portland_tpr_at_0.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Portland_tpr_at_0.1.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Portland_tpr_at_0.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Portland_tpr_at_0.2.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Portland_tpr_at_0.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Portland_tpr_at_0.3.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Seattle_tpr_at_0.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Seattle_tpr_at_0.1.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Seattle_tpr_at_0.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Seattle_tpr_at_0.2.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Seattle_tpr_at_0.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_adam/Seattle_tpr_at_0.3.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Portland_tpr_at_0.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Portland_tpr_at_0.1.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Portland_tpr_at_0.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Portland_tpr_at_0.2.png -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Portland_tpr_at_0.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/securefederatedai/openfederatedlearning/HEAD/openfl-tutorials/experimental/workflow/Privacy_Meter/Results/result_sgd/Portland_tpr_at_0.3.png -------------------------------------------------------------------------------- /openfl/experimental/workflow/component/director/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | """Director package.""" 5 | 6 | from openfl.experimental.workflow.component.director.director import Director 7 | -------------------------------------------------------------------------------- /openfl/protocols/README.md: -------------------------------------------------------------------------------- 1 | # OpenFL gRPC protocols 2 | 3 | All `*_pb2*` files are generated automatically during the installation via `pip`. 4 | You can always build these files manually by running `python setup.py build_grpc` command from the root repository directory. -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_with_both_options/envoy_one/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_with_both_options/envoy_two/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_without_callable/envoy_one/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_without_callable/envoy_two/start_envoy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | ENVOY_NAME=$1 4 | ENVOY_CONF=$2 5 | 6 | fx envoy start -n "$ENVOY_NAME" --disable-tls -c "$ENVOY_CONF" 7 | -------------------------------------------------------------------------------- /TSC.md: -------------------------------------------------------------------------------- 1 | # Technical Steering Committee members (alphabetical order) 2 | 3 | Daniel J. Beutel; 4 | 5 | Eric A. Stahlberg; 6 | 7 | Layne Peng; 8 | 9 | Micah J. Sheller; 10 | 11 | Patrick Foley [Chair]; 12 | 13 | Prashant Shah; 14 | 15 | Spyridon Bakas; 16 | 17 | -------------------------------------------------------------------------------- /tests/openfl/interface/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # collaborator_name,data_directory_path 5 | one,1 6 | 7 | -------------------------------------------------------------------------------- /openfl/transport/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.transport.grpc import AggregatorGRPCClient, AggregatorGRPCServer 6 | from openfl.transport.rest import AggregatorRESTClient, AggregatorRESTServer 7 | -------------------------------------------------------------------------------- /openfl/transport/grpc/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.transport.grpc.aggregator_client import AggregatorGRPCClient 6 | from openfl.transport.grpc.aggregator_server import AggregatorGRPCServer 7 | -------------------------------------------------------------------------------- /openfl/transport/rest/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.transport.rest.aggregator_client import AggregatorRESTClient 6 | from openfl.transport.rest.aggregator_server import AggregatorRESTServer 7 | -------------------------------------------------------------------------------- /openfl-workspace/federated_analytics/smokers_health/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # collaborator_name,data_directory_path 5 | -------------------------------------------------------------------------------- /openfl-workspace/federated_analytics/histogram/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # collaborator_name,data_directory_path 5 | one,1 6 | -------------------------------------------------------------------------------- /openfl-workspace/gandlf_seg_test/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2023 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # collaborator_name,data_directory_path 5 | one,data/one 6 | 7 | -------------------------------------------------------------------------------- /openfl-workspace/keras/jax/mnist/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # collaborator_name,data_directory_path 5 | one,1 6 | 7 | 8 | -------------------------------------------------------------------------------- /openfl-workspace/keras/mnist/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # collaborator_name,data_directory_path 5 | one,1 6 | 7 | 8 | -------------------------------------------------------------------------------- /openfl-workspace/keras/torch/mnist/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # collaborator_name,data_directory_path 5 | one,1 6 | 7 | 8 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/federated/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.federated package.""" 6 | 7 | # FIXME: Recursion! 8 | from openfl.experimental.workflow.federated.plan import Plan 9 | -------------------------------------------------------------------------------- /openfl/interface/aggregation_functions/experimental/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.interface.aggregation_functions.experimental.privileged_aggregation import ( 6 | PrivilegedAggregationFunction, 7 | ) 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference/envoy_one/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | def collaborator_private_attrs(index): 4 | return {"index": index + 1} 5 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/Privacy_Meter/requirements_privacy_meter.txt: -------------------------------------------------------------------------------- 1 | cloudpickle 2 | git+https://github.com/privacytrustlab/ml_privacy_meter.git@ac181a885815f85b3809317c247f422e6596cb4a 3 | matplotlib 4 | opacus==1.5.2 5 | pillow 6 | scikit-learn 7 | torch==2.7.0 8 | torchvision==0.22.0 -------------------------------------------------------------------------------- /openfl-workspace/keras/tensorflow/mnist/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # collaborator_name,data_directory_path 5 | one,1 6 | 7 | 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference/envoy_two/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | def collaborator_private_attrs(index): 5 | return {"index": index + 1} 6 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # collaborator_name,data_directory_path 5 | collaborator1,1 6 | collaborator2,2 7 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/federated/plan/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """Experimental Plan package.""" 6 | 7 | # FIXME: Too much recursion in namespace 8 | from openfl.experimental.workflow.federated.plan.plan import Plan 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.egg-info 2 | *.pkl 3 | __pycache__ 4 | /build 5 | /dist 6 | .vscode 7 | .ipynb_checkpoints 8 | venv/* 9 | .idea 10 | *_pb2.py 11 | *_pb2_grpc.py 12 | *.jpg 13 | *.crt 14 | *.key 15 | .eggs 16 | eggs/* 17 | *.pyi 18 | .metaflow/* 19 | results/* 20 | **MNIST/ 21 | **cert/ 22 | .history/ 23 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/protocols/README.md: -------------------------------------------------------------------------------- 1 | # OpenFL Experimental gRPC protocols 2 | 3 | All `*_pb2*` files are generated automatically during the installation via `pip`. 4 | You can always build these files manually by running `python setup.py build_grpc` command from the root repository directory. 5 | -------------------------------------------------------------------------------- /openfl/utilities/optimizers/keras/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from importlib import util 6 | 7 | if util.find_spec("tensorflow") is not None: 8 | from openfl.utilities.optimizers.keras.fedprox import FedProxOptimizer # NOQA 9 | -------------------------------------------------------------------------------- /openfl-workspace/keras/hippmapp3r/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # collaborator_name,data_directory_path 5 | collaborator1,data/1 6 | collaborator2,data/2 -------------------------------------------------------------------------------- /openfl-docker/README.md: -------------------------------------------------------------------------------- 1 | # Using TEEs with OpenFL 2 | 3 | OpenFL supports [Gramine-based](https://gramineproject.io/) SGX TEEs in containerized environments. 4 | 5 | Refer to the dockerization step in the [TaskRunner Guide](https://openfl.readthedocs.io/en/latest/about/features_index/taskrunner.html) for more details. -------------------------------------------------------------------------------- /scripts/format.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -Euo pipefail 3 | 4 | base_dir=$(dirname $(dirname $0)) 5 | 6 | # Run the pre-commit checks 7 | SKIP=bandit pre-commit run --all-files 8 | 9 | ruff check --config "${base_dir}/pyproject.toml" --fix openfl/ 10 | 11 | ruff format --config "${base_dir}/pyproject.toml" openfl/ -------------------------------------------------------------------------------- /openfl/component/connector/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | """OpenFL Connector Module.""" 5 | 6 | from importlib import util 7 | 8 | if util.find_spec("flwr") is not None: 9 | from openfl.component.connector.connector_flower import ConnectorFlower 10 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_without_callable/envoy_two/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_two: 6 | private_attributes: private_attributes.collaborator_private_attrs.collaborator_private_attributes -------------------------------------------------------------------------------- /docs/reference/openfl.transport.rst: -------------------------------------------------------------------------------- 1 | ``openfl.transport`` module 2 | =========================== 3 | 4 | .. currentmodule:: openfl.transport 5 | 6 | .. automodule:: openfl.transport 7 | 8 | .. autosummary:: 9 | :toctree: _autosummary 10 | :template: custom-module-template.rst 11 | :recursive: 12 | 13 | grpc 14 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/placement/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.placement package.""" 6 | 7 | # FIXME: Unnecessary recursion. 8 | from openfl.experimental.workflow.placement.placement import aggregator, collaborator 9 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_without_callable/envoy_one/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_one: 6 | private_attributes: private_attributes.collaborator_private_attrs.collaborator_private_attributes 7 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference/envoy_one/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_one: 6 | callable_func: 7 | settings: 8 | index: 1 9 | template: private_attributes.collaborator_private_attrs.collaborator_private_attrs -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference/envoy_two/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_two: 6 | callable_func: 7 | settings: 8 | index: 2 9 | template: private_attributes.collaborator_private_attrs.collaborator_private_attrs -------------------------------------------------------------------------------- /docs/about/license.rst: -------------------------------------------------------------------------------- 1 | ========== 2 | License 3 | ========== 4 | 5 | This project is licensed under `Apache License Version 2.0 `_. 6 | By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms. -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/connector_flower.yaml: -------------------------------------------------------------------------------- 1 | template : openfl.component.ConnectorFlower 2 | settings : 3 | automatic_shutdown : True 4 | insecure : True 5 | superlink_host : 127.0.0.1 6 | serverappio_api_port : auto 7 | fleet_api_port : auto 8 | exec_api_port : auto -------------------------------------------------------------------------------- /openfl/interface/aggregation_functions/core/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.interface.aggregation_functions.core.adaptive_aggregation import AdaptiveAggregation 6 | from openfl.interface.aggregation_functions.core.interface import AggregationFunction 7 | -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/aggregator.yaml: -------------------------------------------------------------------------------- 1 | template : openfl.component.Aggregator 2 | settings : 3 | db_store_rounds : 2 4 | init_state_path : save/init.pbuf 5 | best_state_path : save/best.pbuf 6 | last_state_path : save/last.pbuf 7 | persist_checkpoint: True 8 | persistent_db_path: local_state/tensor.db 9 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_one/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | def callable_to_initialize_collaborator_private_attributes(collab_name): 4 | return {"name": collab_name} 5 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/component/aggregator/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.component.aggregator package.""" 6 | 7 | # FIXME: Too much recursion. 8 | from openfl.experimental.workflow.component.aggregator.aggregator import Aggregator 9 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/transport/grpc/exceptions.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """Exceptions that occur during service interaction.""" 6 | 7 | 8 | class EnvoyNotFoundError(Exception): 9 | """Indicates that director has no information about that Envoy.""" 10 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_four/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | def callable_to_initialize_collaborator_private_attributes(collab_name): 5 | return {"name": collab_name} 6 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_two/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | def callable_to_initialize_collaborator_private_attributes(collab_name): 5 | return {"name": collab_name} 6 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_three/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | def callable_to_initialize_collaborator_private_attributes(collab_name): 5 | return {"name": collab_name} 6 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/component/collaborator/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.component.collaborator package.""" 6 | 7 | # FIXME: Too much recursion. 8 | from openfl.experimental.workflow.component.collaborator.collaborator import Collaborator 9 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes/envoy_one/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_one: 6 | callable_func: 7 | settings: 8 | index: 1 9 | template: private_attributes.collaborator_private_attrs.collaborator_private_attrs 10 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes/envoy_two/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_two: 6 | callable_func: 7 | settings: 8 | index: 2 9 | template: private_attributes.collaborator_private_attrs.collaborator_private_attrs 10 | 11 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/interface/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.interface package.""" 6 | 7 | from openfl.experimental.workflow.interface.fl_spec import FLSpec 8 | from openfl.experimental.workflow.interface.participants import Aggregator, Collaborator 9 | -------------------------------------------------------------------------------- /openfl/utilities/optimizers/numpy/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.utilities.optimizers.numpy.adagrad_optimizer import NumPyAdagrad 6 | from openfl.utilities.optimizers.numpy.adam_optimizer import NumPyAdam 7 | from openfl.utilities.optimizers.numpy.yogi_optimizer import NumPyYogi 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes/director/private_attributes/aggregator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | import numpy as np 4 | 5 | 6 | def aggregator_private_attrs(): 7 | return {"test_loader_agg": np.random.rand(10, 28, 28)} # Random data 8 | -------------------------------------------------------------------------------- /openfl-workspace/torch/template/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # This file lists the collaborators associated with the federation. The list will be auto-populated during collaborator creation. 5 | collaborators: 6 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_without_callable/director/private_attributes/aggregator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | import numpy as np 5 | 6 | aggregator_private_attributes = {"test_loader_agg": np.random.rand(10, 28, 28)} 7 | -------------------------------------------------------------------------------- /docs/reference/openfl.callbacks.rst: -------------------------------------------------------------------------------- 1 | ``openfl.callbacks`` module 2 | =========================== 3 | 4 | .. currentmodule:: openfl.callbacks 5 | 6 | .. automodule:: openfl.callbacks 7 | 8 | .. autosummary:: 9 | :toctree: _autosummary 10 | :recursive: 11 | 12 | Callback 13 | CallbackList 14 | LambdaCallback 15 | MetricWriter 16 | MemoryProfiler 17 | -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_straggler_check/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy>=1.22.2 # not directly required, pinned by Snyk to avoid a vulnerability 2 | rsa>=4.7 # not directly required, pinned by Snyk to avoid a vulnerability 3 | setuptools>=65.5.1 4 | tensorboard 5 | torch==2.7.0 6 | torchvision==0.22.0 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability -------------------------------------------------------------------------------- /openfl-workspace/xgb_higgs/plan/cols.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # DO NOT EDIT: This file lists the collaborators associated with the federation. The list will be auto-populated during collaborator creation. 5 | collaborators: 6 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_without_callable/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds 5 | 6 | aggregator: 7 | private_attributes: private_attributes.aggregator_private_attrs.aggregator_private_attributes 8 | -------------------------------------------------------------------------------- /openfl/component/aggregator/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.component.aggregator.aggregator import Aggregator 6 | from openfl.component.aggregator.straggler_handling import ( 7 | CutoffTimePolicy, 8 | PercentagePolicy, 9 | StragglerPolicy, 10 | WaitForAllPolicy, 11 | ) 12 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/notebooktools/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.notebooktools package.""" 6 | 7 | from openfl.experimental.workflow.notebooktools.code_analyzer import CodeAnalyzer 8 | from openfl.experimental.workflow.notebooktools.notebook_tools import NotebookTools 9 | -------------------------------------------------------------------------------- /openfl/transport/grpc/interop/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from importlib import util 5 | 6 | if util.find_spec("flwr") is not None: 7 | from openfl.transport.grpc.interop.flower.interop_client import FlowerInteropClient 8 | from openfl.transport.grpc.interop.flower.interop_server import FlowerInteropServer 9 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds 5 | 6 | aggregator: 7 | callable_func: 8 | settings: {} 9 | template: private_attributes.aggregator_private_attrs.aggregator_private_attrs 10 | 11 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_one/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_one: 6 | callable_func: 7 | settings: 8 | collab_name: envoy_one 9 | template: private_attributes.collaborator_private_attrs.callable_to_initialize_collaborator_private_attributes -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_two/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_two: 6 | callable_func: 7 | settings: 8 | collab_name: envoy_two 9 | template: private_attributes.collaborator_private_attrs.callable_to_initialize_collaborator_private_attributes -------------------------------------------------------------------------------- /openfl/transport/grpc/interop/flower/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from importlib import util 5 | 6 | if util.find_spec("flwr") is not None: 7 | from openfl.transport.grpc.interop.flower.interop_client import FlowerInteropClient 8 | from openfl.transport.grpc.interop.flower.interop_server import FlowerInteropServer 9 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_four/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_four: 6 | callable_func: 7 | settings: 8 | collab_name: envoy_four 9 | template: private_attributes.collaborator_private_attrs.callable_to_initialize_collaborator_private_attributes -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_three/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_three: 6 | callable_func: 7 | settings: 8 | collab_name: envoy_three 9 | template: private_attributes.collaborator_private_attrs.callable_to_initialize_collaborator_private_attributes -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/tasks_flower.yaml: -------------------------------------------------------------------------------- 1 | prepare_for_interop: 2 | function : start_client_adapter 3 | kwargs : 4 | {} 5 | 6 | settings: 7 | interop_server : openfl.transport.grpc.interop.FlowerInteropServer 8 | interop_server_host : 127.0.0.1 9 | interop_server_port : auto 10 | clientappio_api_port : auto 11 | local_simulation : True 12 | -------------------------------------------------------------------------------- /openfl/component/assigner/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | """OpenFL Assigner Module.""" 5 | 6 | from openfl.component.assigner.assigner import Assigner 7 | from openfl.component.assigner.random_grouped_assigner import RandomGroupedAssigner 8 | from openfl.component.assigner.static_grouped_assigner import StaticGroupedAssigner 9 | -------------------------------------------------------------------------------- /scripts/lint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -Euo pipefail 3 | 4 | base_dir=$(dirname $(dirname $0)) 5 | 6 | # Run the pre-commit checks 7 | SKIP=bandit pre-commit run --all-files 8 | 9 | ruff check --config "${base_dir}/pyproject.toml" openfl/ 10 | exitcode=$? 11 | 12 | ruff format --check --config "${base_dir}/pyproject.toml" openfl/ 13 | exitcode=$(($exitcode + $?)) 14 | 15 | exit $exitcode -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_s3/data/collaborator2/datasources.json: -------------------------------------------------------------------------------- 1 | { 2 | "s3_ds3": { 3 | "params": { 4 | "access_key_env_name": "MINIO_ROOT_USER", 5 | "endpoint": "http://localhost:9000", 6 | "secret_key_env_name": "MINIO_ROOT_PASSWORD", 7 | "secret_name": "vault_secret_name1", 8 | "uri": "s3://my-bucket/" 9 | }, 10 | "type": "s3" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /openfl-workspace/torch/template/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # This file specifies the local data directory associated with the respective collaborator. This will be auto-populated during collaborator creation 5 | # collaborator_name,data_directory_path -------------------------------------------------------------------------------- /docs/reference/openfl.protocols.rst: -------------------------------------------------------------------------------- 1 | ``openfl.protocols`` module 2 | =========================== 3 | 4 | .. currentmodule:: openfl.protocols 5 | 6 | .. automodule:: openfl.protocols 7 | 8 | .. autosummary:: 9 | :toctree: _autosummary 10 | :template: custom-module-template.rst 11 | :recursive: 12 | 13 | interceptors 14 | utils 15 | 16 | .. TODO(MasterSkepticista) Shrink API namespace 17 | -------------------------------------------------------------------------------- /docs/reference/openfl.databases.rst: -------------------------------------------------------------------------------- 1 | ``openfl.databases`` module 2 | =========================== 3 | 4 | .. currentmodule:: openfl.databases 5 | 6 | .. automodule:: openfl.databases 7 | 8 | .. autosummary:: 9 | :toctree: _autosummary 10 | :template: custom-module-template.rst 11 | :recursive: 12 | 13 | tensor_db 14 | utilities 15 | 16 | .. TODO(MasterSkepticista) Shrink API namespace 17 | -------------------------------------------------------------------------------- /docs/reference/openfl.federated.rst: -------------------------------------------------------------------------------- 1 | ``openfl.federated`` module 2 | =========================== 3 | 4 | .. currentmodule:: openfl.federated 5 | 6 | .. automodule:: openfl.federated 7 | 8 | .. autosummary:: 9 | :toctree: _autosummary 10 | :template: custom-module-template.rst 11 | :recursive: 12 | 13 | plan 14 | task 15 | data 16 | 17 | .. TODO(MasterSkepticista) Shrink API namespace 18 | -------------------------------------------------------------------------------- /openfl-workspace/xgb_higgs/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # DO NOT EDIT: This file specifies the local data directory associated with the respective collaborator. This will be auto-populated during collaborator creation 5 | # collaborator_name,data_directory_path -------------------------------------------------------------------------------- /test-requirements.txt: -------------------------------------------------------------------------------- 1 | docker 2 | Flask==3.1.1 3 | lxml==5.3.1 4 | paramiko 5 | pytest==8.3.5 6 | pytest-asyncio==0.26.0 7 | pytest-cov>=2.10.0 8 | pytest-mock==3.14.0 9 | defusedxml==0.7.1 10 | matplotlib==3.10.1 11 | fpdf2==2.8.3 12 | papermill==2.6.0 13 | pyfakefs==5.8.0 14 | torch==2.7.0 15 | boto3>=1.37.19 16 | moto==5.1.1 17 | torchvision==0.22.0 18 | azure-storage-blob==12.25.1 19 | cryptography>=3.4.0 20 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/301_MNIST_Watermarking/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds 5 | 6 | aggregator: 7 | callable_func: 8 | settings: 9 | batch_size: 50 10 | watermark_data: private_attributes.watermark_data 11 | template: private_attributes.aggregator_attrs -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference/envoy_one/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference/envoy_two/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_datastore_cli/envoy_one/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_datastore_cli/envoy_two/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_include_exclude/envoy_one/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_include_exclude/envoy_two/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_internalloop/envoy_one/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_internalloop/envoy_two/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /docs/reference/openfl.cryptography.rst: -------------------------------------------------------------------------------- 1 | ``openfl.cryptography`` module 2 | ============================== 3 | 4 | .. currentmodule:: openfl.cryptography 5 | 6 | .. automodule:: openfl.cryptography 7 | 8 | .. autosummary:: 9 | :toctree: _autosummary 10 | :template: custom-module-template.rst 11 | :recursive: 12 | 13 | ca 14 | io 15 | participant 16 | 17 | .. TODO(MasterSkepticista) Shrink API namespace 18 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/transport/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.transport package.""" 6 | 7 | from openfl.experimental.workflow.transport.grpc import ( 8 | AggregatorGRPCClient, 9 | AggregatorGRPCServer, 10 | DirectorGRPCServer, 11 | EnvoyDirectorClient, 12 | RuntimeDirectorClient, 13 | ) 14 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes/envoy_one/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes/envoy_two/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /openfl/utilities/optimizers/torch/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """PyTorch optimizers package.""" 6 | 7 | from importlib import util 8 | 9 | if util.find_spec("torch") is not None: 10 | from openfl.utilities.optimizers.torch.fedprox import FedProxAdam # NOQA 11 | from openfl.utilities.optimizers.torch.fedprox import FedProxOptimizer # NOQA 12 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_without_callable/envoy_one/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # # SPDX-License-Identifier: Apache-2.0 3 | import numpy as np 4 | 5 | collaborator_private_attributes = { 6 | "train_loader": np.random.rand(1 * 50, 28, 28), 7 | "test_loader": np.random.rand(1 * 10, 28, 28), 8 | } 9 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_four/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_one/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_three/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_subset_of_collaborators/envoy_two/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference_with_include_exclude/envoy_one/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_reference_with_include_exclude/envoy_two/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /docs/developer_guide/running_the_federation.singularity.rst: -------------------------------------------------------------------------------- 1 | .. # Copyright (C) 2020-2023 Intel Corporation 2 | .. # SPDX-License-Identifier: Apache-2.0 3 | 4 | .. this page is not be included yet, so it's marked as an orphan. 5 | .. Remove the below line when you're ready to publish this page. 6 | 7 | :orphan: 8 | 9 | .. _running_the_federation_singularity: 10 | 11 | Running on Singularity 12 | ###################### 13 | 14 | TODO 15 | 16 | -------------------------------------------------------------------------------- /docs/reference/openfl.plugins.rst: -------------------------------------------------------------------------------- 1 | ``openfl.plugins`` module 2 | ========================= 3 | 4 | .. currentmodule:: openfl.plugins 5 | 6 | .. automodule:: openfl.plugins 7 | 8 | .. autosummary:: 9 | :toctree: _autosummary 10 | :template: custom-module-template.rst 11 | :recursive: 12 | 13 | frameworks_adapters 14 | interface_serializer 15 | processing_units_monitor 16 | 17 | .. TODO(MasterSkepticista) Shrink API namespace 18 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/301_MNIST_Watermarking/Bangalore/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch==2.7.0 7 | torchvision==0.22.0 8 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 9 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/301_MNIST_Watermarking/Chandler/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch==2.7.0 7 | torchvision==0.22.0 8 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 9 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/transport/grpc/grpc_channel_options.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | max_metadata_size = 32 * 2**20 6 | max_message_length = 2**30 7 | 8 | channel_options = [ 9 | ("grpc.max_metadata_size", max_metadata_size), 10 | ("grpc.max_send_message_length", max_message_length), 11 | ("grpc.max_receive_message_length", max_message_length), 12 | ] 13 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_without_callable/envoy_two/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | import numpy as np 4 | 5 | 6 | collaborator_private_attributes = { 7 | "train_loader": np.random.rand(1 * 50, 28, 28), 8 | "test_loader": np.random.rand(1 * 10, 28, 28), 9 | } 10 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/runtime/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.runtime package Runtime class.""" 6 | 7 | from openfl.experimental.workflow.runtime.federated_runtime import FederatedRuntime 8 | from openfl.experimental.workflow.runtime.local_runtime import LocalRuntime 9 | from openfl.experimental.workflow.runtime.runtime import Runtime 10 | -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/assigner.yaml: -------------------------------------------------------------------------------- 1 | template : openfl.component.RandomGroupedAssigner 2 | settings : 3 | task_groups : 4 | - name : learning 5 | percentage : 1.0 6 | tasks : 7 | - aggregated_model_validation 8 | - train 9 | - locally_tuned_model_validation 10 | - name : evaluation 11 | percentage : 0 12 | tasks : 13 | - aggregated_model_validation 14 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes/envoy_one/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # # SPDX-License-Identifier: Apache-2.0 3 | import numpy as np 4 | 5 | 6 | def collaborator_private_attrs(index): 7 | return { 8 | "train_loader": np.random.rand(index * 50, 28, 28), 9 | "test_loader": np.random.rand(index * 10, 28, 28), 10 | } 11 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes/envoy_two/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | import numpy as np 4 | 5 | 6 | def collaborator_private_attrs(index): 7 | return { 8 | "train_loader": np.random.rand(index * 50, 28, 28), 9 | "test_loader": np.random.rand(index * 10, 28, 28), 10 | } 11 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_with_both_options/envoy_one/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_with_both_options/envoy_two/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_without_callable/envoy_one/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_without_callable/envoy_two/requirements.txt: -------------------------------------------------------------------------------- 1 | mistune>=2.0.3 # not directly required, pinned by Snyk to avoid a vulnerability 2 | numpy>=1.13.3 3 | openfl>=1.2.1 4 | scikit-learn>=0.24.1 5 | setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability 6 | torch>=1.13.1 7 | wheel>=0.38.0 # not directly required, pinned by Snyk to avoid a vulnerability 8 | -------------------------------------------------------------------------------- /docs/reference/openfl.component.rst: -------------------------------------------------------------------------------- 1 | ``openfl.component`` module 2 | =========================== 3 | 4 | .. currentmodule:: openfl.component 5 | 6 | .. automodule:: openfl.component 7 | 8 | .. autosummary:: 9 | :toctree: _autosummary 10 | :template: custom-module-template.rst 11 | :recursive: 12 | 13 | aggregator 14 | assigner 15 | collaborator 16 | straggler_handling_functions 17 | 18 | .. TODO(MasterSkepticista) Shrink API namespace 19 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/301_MNIST_Watermarking/Chandler/Chandler_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Chandler: 6 | callable_func: 7 | settings: 8 | batch_size: 64 9 | index: 0 10 | n_collaborators: 2 11 | test_dataset: private_attributes.test_dataset 12 | train_dataset: private_attributes.train_dataset 13 | template: private_attributes.chandler_attrs -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/tasks_torch.yaml: -------------------------------------------------------------------------------- 1 | aggregated_model_validation: 2 | function : validate_task 3 | kwargs : 4 | apply : global 5 | metrics : 6 | - acc 7 | 8 | locally_tuned_model_validation: 9 | function : validate_task 10 | kwargs : 11 | apply: local 12 | metrics : 13 | - acc 14 | 15 | train: 16 | function : train_task 17 | kwargs : 18 | metrics : 19 | - loss 20 | epochs : 1 21 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedRuntime/301_MNIST_Watermarking/Bangalore/Bangalore_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Bangalore: 6 | callable_func: 7 | settings: 8 | batch_size: 64 9 | index: 1 10 | n_collaborators: 2 11 | test_dataset: private_attributes.test_dataset 12 | train_dataset: private_attributes.train_dataset 13 | template: private_attributes.bangalore_attrs -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_with_both_options/envoy_two/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_two: 6 | callable_func: 7 | settings: 8 | index: 2 9 | template: private_attributes.collaborator_private_attrs.collaborator_private_attrs 10 | private_attributes: private_attributes.collaborator_private_attrs.collaborator_private_attributes -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/network.yaml: -------------------------------------------------------------------------------- 1 | template: openfl.federation.Network 2 | settings: 3 | agg_addr : auto 4 | agg_port : auto 5 | hash_salt : auto 6 | use_tls : True 7 | client_reconnect_interval : 5 8 | require_client_auth : True 9 | cert_folder : cert 10 | enable_atomic_connections : False 11 | transport_protocol : grpc 12 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Report a Vulnerability 4 | 5 | Please report security issues or vulnerabilities to the [Intel® Security Center]. 6 | 7 | For more information on how Intel® works to resolve security issues, see 8 | [Vulnerability Handling Guidelines]. 9 | 10 | [Intel® Security Center]:https://www.intel.com/security 11 | 12 | [Vulnerability Handling Guidelines]:https://www.intel.com/content/www/us/en/security-center/vulnerability-handling-guidelines.html 13 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_with_both_options/envoy_one/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_one: 6 | callable_func: 7 | settings: 8 | index: 1 9 | template: private_attributes.collaborator_private_attrs.collaborator_private_attrs 10 | private_attributes: private_attributes.collaborator_private_attrs.collaborator_private_attributes 11 | -------------------------------------------------------------------------------- /docs/reference/openfl.experimental.rst: -------------------------------------------------------------------------------- 1 | ``openfl.experimental`` module 2 | ============================== 3 | 4 | .. currentmodule:: openfl.experimental 5 | 6 | .. automodule:: openfl.experimental 7 | 8 | .. autosummary:: 9 | :toctree: _autosummary 10 | :template: custom-module-template.rst 11 | :recursive: 12 | 13 | workflow.interface 14 | workflow.placement 15 | workflow.runtime 16 | workflow.utilities 17 | 18 | .. TODO(MasterSkepticista) Shrink API namespace 19 | -------------------------------------------------------------------------------- /openfl/utilities/secagg/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.utilities.secagg.crypto import ( 6 | calculate_mask, 7 | calculate_shared_mask, 8 | create_ciphertext, 9 | decipher_ciphertext, 10 | pseudo_random_generator, 11 | ) 12 | from openfl.utilities.secagg.key import generate_agreed_key, generate_key_pair 13 | from openfl.utilities.secagg.shamir import create_secret_shares, reconstruct_secret 14 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/CrowdGuard/Chandler/Chandler_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Chandler: 6 | callable_func: 7 | settings: 8 | index: 2 9 | malicious: false 10 | number_of_collaborators: 4 11 | train_dataset_ratio: 0.4 12 | test_dataset_ratio: 0.4 13 | cifar_train: private_attributes.cifar_train 14 | cifar_test: private_attributes.cifar_test 15 | template: private_attributes.envoy_attrs -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/CrowdGuard/Detroit/Detroit_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Detroit: 6 | callable_func: 7 | settings: 8 | index: 3 9 | malicious: true 10 | number_of_collaborators: 4 11 | train_dataset_ratio: 0.4 12 | test_dataset_ratio: 0.4 13 | cifar_train: private_attributes.cifar_train 14 | cifar_test: private_attributes.cifar_test 15 | template: private_attributes.envoy_attrs -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_with_both_options/director/director_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | listen_host: localhost 3 | listen_port: 50050 4 | envoy_health_check_period: 5 # in seconds 5 | 6 | aggregator: 7 | callable_func: 8 | settings: {} 9 | template: private_attributes.aggregator_private_attrs.aggregator_private_attrs 10 | private_attributes: private_attributes.aggregator_private_attrs.aggregator_private_attributes 11 | 12 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/CrowdGuard/Amsterdam/Amsterdam_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Amsterdam: 6 | callable_func: 7 | settings: 8 | index: 0 9 | malicious: false 10 | number_of_collaborators: 4 11 | train_dataset_ratio: 0.4 12 | test_dataset_ratio: 0.4 13 | cifar_train: private_attributes.cifar_train 14 | cifar_test: private_attributes.cifar_test 15 | template: private_attributes.envoy_attrs -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/CrowdGuard/Bangalore/Bangalore_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | Bangalore: 6 | callable_func: 7 | settings: 8 | index: 1 9 | malicious: false 10 | number_of_collaborators: 4 11 | train_dataset_ratio: 0.4 12 | test_dataset_ratio: 0.4 13 | cifar_train: private_attributes.cifar_train 14 | cifar_test: private_attributes.cifar_test 15 | template: private_attributes.envoy_attrs -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_with_both_options/director/private_attributes/aggregator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | import numpy as np 4 | 5 | 6 | def aggregator_private_attrs(): 7 | return {"test_loader_agg_via_callable": np.random.rand(10, 28, 28)} # Random data 8 | 9 | 10 | aggregator_private_attributes = {"test_loader_agg": np.random.rand(10, 28, 28)} # Random data 11 | -------------------------------------------------------------------------------- /.github/actions/trufflehog_logs_scan/action.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Composite Action to run pre-test functions for task runner end to end tests 3 | 4 | name: 'TruffleHog Logs Scan' 5 | description: 'Run TruffleHog scan on logs' 6 | 7 | runs: 8 | using: 'composite' 9 | steps: 10 | - name: Run trufflehog for all log file in results 11 | id: trufflehog_scan 12 | run: | 13 | export PYTHONPATH="$PYTHONPATH:." 14 | python .github/config/parse_task_runner_logs.py --log_dir ~/results 15 | shell: bash -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/tasks_xgb.yaml: -------------------------------------------------------------------------------- 1 | aggregated_model_validation: 2 | function : validate_task 3 | kwargs : 4 | apply : global 5 | metrics : 6 | - acc 7 | 8 | locally_tuned_model_validation: 9 | function : validate_task 10 | kwargs : 11 | apply : local 12 | metrics : 13 | - acc 14 | 15 | train: 16 | function : train_task 17 | kwargs : 18 | metrics : 19 | - loss 20 | aggregation_type : 21 | template : openfl.interface.aggregation_functions.FedBaggingXGBoost -------------------------------------------------------------------------------- /openfl/experimental/workflow/component/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.component package.""" 6 | 7 | # FIXME: Too much recursion 8 | from openfl.experimental.workflow.component.aggregator import Aggregator 9 | from openfl.experimental.workflow.component.collaborator import Collaborator 10 | from openfl.experimental.workflow.component.director import Director 11 | from openfl.experimental.workflow.component.envoy import Envoy 12 | -------------------------------------------------------------------------------- /docs/about/features_index/pynative.rst: -------------------------------------------------------------------------------- 1 | .. # Copyright (C) 2020-2023 Intel Corporation 2 | .. # SPDX-License-Identifier: Apache-2.0 3 | 4 | .. this page is not be included yet, so it's marked as an orphan. 5 | .. Remove the below line when you're ready to publish this page. 6 | 7 | :orphan: 8 | 9 | ================= 10 | Python Native API (Deprecated) 11 | ================= 12 | 13 | TODO 14 | 15 | .. toctree 16 | .. overview.how_can_intel_protect_federated_learning 17 | .. overview.what_is_intel_federated_learning -------------------------------------------------------------------------------- /openfl/callbacks/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | from openfl.callbacks.callback import Callback 4 | from openfl.callbacks.callback_list import CallbackList 5 | from openfl.callbacks.lambda_callback import LambdaCallback 6 | from openfl.callbacks.memory_profiler import MemoryProfiler 7 | from openfl.callbacks.metric_writer import MetricWriter 8 | from openfl.callbacks.model_checkpoint import ModelCheckpoint 9 | from openfl.callbacks.secure_aggregation import SecAggBootstrapping 10 | -------------------------------------------------------------------------------- /docs/reference/openfl.pipelines.rst: -------------------------------------------------------------------------------- 1 | ``openfl.pipelines`` module 2 | =========================== 3 | 4 | .. currentmodule:: openfl.pipelines 5 | 6 | .. automodule:: openfl.pipelines 7 | 8 | .. autosummary:: 9 | :toctree: _autosummary 10 | :template: custom-module-template.rst 11 | :recursive: 12 | 13 | eden_pipeline 14 | kc_pipeline 15 | no_compression_pipeline 16 | pipeline 17 | random_shift_pipeline 18 | skc_pipeline 19 | stc_pipeline 20 | tensor_codec 21 | 22 | .. TODO(MasterSkepticista) Shrink API namespace 23 | -------------------------------------------------------------------------------- /CITATION: -------------------------------------------------------------------------------- 1 | @article{openfl_citation, 2 | author={Foley, Patrick and Sheller, Micah J and Edwards, Brandon and Pati, Sarthak and Riviera, Walter and Sharma, Mansi and Moorthy, Prakash Narayana and Wang, Shi-han and Martin, Jason and Mirhaji, Parsa and Shah, Prashant and Bakas, Spyridon}, 3 | title={OpenFL: the open federated learning library}, 4 | journal={Physics in Medicine \& Biology}, 5 | url={http://iopscience.iop.org/article/10.1088/1361-6560/ac97d9}, 6 | year={2022}, 7 | doi={10.1088/1361-6560/ac97d9}, 8 | publisher={IOP Publishing} 9 | } 10 | -------------------------------------------------------------------------------- /openfl/pipelines/no_compression_pipeline.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """NoCompressionPipeline module.""" 6 | 7 | from openfl.pipelines.pipeline import Float32NumpyArrayToBytes, TransformationPipeline 8 | 9 | 10 | class NoCompressionPipeline(TransformationPipeline): 11 | """The data pipeline without any compression.""" 12 | 13 | def __init__(self, **kwargs): 14 | """Initialize.""" 15 | super().__init__(transformers=[Float32NumpyArrayToBytes()], **kwargs) 16 | -------------------------------------------------------------------------------- /docs/reference/openfl.interface.rst: -------------------------------------------------------------------------------- 1 | ``openfl.interface`` module 2 | =========================== 3 | 4 | .. currentmodule:: openfl.interface 5 | 6 | .. automodule:: openfl.interface 7 | 8 | .. autosummary:: 9 | :toctree: _autosummary 10 | :template: custom-module-template.rst 11 | :recursive: 12 | 13 | aggregation_functions 14 | aggregator 15 | cli_helper 16 | cli 17 | collaborator 18 | experimental 19 | model 20 | pki 21 | plan 22 | tutorial 23 | workspace 24 | 25 | .. TODO(MasterSkepticista) Shrink API namespace 26 | -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/tasks_keras.yaml: -------------------------------------------------------------------------------- 1 | aggregated_model_validation: 2 | function : validate_task 3 | kwargs : 4 | batch_size : 32 5 | apply : global 6 | metrics : 7 | - accuracy 8 | 9 | locally_tuned_model_validation: 10 | function : validate_task 11 | kwargs : 12 | batch_size : 32 13 | apply : local 14 | metrics : 15 | - accuracy 16 | 17 | train: 18 | function : train_task 19 | kwargs : 20 | batch_size : 32 21 | epochs : 1 22 | metrics : 23 | - loss 24 | -------------------------------------------------------------------------------- /docs/reference/openfl.utilities.rst: -------------------------------------------------------------------------------- 1 | ``openfl.utilities`` module 2 | =========================== 3 | 4 | 5 | .. currentmodule:: openfl.utilities 6 | 7 | .. automodule:: openfl.utilities 8 | 9 | .. autosummary:: 10 | :toctree: _autosummary 11 | :template: custom-module-template.rst 12 | :recursive: 13 | 14 | ca 15 | data_splitters 16 | fedcurv 17 | optimizers 18 | ca 19 | checks 20 | click_types 21 | dataloading 22 | fed_timer 23 | logs 24 | mocks 25 | path_check 26 | split 27 | types 28 | utils 29 | workspace 30 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_datastore_cli/envoy_one/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_one: 6 | callable_func: 7 | settings: 8 | batch_size_train: 64 9 | index: 1 10 | n_collaborators: 2 11 | test_dataset: private_attributes.collaborator_private_attrs.test_dataset 12 | train_dataset: private_attributes.collaborator_private_attrs.train_dataset 13 | template: private_attributes.collaborator_private_attrs.collaborator_private_attrs 14 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_datastore_cli/envoy_two/envoy_config.yaml: -------------------------------------------------------------------------------- 1 | settings: 2 | director_host: localhost 3 | director_port: 50050 4 | 5 | envoy_two: 6 | callable_func: 7 | settings: 8 | batch_size_train: 64 9 | index: 1 10 | n_collaborators: 2 11 | test_dataset: private_attributes.collaborator_private_attrs.test_dataset 12 | train_dataset: private_attributes.collaborator_private_attrs.train_dataset 13 | template: private_attributes.collaborator_private_attrs.collaborator_private_attrs 14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | pygments>=2.7.4 # not directly required, pinned by Snyk to avoid a vulnerability 4 | recommonmark 5 | sphinx>=3.0.4 # not directly required, pinned by Snyk to avoid a vulnerability 6 | sphinx-copybutton 7 | sphinx-prompt 8 | sphinx-book-theme 9 | sphinx_substitution_extensions 10 | sphinxcontrib-mermaid 11 | sphinx-remove-toctrees 12 | sphinx-design 13 | sphinx-click 14 | sphinxext-rediraffe 15 | myst-nb>=1.0.0 16 | 17 | # Packages used for notebook execution 18 | rich[jupyter] 19 | -e . -------------------------------------------------------------------------------- /docs/openfl.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: openfl 2 | 3 | API Reference: ``openfl`` 4 | =========================== 5 | 6 | Subpackages 7 | ----------- 8 | 9 | .. toctree:: 10 | :maxdepth: 1 11 | 12 | reference/openfl.component 13 | reference/openfl.callbacks 14 | reference/openfl.cryptography 15 | reference/openfl.experimental 16 | reference/openfl.databases 17 | reference/openfl.federated 18 | reference/openfl.interface 19 | reference/openfl.pipelines 20 | reference/openfl.plugins 21 | reference/openfl.protocols 22 | reference/openfl.transport 23 | reference/openfl.utilities -------------------------------------------------------------------------------- /docs/structurizer_dsl/README.md: -------------------------------------------------------------------------------- 1 | 0. Structurizr DSL (diagram syntax) reference:
2 | https://github.com/structurizr/dsl/blob/master/docs/language-reference.md#
3 | 4 | 1. Working with Structurizr CLI:
5 | Article: 6 | https://dev.to/simonbrown/getting-started-with-the-structurizr-cli-10c2
7 | Git: 8 | https://github.com/structurizr/cli/blob/master/README.md
9 | 10 | 2. Using Structurizer CLI with Docker:
11 | https://github.com/aidmax/structurizr-cli-docker
12 | 13 | 3. Rendering C4 models with Structurizr locally:
14 | https://dev.to/simonbrown/getting-started-with-structurizr-lite-27d0
-------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_eden_compression/plan/data.yaml: -------------------------------------------------------------------------------- 1 | ## Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # all keys under 'collaborators' corresponds to a specific colaborator name the corresponding dictionary has data_name, data_path pairs. 5 | # Note that in the mnist case we do not store the data locally, and the data_path is used to pass an integer that helps the data object 6 | # construct the shard of the mnist dataset to be use for this collaborator. 7 | 8 | # collaborator_name ,data_directory_path 9 | one,1 -------------------------------------------------------------------------------- /openfl-workspace/torch/mnist_straggler_check/plan/data.yaml: -------------------------------------------------------------------------------- 1 | ## Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # all keys under 'collaborators' corresponds to a specific colaborator name the corresponding dictionary has data_name, data_path pairs. 5 | # Note that in the mnist case we do not store the data locally, and the data_path is used to pass an integer that helps the data object 6 | # construct the shard of the mnist dataset to be use for this collaborator. 7 | 8 | # collaborator_name ,data_directory_path 9 | one,1 -------------------------------------------------------------------------------- /docs/_templates/custom-exception-template.rst: -------------------------------------------------------------------------------- 1 | {% set truncated_fullname = fullname.split('.')[-1] %} 2 | {% if truncated_fullname | length < 4 %} 3 | {% set truncated_fullname = truncated_fullname.ljust(4) %} 4 | {% endif %} 5 | Exception - {{ truncated_fullname | escape | underline}} 6 | 7 | 8 | .. currentmodule:: {{ module }} 9 | 10 | .. autofunction:: {{ objname }} 11 | 12 | {% block attributes %} 13 | {% if attributes %} 14 | .. rubric:: {{ _('Attributes') }} 15 | 16 | .. autosummary:: 17 | {% for item in attributes %} 18 | ~{{ name }}.{{ item }} 19 | {%- endfor %} 20 | {% endif %} 21 | {% endblock %} -------------------------------------------------------------------------------- /docs/_templates/custom-function-template.rst: -------------------------------------------------------------------------------- 1 | {% set truncated_fullname = fullname.split('.')[-1] %} 2 | {% if truncated_fullname | length < 4 %} 3 | {% set truncated_fullname = truncated_fullname.ljust(4) %} 4 | {% endif %} 5 | Function - {{ truncated_fullname | escape | underline}} 6 | 7 | 8 | .. currentmodule:: {{ module }} 9 | 10 | .. autofunction:: {{ objname }} 11 | 12 | {% block attributes %} 13 | {% if attributes %} 14 | .. rubric:: {{ _('Attributes') }} 15 | 16 | .. autosummary:: 17 | {% for item in attributes %} 18 | ~{{ name }}.{{ item }} 19 | {%- endfor %} 20 | {% endif %} 21 | {% endblock %} -------------------------------------------------------------------------------- /openfl/pipelines/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 VMware, Inc. 2 | # SPDX-License-Identifier: Apache-2.0 3 | from importlib import util 4 | 5 | from openfl.pipelines.kc_pipeline import KCPipeline 6 | from openfl.pipelines.no_compression_pipeline import NoCompressionPipeline 7 | from openfl.pipelines.random_shift_pipeline import RandomShiftPipeline 8 | from openfl.pipelines.skc_pipeline import SKCPipeline 9 | from openfl.pipelines.stc_pipeline import STCPipeline 10 | from openfl.pipelines.tensor_codec import TensorCodec 11 | 12 | if util.find_spec("torch") is not None: 13 | from openfl.pipelines.eden_pipeline import EdenPipeline # NOQA 14 | -------------------------------------------------------------------------------- /docs/developer_guide/running_the_federation.tutorial.rst: -------------------------------------------------------------------------------- 1 | .. # Copyright (C) 2020-2023 Intel Corporation 2 | .. # SPDX-License-Identifier: Apache-2.0 3 | 4 | .. _running_tutorial: 5 | 6 | OpenFL Tutorials 7 | ================ 8 | 9 | These tutorials use the Jupyter\* \ Lab server to help you become familiar with the APIs used in Open Federated Learning (OpenFL). 10 | 11 | :ref:`running_notebook` 12 | Use this tutorial to familiarize with the APIs of the short-lived components (*Aggregator* and *Collaborator*). 13 | 14 | 15 | .. toctree:: 16 | :maxdepth: 2 17 | :hidden: 18 | 19 | running_the_federation.notebook 20 | 21 | -------------------------------------------------------------------------------- /openfl-workspace/keras/2dunet/plan/data.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | # all keys under 'collaborators' corresponds to a specific colaborator name the corresponding dictionary has data_name, data_path pairs. 5 | # Note that in the mnist case we do not store the data locally, and the data_path is used to pass an integer that helps the data object 6 | # construct the shard of the mnist dataset to be use for this collaborator. 7 | # 8 | # collaborator_name,data_directory_path 9 | 10 | one,1 11 | two,2 -------------------------------------------------------------------------------- /openfl/experimental/workflow/transport/grpc/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.transport.grpc package.""" 6 | 7 | from openfl.experimental.workflow.transport.grpc.aggregator_client import AggregatorGRPCClient 8 | from openfl.experimental.workflow.transport.grpc.aggregator_server import AggregatorGRPCServer 9 | from openfl.experimental.workflow.transport.grpc.director_client import ( 10 | EnvoyDirectorClient, 11 | RuntimeDirectorClient, 12 | ) 13 | from openfl.experimental.workflow.transport.grpc.director_server import DirectorGRPCServer 14 | -------------------------------------------------------------------------------- /docs/fx.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: fx 2 | 3 | CLI Reference: ``fx`` 4 | ===================== 5 | 6 | The ``fx`` CLI is how majority of OpenFL capabilities are made available to users. This includes commands for creating and managing workspaces, plans, models, and more. 7 | 8 | .. click:: openfl.interface.cli:cli 9 | :prog: fx 10 | :nested: full 11 | 12 | Subcommands 13 | ----------- 14 | 15 | .. toctree:: 16 | :maxdepth: 1 17 | 18 | reference/fx.workspace 19 | reference/fx.plan 20 | reference/fx.aggregator 21 | reference/fx.collaborator 22 | reference/fx.model 23 | reference/fx.pki 24 | reference/fx.experimental 25 | -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/defaults/tasks_fast_estimator.yaml: -------------------------------------------------------------------------------- 1 | aggregated_model_validation: 2 | function : validate 3 | kwargs : 4 | batch_size : 32 5 | apply : global 6 | metrics : 7 | - clean_accuracy 8 | - adversarial_accuracy 9 | 10 | locally_tuned_model_validation: 11 | function : validate 12 | kwargs : 13 | batch_size : 32 14 | apply : local 15 | metrics : 16 | - clean_accuracy 17 | - adversarial_accuracy 18 | 19 | train: 20 | function : train 21 | kwargs : 22 | batch_size : 32 23 | epochs : 1 24 | metrics : 25 | - adv_ce 26 | - base_ce 27 | -------------------------------------------------------------------------------- /.github/actions/tr_pre_test_run/action.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Composite Action to run pre-test functions for task runner end to end tests 3 | 4 | name: 'Pre-Test Functions' 5 | description: 'Run pre-test functions' 6 | 7 | runs: 8 | using: 'composite' 9 | steps: 10 | - name: Set up Python 11 | id: setup_python 12 | uses: actions/setup-python@v3 13 | with: 14 | python-version: ${{ env.PYTHON_VERSION }} 15 | 16 | - name: Install dependencies 17 | id: install_dependencies 18 | run: | 19 | python -m pip install --upgrade pip 20 | pip install . 21 | pip install -r test-requirements.txt 22 | shell: bash 23 | -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- 1 | # .readthedocs.yml 2 | # Read the Docs configuration file 3 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details 4 | version: 2 5 | 6 | build: 7 | os: "ubuntu-22.04" 8 | tools: 9 | python: "3.10" 10 | 11 | # Build documentation in the docs/ directory with Sphinx 12 | sphinx: 13 | configuration: docs/conf.py 14 | fail_on_warning: false 15 | 16 | # Optionally build your docs in additional formats such as PDF and ePub 17 | formats: 18 | - htmlzip 19 | 20 | # Optionally set the version of Python and requirements required to build your docs 21 | python: 22 | install: 23 | - requirements: docs/requirements.txt 24 | -------------------------------------------------------------------------------- /docs/about/notices_and_disclaimers.rst: -------------------------------------------------------------------------------- 1 | *********************** 2 | Notices and Disclaimers 3 | *********************** 4 | 5 | Copyright (C) 2020-2024 Intel Corporation. Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries. Other names and brands may be claimed as the property of others. 6 | 7 | ​​Intel technologies may require enabled hardware, software or service activation.​​​​ 8 | 9 | ​No product or compon​ent can be absolutely secure. ​ 10 | 11 | Your costs and results may vary. 12 | 13 | ​​No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document. 14 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_with_both_options/envoy_one/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # # SPDX-License-Identifier: Apache-2.0 3 | import numpy as np 4 | 5 | 6 | def collaborator_private_attrs(index): 7 | return { 8 | "train_loader_via_callable": np.random.rand(index * 50, 28, 28), 9 | "test_loader_via_callable": np.random.rand(index * 10, 28, 28), 10 | } 11 | 12 | 13 | collaborator_private_attributes = { 14 | "train_loader": np.random.rand(1 * 50, 28, 28), 15 | "test_loader": np.random.rand(1 * 10, 28, 28), 16 | } 17 | -------------------------------------------------------------------------------- /tests/github/experimental/workflow/FederatedRuntime/testcase_private_attributes_initialization_with_both_options/envoy_two/private_attributes/collaborator_private_attrs.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | import numpy as np 4 | 5 | 6 | def collaborator_private_attrs(index): 7 | return { 8 | "train_loader_via_callable": np.random.rand(index * 50, 28, 28), 9 | "test_loader_via_callable": np.random.rand(index * 10, 28, 28), 10 | } 11 | 12 | 13 | collaborator_private_attributes = { 14 | "train_loader": np.random.rand(1 * 50, 28, 28), 15 | "test_loader": np.random.rand(1 * 10, 28, 28), 16 | } 17 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/interface/cli/experimental.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """Experimental CLI.""" 6 | 7 | import os 8 | from pathlib import Path 9 | 10 | from click import group, pass_context 11 | 12 | 13 | @group() 14 | @pass_context 15 | def experimental(context): 16 | """Manage Experimental Environment.""" 17 | context.obj["group"] = "experimental" 18 | 19 | 20 | @experimental.command(name="deactivate") 21 | def deactivate(): 22 | """Deactivate experimental environment.""" 23 | settings = Path("~").expanduser().joinpath(".openfl", "experimental").resolve() 24 | 25 | os.remove(settings) 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /openfl/utilities/data_splitters/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.utilities.data package.""" 6 | 7 | from openfl.utilities.data_splitters.data_splitter import DataSplitter 8 | from openfl.utilities.data_splitters.numpy import ( 9 | DirichletNumPyDataSplitter, 10 | EqualNumPyDataSplitter, 11 | LogNormalNumPyDataSplitter, 12 | NumPyDataSplitter, 13 | RandomNumPyDataSplitter, 14 | ) 15 | 16 | __all__ = [ 17 | "DataSplitter", 18 | "DirichletNumPyDataSplitter", 19 | "EqualNumPyDataSplitter", 20 | "LogNormalNumPyDataSplitter", 21 | "NumPyDataSplitter", 22 | "RandomNumPyDataSplitter", 23 | ] 24 | -------------------------------------------------------------------------------- /openfl-workspace/torch/histology_s3/data/collaborator1/datasources.json: -------------------------------------------------------------------------------- 1 | { 2 | "s3_ds1": { 3 | "params": { 4 | "access_key_env_name": "MINIO_ROOT_USER_2", 5 | "endpoint": "http://localhost:9000", 6 | "secret_key_env_name": "MINIO_ROOT_PASSWORD", 7 | "secret_name": "vault_secret_name2", 8 | "uri": "s3://my-bucket-2/" 9 | }, 10 | "type": "s3" 11 | }, 12 | "s3_ds2": { 13 | "params": { 14 | "access_key_env_name": "MINIO_ROOT_USER", 15 | "endpoint": "http://localhost:9000", 16 | "secret_key_env_name": "MINIO_ROOT_PASSWORD", 17 | "secret_name": "vault_secret_name1", 18 | "uri": "s3://my-bucket/" 19 | }, 20 | "type": "s3" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /docs/deprecation.md: -------------------------------------------------------------------------------- 1 | # Python version support policy 2 | 3 | OpenFL extends the Python scientific community's [SPEC-0](https://scientific-python.org/specs/spec-0000/) recommendation of 36 months of support for Python versions, by 6 more months. This is in-line with [NumPy](https://numpy.org/neps/nep-0029-deprecation_policy.html), for which NEP-29 has been very successful. 4 | 5 | This translates to the following support policy: 6 | * **Python3.10** was released in October 2021, and will be supported by OpenFL at least until April 2025. 7 | * **Python3.11** was released in October 2022, and will be supported by OpenFL at least until April 2026. 8 | * **Python3.12** was released in October 2023, and will be supported by OpenFL at least until April 2027. 9 | -------------------------------------------------------------------------------- /openfl/federated/task/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """Task package.""" 6 | 7 | from importlib import util 8 | 9 | from openfl.federated.task.runner import TaskRunner # NOQA 10 | 11 | if util.find_spec("keras") is not None: 12 | from openfl.federated.task.runner_keras import KerasTaskRunner # NOQA 13 | if util.find_spec("torch") is not None: 14 | from openfl.federated.task.runner_pt import PyTorchTaskRunner # NOQA 15 | if util.find_spec("xgboost") is not None: 16 | from openfl.federated.task.runner_xgb import XGBoostTaskRunner # NOQA 17 | if util.find_spec("flwr") is not None: 18 | from openfl.federated.task.runner_flower import FlowerTaskRunner # NOQA 19 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Summary 2 | [Provide a short and descriptive summary of the pull request, e.g., "Improve caching mechanism for API calls"] 3 | 4 | ## Type of Change (Mandatory) 5 | Specify the type of change being made. 6 | - Feature enhancement 7 | - Bug fix 8 | - Documentation update 9 | - Security improvement 10 | - Others [Please specify] 11 | 12 | ## Description (Mandatory) 13 | [Explain the goal of this PR, the problem it solves and a summary of changes made. Reference any related issues or tickets (e.g., `Fixes #123`).] 14 | 15 | ## Testing 16 | [Describe the testing done for this PR. If applicable include screenshots.] 17 | 18 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "monthly" 7 | groups: 8 | github-actions: 9 | patterns: 10 | - "*" 11 | 12 | - package-ecosystem: "pip" 13 | directory: "/" 14 | schedule: 15 | interval: "monthly" 16 | open-pull-requests-limit: 3 17 | 18 | # Don't update these directories. 19 | - package-ecosystem: pip 20 | directory: /tests 21 | schedule: 22 | interval: "monthly" 23 | ignore: 24 | - dependency-name: "*" 25 | - package-ecosystem: pip 26 | directory: /openfl-workspace 27 | schedule: 28 | interval: "monthly" 29 | ignore: 30 | - dependency-name: "*" 31 | -------------------------------------------------------------------------------- /openfl/federated/data/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """Data package.""" 6 | 7 | from importlib import util 8 | 9 | from openfl.federated.data.loader import DataLoader # NOQA 10 | 11 | if util.find_spec("keras") is not None: 12 | from openfl.federated.data.loader_keras import KerasDataLoader # NOQA 13 | 14 | if util.find_spec("torch") is not None: 15 | from openfl.federated.data.loader_pt import PyTorchDataLoader # NOQA 16 | 17 | if util.find_spec("xgboost") is not None: 18 | from openfl.federated.data.loader_xgb import XGBoostDataLoader # NOQA 19 | 20 | if util.find_spec("flwr") is not None: 21 | from openfl.federated.data.loader_flower import FlowerDataLoader # NOQA 22 | -------------------------------------------------------------------------------- /openfl-workspace/experimental/workflow/FederatedRuntime/template_workspace/plan/plan.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | aggregator: 5 | template: openfl.experimental.workflow.component.Aggregator 6 | settings: 7 | rounds_to_train: 1 8 | 9 | collaborator: 10 | template: openfl.experimental.workflow.component.Collaborator 11 | settings: {} 12 | 13 | federated_flow: 14 | template: {} 15 | settings: {} 16 | 17 | network: 18 | template: openfl.federation.Network 19 | settings: 20 | agg_addr: auto 21 | agg_port: auto 22 | tls: True 23 | client_reconnect_interval: 5 24 | disable_client_auth: False 25 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | 3 | # You can set these variables from the command line, and also 4 | # from the environment for the first two. 5 | SPHINXOPTS ?= -D autodoc_default_options.imported-members=True -D nb_execution_mode=force 6 | SPHINXBUILD ?= sphinx-build 7 | SOURCEDIR = . 8 | BUILDDIR = _build 9 | 10 | # Put it first so that "make" without argument is like "make help". 11 | help: 12 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 13 | 14 | .PHONY: help Makefile 15 | 16 | # Catch-all target: route all unknown targets to Sphinx using the new 17 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 18 | %: Makefile 19 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -------------------------------------------------------------------------------- /.github/actions/wf_pre_test_run/action.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Composite Action to run pre-test functions for Workflow API end to end tests 3 | 4 | name: 'Pre-Test Functions for Workflow API' 5 | description: 'Run pre-test functions' 6 | 7 | runs: 8 | using: 'composite' 9 | steps: 10 | - name: Set up Python 11 | id: setup_python 12 | uses: actions/setup-python@v3 13 | with: 14 | python-version: ${{ env.PYTHON_VERSION }} 15 | 16 | - name: Install dependencies 17 | id: install_dependencies 18 | run: | 19 | python -m pip install --upgrade pip ipython ipykernel 20 | pip install . 21 | pip install -r openfl-tutorials/experimental/workflow/workflow_interface_requirements.txt 22 | pip install -r test-requirements.txt 23 | shell: bash 24 | -------------------------------------------------------------------------------- /docs/developer_guide/utilities.rst: -------------------------------------------------------------------------------- 1 | OpenFL Utilities 2 | ================ 3 | 4 | The following are utilities available in Open Federated Learning (OpenFL). 5 | 6 | :doc:`utilities/pki` 7 | Use the Public Key Infrastructure (PKI) solution workflows to certify the nodes in your federation. 8 | 9 | :doc:`utilities/verifiable_datasets` 10 | Build and verify datasets composed of multiple data sources. 11 | 12 | :doc:`utilities/splitters_data` 13 | Split your data to run your federation from a single dataset. 14 | 15 | :doc:`utilities/timeouts` 16 | Decorate methods to enforce timeout on it's execution. 17 | 18 | .. toctree:: 19 | :maxdepth: 1 20 | :hidden: 21 | 22 | utilities/pki 23 | utilities/verifiable_datasets 24 | utilities/splitters_data 25 | utilities/timeouts 26 | -------------------------------------------------------------------------------- /docs/developer_guide/openfl_structure.rst: -------------------------------------------------------------------------------- 1 | .. # Copyright (C) 2020-2023 Intel Corporation 2 | .. # SPDX-License-Identifier: Apache-2.0 3 | 4 | ************************************************* 5 | OpenFL Structure 6 | ************************************************* 7 | 8 | Learn about the short-lived and long-lived components that compose Open Federated Learning (OpenFL): 9 | 10 | - :doc:`structure/components` 11 | 12 | Understand the procedure calls to the Director service. 13 | 14 | - :doc:`structure/communication` 15 | 16 | Learn about the plugin framework that makes OpenFL flexible and extensible for your use: 17 | 18 | - :doc:`structure/plugins` 19 | 20 | 21 | .. toctree:: 22 | :maxdepth: 4 23 | :hidden: 24 | 25 | structure/components 26 | structure/communication 27 | structure/plugins -------------------------------------------------------------------------------- /docs/developer_guide/manual.rst: -------------------------------------------------------------------------------- 1 | .. # Copyright (C) 2020-2023 Intel Corporation 2 | .. # SPDX-License-Identifier: Apache-2.0 3 | 4 | ****** 5 | Manual 6 | ****** 7 | 8 | Establish a federation using GaNDLF 9 | 10 | - :doc:`running_the_federation_with_gandlf` 11 | 12 | Customize the federation: 13 | 14 | - :doc:`utilities` 15 | - :doc:`advanced_topics` 16 | 17 | Get familiar with the APIs: 18 | 19 | - `Open Federated Learning (OpenFL) Tutorials `_ 20 | 21 | Explore new and experimental features: 22 | 23 | - :doc:`experimental_features` 24 | 25 | .. toctree:: 26 | :maxdepth: 2 27 | :hidden: 28 | 29 | running_the_federation_with_gandlf 30 | utilities 31 | advanced_topics 32 | running_the_federation.tutorial 33 | experimental_features -------------------------------------------------------------------------------- /openfl-workspace/no-op/plan/plan.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | aggregator : 5 | defaults : plan/defaults/aggregator.yaml 6 | template : openfl.component.Aggregator 7 | settings : 8 | rounds_to_train : 0 9 | 10 | collaborator : 11 | defaults : plan/defaults/collaborator.yaml 12 | template : openfl.component.Collaborator 13 | 14 | data_loader : 15 | defaults : plan/defaults/data_loader.yaml 16 | template: src.data_loader.NoOpDataLoader 17 | 18 | task_runner : 19 | defaults : plan/defaults/task_runner.yaml 20 | template : src.task_runner.NoOpTaskRunner 21 | 22 | network : 23 | defaults : plan/defaults/network.yaml 24 | 25 | assigner : 26 | defaults : plan/defaults/assigner.yaml 27 | 28 | compression_pipeline : 29 | defaults : plan/defaults/compression_pipeline.yaml 30 | -------------------------------------------------------------------------------- /openfl/component/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | """OpenFL Component Module.""" 5 | 6 | from importlib import util 7 | 8 | from openfl.component.aggregator.aggregator import Aggregator 9 | from openfl.component.aggregator.straggler_handling import ( 10 | CutoffTimePolicy, 11 | PercentagePolicy, 12 | StragglerPolicy, 13 | WaitForAllPolicy, 14 | ) 15 | from openfl.component.assigner.assigner import Assigner 16 | from openfl.component.assigner.random_grouped_assigner import RandomGroupedAssigner 17 | from openfl.component.assigner.static_grouped_assigner import StaticGroupedAssigner 18 | from openfl.component.collaborator.collaborator import Collaborator 19 | 20 | if util.find_spec("flwr") is not None: 21 | from openfl.component.connector.connector_flower import ConnectorFlower 22 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, run tests and lint with a single version of Python 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions 3 | 4 | name: Check code format 5 | 6 | on: 7 | workflow_call: 8 | workflow_dispatch: 9 | 10 | permissions: 11 | contents: read 12 | 13 | jobs: 14 | build: 15 | if: github.event.pull_request.draft == false 16 | 17 | runs-on: ubuntu-latest 18 | 19 | steps: 20 | - uses: actions/checkout@v4 21 | - name: Set up Python 3 22 | uses: actions/setup-python@v5 23 | with: 24 | python-version: "3.10" 25 | - name: Install linters 26 | run: | 27 | python -m pip install --upgrade pip 28 | pip install -r linters-requirements.txt 29 | - name: Lint with OpenFL-specific rules 30 | run: bash scripts/lint.sh 31 | -------------------------------------------------------------------------------- /openfl/protocols/base.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2020-2023 Intel Corporation 2 | // Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | syntax = "proto3"; 5 | 6 | // This is only needed to initializing the model weights on the aggregator 7 | message ModelProto { 8 | repeated NamedTensor tensors = 1; 9 | } 10 | 11 | message NamedTensor { 12 | string name = 1; 13 | int32 round_number = 2; 14 | bool lossless = 3; 15 | bool report = 4; 16 | repeated string tags = 5; 17 | repeated MetadataProto transformer_metadata = 6; 18 | bytes data_bytes = 7; 19 | } 20 | 21 | message MetadataProto { 22 | map int_to_float = 1; 23 | repeated int32 int_list = 2; 24 | repeated bool bool_list = 3; 25 | } 26 | 27 | // handles large size data 28 | message DataStream { 29 | uint32 size = 1; // size, in bytes, of the data sent in npbytes 30 | bytes npbytes = 2; // actual data 31 | } 32 | -------------------------------------------------------------------------------- /openfl-workspace/flower-app-pytorch/src/app-pytorch/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["hatchling"] 3 | build-backend = "hatchling.build" 4 | 5 | [project] 6 | name = "app-pytorch" 7 | version = "1.0.0" 8 | description = "" 9 | license = "Apache-2.0" 10 | dependencies = [ 11 | "flwr-nightly==1.19.0.dev20250513", 12 | "flwr-datasets[vision]>=0.5.0", 13 | "torch==2.5.1", 14 | "torchvision==0.20.1", 15 | ] 16 | 17 | [tool.hatch.build.targets.wheel] 18 | packages = ["."] 19 | 20 | [tool.flwr.app] 21 | publisher = "openfl-dev" 22 | 23 | [tool.flwr.app.components] 24 | serverapp = "app_pytorch.server_app:app" 25 | clientapp = "app_pytorch.client_app:app" 26 | 27 | [tool.flwr.app.config] 28 | num-server-rounds = 3 29 | fraction-fit = 0.5 30 | local-epochs = 1 31 | 32 | [tool.flwr.federations] 33 | default = "local-poc" 34 | 35 | [tool.flwr.federations.local-poc] 36 | address = "127.0.0.1:9093" # this connects to flower --exec-api-address 37 | insecure = true 38 | -------------------------------------------------------------------------------- /docs/_templates/custom-class-template.rst: -------------------------------------------------------------------------------- 1 | {% set truncated_fullname = fullname.split('.')[-1] %} 2 | {% if truncated_fullname | length < 4 %} 3 | {% set truncated_fullname = truncated_fullname.ljust(4) %} 4 | {% endif %} 5 | Class - {{ truncated_fullname | escape | underline}} 6 | 7 | 8 | .. currentmodule:: {{ module }} 9 | 10 | .. autoclass:: {{ objname }} 11 | :members: 12 | :show-inheritance: 13 | :inherited-members: 14 | 15 | {% block methods %} 16 | .. automethod:: __init__ 17 | 18 | {% if methods %} 19 | .. rubric:: {{ _('Methods') }} 20 | 21 | .. autosummary:: 22 | {% for item in methods %} 23 | ~{{ name }}.{{ item }} 24 | {%- endfor %} 25 | {% endif %} 26 | {% endblock %} 27 | 28 | {% block attributes %} 29 | {% if attributes %} 30 | .. rubric:: {{ _('Attributes') }} 31 | 32 | .. autosummary:: 33 | {% for item in attributes %} 34 | ~{{ name }}.{{ item }} 35 | {%- endfor %} 36 | {% endif %} 37 | {% endblock %} -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /docs/mermaid/envoy_representation_and_RPCs.mmd: -------------------------------------------------------------------------------- 1 | sequenceDiagram 2 | participant ER as Envoy Representation 3 | participant D as Director 4 | participant E as Envoy 5 | participant F as Frontend API 6 | 7 | E-)+D: Acknowledge Shard request 8 | note over ER,D: Envoy registry is a dict-like object 9 | D->>ER: Creates and puts to the Registry 10 | activate ER 11 | D->>-E: Approves 12 | loop Healthcheck timeout 13 | E-)+D: Sends status 14 | D->>ER: Adds info or updates ER state 15 | activate ER 16 | D->>-E: Acknowledges 17 | end 18 | rect rgb(225, 255, 225) 19 | Note over D: API requests may overlap
with the healthcheck loop 20 | F-)+D: Requests Shard Registry 21 | D->>ER: Gets required info 22 | D->>-F: Replies with the Registry state 23 | end 24 | D-->E: Disconnect 25 | D-->D: Waits for several Healthcheck timeouts 26 | D->>ER: Removes from the Registry 27 | deactivate ER 28 | deactivate ER 29 | Note over ER: Will not be included in the next
API Registry request 30 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | minimum_pre_commit_version: 3.3.3 3 | repos: 4 | - repo: https://github.com/pre-commit/pre-commit-hooks 5 | rev: v4.4.0 6 | hooks: 7 | - id: end-of-file-fixer 8 | files: \.py$ 9 | - id: check-merge-conflict 10 | - id: check-case-conflict 11 | - id: check-json 12 | files: \.json$ 13 | - id: check-yaml 14 | files: \.yaml$ 15 | - id: debug-statements 16 | - id: pretty-format-json 17 | args: 18 | - --autofix 19 | files: \.json$ 20 | - id: trailing-whitespace 21 | files: \.py$ 22 | - repo: https://github.com/PyCQA/autoflake 23 | rev: v2.2.0 24 | hooks: 25 | - id: autoflake 26 | args: 27 | - --in-place 28 | - --remove-unused-variables 29 | - --recursive 30 | - --ignore-pass-statements 31 | - repo: https://github.com/PyCQA/bandit 32 | rev: 1.7.4 33 | hooks: 34 | - id: bandit 35 | args: ["-c", "pyproject.toml"] 36 | additional_dependencies: ["bandit[toml]"] -------------------------------------------------------------------------------- /openfl/interface/aggregation_functions/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from openfl.interface.aggregation_functions.adagrad_adaptive_aggregation import ( 6 | AdagradAdaptiveAggregation, 7 | ) 8 | from openfl.interface.aggregation_functions.adam_adaptive_aggregation import AdamAdaptiveAggregation 9 | from openfl.interface.aggregation_functions.core import AggregationFunction 10 | from openfl.interface.aggregation_functions.fed_bagging import FedBaggingXGBoost 11 | from openfl.interface.aggregation_functions.fedcurv_weighted_average import FedCurvWeightedAverage 12 | from openfl.interface.aggregation_functions.geometric_median import GeometricMedian 13 | from openfl.interface.aggregation_functions.median import Median 14 | from openfl.interface.aggregation_functions.secure_weighted_average import SecureWeightedAverage 15 | from openfl.interface.aggregation_functions.weighted_average import WeightedAverage 16 | from openfl.interface.aggregation_functions.yogi_adaptive_aggregation import YogiAdaptiveAggregation 17 | -------------------------------------------------------------------------------- /docs/mermaid/CSR_signing.mmd: -------------------------------------------------------------------------------- 1 | sequenceDiagram 2 | Title: Collaborator Certificate Signing Flow 3 | participant A as Alice 4 | participant AC as Alice's Collaborator Node 5 | participant B as Bob 6 | participant BG as Bob's Certificate Signing System 7 | A->>AC: Alice runs
`fx collaborator generate-cert-request`
to create .key and .csr file 8 | AC->>A: PKI script outputs a hash to the screen 9 | A->>B: Alice sends the .csr to Bob 10 | B->>BG: Bob moves the .csr
to the signing system with
`fx collaborator certify --request-pkg` 11 | B-->>A: Bob Calls Alice to confirm PKI 12 | Note over A,B: This is the **root of trust** : Bob called Alice to verify the hash 13 | A-->>B: Alice reads the hash to Bob 14 | Note over A,B: This ensures Bob is signing the same .csr Alice generated 15 | B->>BG: Bob runs script to sign .csr,
confirming the hash as input,
creating the .crt file 16 | B->>A: Bob sends the .crt file back to Alice 17 | A->>AC: Alice copies the signed certificate (.crt)
to her collaborator node.
She now has a signed certificate. 18 | -------------------------------------------------------------------------------- /openfl/utilities/path_check.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl path checks.""" 6 | 7 | import os 8 | from pathlib import Path 9 | from typing import Union 10 | 11 | 12 | def is_directory_traversal(directory: Union[str, Path]) -> bool: 13 | """Check for directory traversal. 14 | 15 | This function checks if the provided directory is a subdirectory of the 16 | current working directory. 17 | It returns `True` if the directory is not a subdirectory (i.e., it is a 18 | directory traversal), and `False` otherwise. 19 | 20 | Args: 21 | directory (Union[str, Path]): The directory to check. 22 | 23 | Returns: 24 | bool: `True` if the directory is a directory traversal, `False` 25 | otherwise. 26 | """ 27 | cwd = os.path.abspath(os.getcwd()) 28 | requested_path = os.path.relpath(directory, start=cwd) 29 | requested_path = os.path.abspath(requested_path) 30 | common_prefix = os.path.commonprefix([requested_path, cwd]) 31 | return common_prefix != cwd 32 | -------------------------------------------------------------------------------- /openfl/experimental/workflow/utilities/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.utilities package.""" 6 | 7 | from openfl.experimental.workflow.utilities.exceptions import ( 8 | ResourcesAllocationError, 9 | ResourcesNotAvailableError, 10 | SerializationError, 11 | ) 12 | from openfl.experimental.workflow.utilities.metaflow_utils import MetaflowInterface 13 | from openfl.experimental.workflow.utilities.resources import get_number_of_gpus 14 | from openfl.experimental.workflow.utilities.runtime_utils import ( 15 | check_resource_allocation, 16 | checkpoint, 17 | filter_attributes, 18 | generate_artifacts, 19 | parse_attrs, 20 | ) 21 | from openfl.experimental.workflow.utilities.stream_redirect import ( 22 | RedirectStdStream, 23 | RedirectStdStreamBuffer, 24 | RedirectStdStreamContext, 25 | ) 26 | from openfl.experimental.workflow.utilities.transitions import ( 27 | aggregator_to_collaborator, 28 | collaborator_to_aggregator, 29 | should_transfer, 30 | ) 31 | -------------------------------------------------------------------------------- /openfl/federated/data/sources/torch/verifiable_map_style_image_folder.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from openfl.federated.data.sources.torch.folder_dataset import LabelMapper 5 | from openfl.federated.data.sources.torch.image_folder import ImageFolder 6 | from openfl.federated.data.sources.torch.verifiable_map_style_dataset import ( 7 | VerifiableMapStyleDataset, 8 | ) 9 | 10 | 11 | class VerifiableImageFolder(VerifiableMapStyleDataset): 12 | """VerifiableImageFolder class for image folder datasets.""" 13 | 14 | def __init__(self, vds, transform=None, verify_dataset_items=False): 15 | self.label_mapper = LabelMapper() 16 | super().__init__(vds, transform=transform, verify_dataset_items=verify_dataset_items) 17 | 18 | def create_datasets(self): 19 | datasources = [] 20 | for data_source in self.verifiable_dataset_info.data_sources: 21 | datasources.append( 22 | ImageFolder(data_source, self.label_mapper, transform=self.transform) 23 | ) 24 | return datasources 25 | -------------------------------------------------------------------------------- /openfl/federated/data/sources/torch/image_folder.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | import io 5 | 6 | from PIL import Image 7 | 8 | from openfl.federated.data.sources.data_source import DataSource 9 | from openfl.federated.data.sources.torch.folder_dataset import FolderDataset, LabelMapper 10 | 11 | 12 | class ImageFolder(FolderDataset): 13 | def __init__(self, datasource: DataSource, label_mapper: LabelMapper, transform=None): 14 | """ 15 | Args: 16 | datasource (DataSource): DataSource object representing the data source. 17 | label_mapper (LabelMapper): LabelMapper object to map class names to indices. 18 | transform (callable, optional): Transformations to apply to loaded data. 19 | """ 20 | self.datasource = datasource 21 | super().__init__(label_mapper, transform=transform) 22 | 23 | def load_file(self, file_path): 24 | """Load a file from the dataset.""" 25 | raw_data = self.datasource.read_blob(file_path) 26 | return Image.open(io.BytesIO(raw_data)) 27 | -------------------------------------------------------------------------------- /tests/openfl/interface/test_model_api.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """Model interface tests module.""" 4 | 5 | from unittest import mock 6 | from unittest import TestCase 7 | from pathlib import Path 8 | 9 | from openfl.interface.model import save_ 10 | from openfl.federated.task import TaskRunner 11 | 12 | 13 | @mock.patch('openfl.interface.model.get_model') 14 | def test_model_save(mock_get_model): 15 | current_path = Path(__file__).resolve() 16 | plan_path = current_path.parent.joinpath('plan') 17 | plan_config = plan_path.joinpath('plan.yaml') 18 | cols_config = plan_path.joinpath('cols.yaml') 19 | data_config = plan_path.joinpath('data.yaml') 20 | 21 | mock_get_model.return_value = TaskRunner(data_loader=mock.Mock()) 22 | 23 | with TestCase.assertRaises(test_model_save, NotImplementedError): 24 | save_(['-i', current_path, 25 | '-p', plan_config, 26 | '-c', cols_config, 27 | '-d', data_config], standalone_mode=False) 28 | 29 | mock_get_model.assert_called_once() 30 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedEvaluation/Portland/private_attributes.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from copy import deepcopy 5 | 6 | import torch 7 | import torchvision\ 8 | 9 | 10 | 11 | # Download Test datasets 12 | 13 | mnist_test = torchvision.datasets.MNIST( 14 | "./files/", 15 | train=False, 16 | download=True, 17 | transform=torchvision.transforms.Compose( 18 | [ 19 | torchvision.transforms.ToTensor(), 20 | torchvision.transforms.Normalize((0.1307,), (0.3081,)), 21 | ] 22 | ), 23 | ) 24 | 25 | # shard the dataset according to collaborator index 26 | portland_col_idx = 0 27 | n_collaborators = 2 28 | batch_size_test = 1000 29 | 30 | local_test = deepcopy(mnist_test) 31 | 32 | local_test.data = mnist_test.data[portland_col_idx::n_collaborators] 33 | local_test.targets = mnist_test.targets[portland_col_idx::n_collaborators] 34 | 35 | 36 | portland_attrs = { 37 | 'test_loader': torch.utils.data.DataLoader(local_test,batch_size=batch_size_test, shuffle=True) 38 | } 39 | -------------------------------------------------------------------------------- /openfl/interface/aggregation_functions/fedcurv_weighted_average.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """FedCurv Aggregation function module.""" 6 | 7 | import numpy as np 8 | 9 | from openfl.interface.aggregation_functions.weighted_average import WeightedAverage 10 | 11 | 12 | class FedCurvWeightedAverage(WeightedAverage): 13 | """Aggregation function of FedCurv algorithm. 14 | 15 | Applies weighted average aggregation to all tensors 16 | except Fisher matrices variables (u_t, v_t). 17 | These variables are summed without weights. 18 | 19 | FedCurv paper: https://arxiv.org/pdf/1910.07796.pdf 20 | """ 21 | 22 | def call(self, local_tensors, tensor_db, tensor_name, fl_round, tags): 23 | """Apply aggregation.""" 24 | if tensor_name.endswith("_u") or tensor_name.endswith("_v") or tensor_name.endswith("_w"): 25 | tensors = [local_tensor.tensor for local_tensor in local_tensors] 26 | agg_result = np.sum(tensors, axis=0) 27 | return agg_result 28 | return super().call(local_tensors) 29 | -------------------------------------------------------------------------------- /openfl-tutorials/experimental/workflow/FederatedEvaluation/Bengaluru/private_attributes.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from copy import deepcopy 5 | 6 | import torch 7 | import torchvision 8 | 9 | 10 | # Download Test datasets 11 | 12 | mnist_test = torchvision.datasets.MNIST( 13 | "./files/", 14 | train=False, 15 | download=True, 16 | transform=torchvision.transforms.Compose( 17 | [ 18 | torchvision.transforms.ToTensor(), 19 | torchvision.transforms.Normalize((0.1307,), (0.3081,)), 20 | ] 21 | ), 22 | ) 23 | 24 | 25 | 26 | # shard the dataset according to collaborator index 27 | bengaluru_col_idx = 0 28 | n_collaborators = 2 29 | batch_size_test = 1000 30 | 31 | local_test = deepcopy(mnist_test) 32 | 33 | local_test.data = mnist_test.data[bengaluru_col_idx::n_collaborators] 34 | local_test.targets = mnist_test.targets[bengaluru_col_idx::n_collaborators] 35 | 36 | 37 | bengaluru_attrs = { 38 | 'test_loader': torch.utils.data.DataLoader(local_test,batch_size=batch_size_test, shuffle=True) 39 | } 40 | -------------------------------------------------------------------------------- /tests/openfl/interface/plan/plan.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | aggregator : 5 | defaults : plan/defaults/aggregator.yaml 6 | template : openfl.component.Aggregator 7 | settings : 8 | init_state_path : save/init.pbuf 9 | best_state_path : save/best.pbuf 10 | last_state_path : save/last.pbuf 11 | rounds_to_train : 10 12 | 13 | collaborator : 14 | defaults : plan/defaults/collaborator.yaml 15 | template : openfl.component.Collaborator 16 | settings : 17 | use_delta_updates: false 18 | opt_treatment : RESET 19 | 20 | data_loader : 21 | defaults : plan/defaults/data_loader.yaml 22 | 23 | task_runner : 24 | defaults : plan/defaults/task_runner.yaml 25 | 26 | network : 27 | defaults : plan/defaults/network.yaml 28 | 29 | assigner : 30 | defaults : plan/defaults/assigner.yaml 31 | 32 | tasks : 33 | defaults : plan/defaults/tasks_fast_estimator.yaml 34 | 35 | compression_pipeline : 36 | defaults : plan/defaults/compression_pipeline.yaml 37 | -------------------------------------------------------------------------------- /.github/workflows/pytest_coverage.yml: -------------------------------------------------------------------------------- 1 | # This workflow will run code coverage 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions 3 | 4 | name: Pytest and code coverage 5 | 6 | on: 7 | workflow_call: 8 | workflow_dispatch: 9 | 10 | permissions: 11 | contents: read 12 | 13 | env: 14 | # A workaround for long FQDN names provided by GitHub actions. 15 | FQDN: "localhost" 16 | 17 | jobs: 18 | build: 19 | if: github.event.pull_request.draft == false 20 | runs-on: ubuntu-latest 21 | timeout-minutes: 15 22 | 23 | steps: 24 | - uses: actions/checkout@v4 25 | - name: Set up Python 3 26 | uses: actions/setup-python@v5 27 | with: 28 | python-version: "3.10" 29 | - name: Install dependencies 30 | run: | 31 | python -m pip install --upgrade pip 32 | pip install pytest coverage 33 | pip install -r test-requirements.txt 34 | pip install . 35 | - name: Test with pytest and report code coverage 36 | run: | 37 | coverage run -m pytest -rA 38 | coverage report 39 | -------------------------------------------------------------------------------- /tests/end_to_end/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | addopts = -ra -q -s --junitxml=$HOME/results/results.xml -x 3 | testpaths = test_suites 4 | junit_family = xunit2 5 | results_dir = results 6 | log_level = INFO 7 | markers = 8 | log_memory_usage: mark a test as a log memory usage test. 9 | task_runner_basic: mark a test as a task runner basic test. 10 | task_runner_dockerized_ws: mark a test as a task runner dockerized workspace test. 11 | task_runner_basic_gandlf: mark a test as a task runner basic for GanDLF test. 12 | task_runner_connectivity: mark a test as a connectivity test. 13 | task_runner_with_s3: mark a test as a task runner with S3 test. 14 | task_runner_with_azure_blob: mark a test as a task runner with Azure Blob test. 15 | task_runner_with_all_ds: mark a test as a task runner with all data sources test. 16 | federated_runtime_301_watermarking: mark a test as a federated runtime 301 watermarking test. 17 | straggler_tests: mark a test as a straggler test. 18 | task_runner_fed_analytics: mark a test as a task runner analytics test. 19 | asyncio_mode=auto 20 | asyncio_default_fixture_loop_scope="function" 21 | -------------------------------------------------------------------------------- /tests/openfl/utilities/test_path_check.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """Path checks tests module.""" 4 | 5 | import os 6 | from pathlib import Path 7 | 8 | import pytest 9 | 10 | from openfl.utilities.path_check import is_directory_traversal 11 | 12 | 13 | @pytest.mark.parametrize( 14 | 'directory,expected_result', [ 15 | ('first_level', False), 16 | ('first_level/second_level', False), 17 | (os.getcwd(), False), 18 | (Path(os.getcwd(), 'first_level'), False), 19 | (Path(os.getcwd(), 'first_level/second_level'), False), 20 | ('first_level/second_level/..', False), 21 | ('first_level/../first_level', False), 22 | ('..', True), 23 | ('../../file', True), 24 | ('/home/naive_hacker', True), 25 | ('first_level/second_level/../../..', True), 26 | ('..', True), 27 | ('../../file', True), 28 | ]) 29 | def test_is_directory_traversal(directory, expected_result): 30 | """Test that is_directory_traversal works.""" 31 | assert is_directory_traversal(directory) is expected_result 32 | -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/plans/default/base_plan_interactive_api.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | aggregator : 5 | defaults : plan/defaults/aggregator.yaml 6 | template : openfl.component.Aggregator 7 | settings : 8 | init_state_path : save/init.pbuf 9 | best_state_path : save/best.pbuf 10 | last_state_path : save/last.pbuf 11 | rounds_to_train : 10 12 | 13 | collaborator : 14 | defaults : plan/defaults/collaborator.yaml 15 | template : openfl.component.Collaborator 16 | settings : 17 | delta_updates : false 18 | opt_treatment : RESET 19 | 20 | data_loader : 21 | defaults : plan/defaults/data_loader.yaml 22 | 23 | task_runner : 24 | template : openfl.federated.task.task_runner.CoreTaskRunner 25 | 26 | network : 27 | defaults : plan/defaults/network.yaml 28 | 29 | assigner : 30 | defaults : plan/defaults/assigner.yaml 31 | 32 | tasks : 33 | defaults : null 34 | 35 | compression_pipeline : 36 | defaults : plan/defaults/compression_pipeline.yaml -------------------------------------------------------------------------------- /openfl/utilities/data_splitters/data_splitter.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.utilities.data_splitters.data_splitter module.""" 6 | 7 | from abc import ABC, abstractmethod 8 | from typing import Iterable, List, TypeVar 9 | 10 | T = TypeVar("T") 11 | 12 | 13 | class DataSplitter(ABC): 14 | """Base class for data splitting. 15 | 16 | This class should be subclassed when creating specific data splitter 17 | classes. 18 | """ 19 | 20 | @abstractmethod 21 | def split(self, data: Iterable[T], num_collaborators: int) -> List[Iterable[T]]: 22 | """Split the data into a specified number of parts. 23 | 24 | Args: 25 | data (Iterable[T]): The data to be split. 26 | num_collaborators (int): The number of parts to split the data 27 | into. 28 | 29 | Returns: 30 | List[Iterable[T]]: The split data. 31 | 32 | Raises: 33 | NotImplementedError: This is an abstract method and must be 34 | overridden in a subclass. 35 | """ 36 | raise NotImplementedError 37 | -------------------------------------------------------------------------------- /.github/workflows/taskrunner.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, run tests and lint with a single version of Python 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions 3 | 4 | name: TaskRunner 5 | 6 | on: 7 | workflow_call: 8 | workflow_dispatch: 9 | 10 | permissions: 11 | contents: read 12 | 13 | env: 14 | # A workaround for long FQDN names provided by GitHub actions. 15 | FQDN: "localhost" 16 | 17 | jobs: 18 | build: 19 | if: github.event.pull_request.draft == false 20 | runs-on: ubuntu-latest 21 | timeout-minutes: 30 22 | 23 | steps: 24 | - uses: actions/checkout@v4 25 | - name: Set up Python 26 | uses: actions/setup-python@v5 27 | with: 28 | python-version: "3.10" 29 | - name: Install dependencies ubuntu 30 | run: | 31 | python -m pip install --upgrade pip 32 | pip install . 33 | - name: Task Runner API 34 | run: | 35 | python -m tests.github.test_hello_federation --template torch/mnist --fed_workspace aggregator --col1 collaborator1 --col2 collaborator2 --rounds-to-train 3 --save-model output_model -------------------------------------------------------------------------------- /openfl/experimental/workflow/utilities/resources.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020-2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | """openfl.experimental.workflow.utilities.resources module.""" 6 | 7 | from logging import getLogger 8 | from subprocess import PIPE, run 9 | 10 | logger = getLogger(__name__) 11 | 12 | 13 | def get_number_of_gpus() -> int: 14 | """Returns number of NVIDIA GPUs attached to the machine. 15 | 16 | This function executes the `nvidia-smi --list-gpus` command to get the 17 | list of GPUs. 18 | If the command fails (e.g., NVIDIA drivers are not installed), it logs a 19 | warning and returns 0. 20 | 21 | Returns: 22 | int: The number of NVIDIA GPUs attached to the machine. 23 | """ 24 | # Execute the nvidia-smi command. 25 | command = "nvidia-smi --list-gpus" 26 | try: 27 | op = run(command.strip().split(), shell=False, stdout=PIPE, stderr=PIPE) 28 | stdout = op.stdout.decode().strip() 29 | return len(stdout.split("\n")) 30 | except FileNotFoundError: 31 | logger.warning( 32 | f'No GPUs found! If this is a mistake please try running "{command}" ' + "manually." 33 | ) 34 | return 0 35 | -------------------------------------------------------------------------------- /openfl-docker/Dockerfile.workspace: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | # ------------------------------------ 4 | # Gramine-ready Workspace Image 5 | # Usage: 6 | # $> docker build . -t openfl-workspace -f Dockerfile.workspace \ 7 | # [--build-arg BASE_IMAGE=openfl:latest] \ 8 | # [--build-arg WORKSPACE_NAME=WORKSPACE_NAME] \ 9 | # [--secret id=signer-key,src=signer-key.pem] 10 | # ------------------------------------ 11 | ARG BASE_IMAGE=openfl:latest 12 | FROM ${BASE_IMAGE} 13 | 14 | USER root 15 | SHELL ["/bin/bash", "-o", "pipefail", "-c"] 16 | 17 | # Import workspace 18 | WORKDIR / 19 | ARG WORKSPACE_NAME 20 | COPY ${WORKSPACE_NAME}.zip /workspace.zip 21 | RUN fx workspace import --archive /workspace.zip && \ 22 | cd /workspace && \ 23 | pip install --no-cache-dir -r ./requirements.txt 24 | 25 | # Build enclaves 26 | WORKDIR /workspace 27 | RUN --mount=type=secret,id=signer-key,dst=/key.pem \ 28 | cp -r /opt/venv/lib/python3.10/site-packages/openfl-docker/gramine_app/* /workspace/ && \ 29 | make SGX=1 SGX_SIGNER_KEY=/key.pem >> fx.mr_enclave && \ 30 | echo "$(cat fx.mr_enclave)" && \ 31 | chown -R user /workspace 32 | 33 | USER user 34 | CMD ["/bin/bash"] -------------------------------------------------------------------------------- /tests/openfl/transport/rest/conftest.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2023 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | """Shared test configurations for transport tests.""" 4 | 5 | import pytest 6 | import logging 7 | from pathlib import Path 8 | 9 | 10 | @pytest.fixture(autouse=True) 11 | def setup_logging(): 12 | """Configure logging for tests.""" 13 | logging.basicConfig(level=logging.DEBUG) 14 | yield 15 | 16 | 17 | @pytest.fixture(autouse=True) 18 | def mock_environment(monkeypatch): 19 | """Mock environment variables and system settings.""" 20 | monkeypatch.setenv('PYTHONPATH', '') # Clear PYTHONPATH to avoid interference 21 | yield 22 | 23 | 24 | @pytest.fixture 25 | def test_data_dir(): 26 | """Get the test data directory.""" 27 | return Path(__file__).parent / 'data' 28 | 29 | 30 | @pytest.fixture(autouse=True) 31 | def setup_test_data(test_data_dir): 32 | """Set up test data directory.""" 33 | test_data_dir.mkdir(exist_ok=True) 34 | yield 35 | # Cleanup after tests if needed 36 | if test_data_dir.exists(): 37 | for file in test_data_dir.glob('*'): 38 | if file.is_file(): 39 | file.unlink() 40 | -------------------------------------------------------------------------------- /.github/workflows/openfl-docker-build.yml: -------------------------------------------------------------------------------- 1 | name: Build and Push Openfl Docker Image 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | version: 7 | description: 'Version to tag the Docker image with' 8 | required: false 9 | default: 'latest' 10 | 11 | env: 12 | VERSION: ${{ github.ref == 'refs/heads/develop' && 'latest' || '1.7' }} 13 | 14 | permissions: 15 | contents: read 16 | packages: write 17 | 18 | jobs: 19 | build-and-push: 20 | runs-on: ubuntu-latest 21 | 22 | steps: 23 | - name: Checkout code 24 | uses: actions/checkout@v4 25 | 26 | - name: Set up Docker Buildx 27 | uses: docker/setup-buildx-action@v3 28 | 29 | - name: Log in to GitHub Container Registry 30 | uses: docker/login-action@v3 31 | with: 32 | registry: ghcr.io 33 | username: ${{ github.actor }} 34 | password: ${{ secrets.GITHUB_TOKEN }} 35 | 36 | - name: Build and Push OpenFL Base Image 37 | uses: docker/build-push-action@v6 38 | with: 39 | context: . 40 | file: openfl-docker/Dockerfile.base 41 | push: true 42 | tags: | 43 | ghcr.io/${{ github.repository }}:${{ github.event.inputs.version || 'latest' }} 44 | -------------------------------------------------------------------------------- /openfl-workspace/no-op/src/data_loader.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Intel Corporation 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from openfl.federated.data.loader import DataLoader 5 | 6 | class NoOpDataLoader(DataLoader): 7 | """No-op data loader. 8 | 9 | This class is used when no data loader is needed. 10 | """ 11 | 12 | def __init__(self, **kwargs): 13 | """Initializes the NoOpDataLoader object. 14 | 15 | Args: 16 | kwargs: Additional arguments to pass to the function. 17 | """ 18 | super().__init__(**kwargs) 19 | 20 | def get_feature_shape(self): 21 | return None 22 | 23 | def get_train_loader(self, **kwargs): 24 | return None 25 | 26 | def get_valid_loader(self): 27 | return None 28 | 29 | def get_infer_loader(self): 30 | return None 31 | 32 | def get_train_data_size(self): 33 | return 0 34 | 35 | def get_valid_data_size(self): 36 | return 0 37 | 38 | def get_infer_data_size(self): 39 | return 0 40 | 41 | def get_train_data(self): 42 | return None 43 | 44 | def get_valid_data(self): 45 | return None 46 | 47 | def get_infer_data(self): 48 | return None 49 | -------------------------------------------------------------------------------- /docs/mermaid/pki_scheme.mmd: -------------------------------------------------------------------------------- 1 | sequenceDiagram 2 | Title: Collaborator Certificate Signing Flow 3 | participant A as Aggregator 4 | participant CA as CA 5 | participant C as Collaborator 6 | CA->>CA: 1. Create CA:
`step ca init --password-file pass_file` 7 | CA->>CA: 2. Up HTTPS CA server:
`step_ca ca_config.json` 8 | CA->>CA: 3. Generate JWK pair:
`step crypto jwk create pub.json priv.json --password-file pass_file` 9 | CA->>CA: 4. Get JWT for aggregator:
`step ca token localhost --key priv.json --password-file pass_file --ca-url ca_url` 10 | CA->>A: 5. Copy JWT to aggregator. 11 | A->>CA: 6. Certify node:
`step ca certificate localhost agg.crt agg.key --token AbC1d2E..` 12 | Note over A,CA: Get agg.crt 13 | CA->>CA: 7. Get JWT for collaborator:
`step ca token col_name --key priv.json --password-file pass_file --ca-url ca_url` 14 | CA->>C: 8. Copy JWT to collaborator. 15 | C->>CA: 9. Certify node:
`step ca certificate col_name col_name.crt col_name.key --token AbC1d2E..` 16 | Note over C,CA: Get col_name.crt 17 | CA->>A: 10. Copy root_ca.crt to aggregator 18 | Note over A,CA: This could be done at step 5 with token 19 | CA->>C: 11. Copy root_ca.crt to collaborator 20 | Note over C,CA: This could be done at step 8 with token -------------------------------------------------------------------------------- /openfl-workspace/workspace/plan/plans/default/plan.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020-2021 Intel Corporation 2 | # Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. 3 | 4 | aggregator : 5 | defaults : plan/defaults/aggregator.yaml 6 | template : openfl.component.Aggregator 7 | settings : 8 | init_state_path : save/init.pbuf 9 | best_state_path : save/best.pbuf 10 | last_state_path : save/last.pbuf 11 | rounds_to_train : 10 12 | 13 | collaborator : 14 | defaults : plan/defaults/collaborator.yaml 15 | template : openfl.component.Collaborator 16 | settings : 17 | delta_updates : false 18 | opt_treatment : RESET 19 | 20 | data_loader : 21 | defaults : plan/defaults/data_loader.yaml 22 | template : src.tfmnist_inmemory.TensorFlowMNISTInMemory 23 | settings : 24 | collaborator_count : 2 25 | data_group_name : mnist 26 | batch_size : 256 27 | 28 | task_runner : 29 | defaults : plan/defaults/task_runner.yaml 30 | template : src.keras_cnn.KerasCNN 31 | 32 | network : 33 | defaults : plan/defaults/network.yaml 34 | 35 | assigner : 36 | defaults : plan/defaults/assigner.yaml 37 | 38 | tasks : 39 | defaults : plan/defaults/tasks_keras.yaml 40 | --------------------------------------------------------------------------------