<h1 align="center">ReFedEz</h1>

<p align="center">
  <img src="docs/docs/assets/refedez.png" alt="ReFedEz Logo">
</p>

**ReFedEz** 🚀 is a Python application and library designed to simplify the implementation and deployment of federated learning architectures. It provides a command-line interface (CLI) for deploying servers and clients directly in their target environments, ensuring consistency and reproducibility, and a Python library that seamlessly integrates into your machine learning code, enabling federated learning to work "like magic" with minimal modifications.

Federated learning is a powerful technique for training machine learning models across distributed data sources while maintaining privacy. ReFedEz serves as the "fast.ai of federated learning" – a beginner-friendly framework that prioritizes simplicity and rapid prototyping. It abstracts the underlying complexities, allowing researchers and developers to focus on their ML innovations rather than infrastructure challenges.

## Demo 🎥

Experience ReFedEz in action:

<script id="asciicast-demo" src="https://asciinema.org/a/demo.js" async></script>

## Features ✨

- **Simplicity**: Deploy federated learning setups with ease, and adapt it with minimal code changes.
- **Multi-Backend Support**: Works with NumPy, PyTorch and TensorFlow.
- **Reproducible**: Bit by bit reproducible, thanks to nix and uv2nix.
- **Multi-Node encrypted by default**: Self-signed TLS certificates for the communication between nodes.

## Documentation 📚

For detailed guides, API reference, and more, visit the [Documentation](docs/index.md).

## Contributing 🤝

Contributions are welcome! Please see the documentation for guidelines.

## License 📄

This project is licensed under the [MIT license](LICENSE)
