PySyft README

The project's README from github.com/OpenMined/PySyft. As one markdown file: README.md.

Syft Logo

PySyft v2

syft 0.10+ is the successor of syft-client. syft is the sync engine (import syft as sy); datasets and jobs live in syft-rds (from syft_rds import login_do, login_ds). If you depend on the legacy PySyft ≤0.9 API, pin syft<0.10.

Unit Tests Integration Tests PyPI Python 3.10+ License: Apache 2.0

PySyft lets data scientists submit computations which are run by data owners on private data — all through cloud storage their organizations already use (Google Drive, Microsoft 365, etc.). No new infrastructure required.

Docs

Tutorials

Features

Quick Start

We assume two parties here, a Data Owner (DO) and a Data Scientist (DS), the DS wants to do an analysis on private data of the DO. For brevity we use code blocks, but in practice these would be distributed: each party executes their code on their own machine.

# Data scientist
uv pip install "syft>=0.10.0" "syft-rds>=0.6.0"
# Data owner (adds the background services)
uv pip install "syft>=0.10.0" "syft-rds>=0.6.0" "syft-bg>=0.3.12"
import syft as sy                          # sync engine + helpers (resolve_dataset_file_path, bug_report, ...)
from syft_rds import login_do, login_ds    # datasets + jobs (the Remote Data Science client)
# Login (colab auth, for non-colab pass token_path)
do = login_do(email="[email protected]") # use your own email
ds = login_ds(email="[email protected]") # use another email here

# Peer request & approve
ds.add_peer("[email protected]")
do.approve_peer_request("[email protected]")

# Create & sync dataset
do.create_dataset(
    name="census",
    mock_path="mock.txt", # create this and add some text
    private_path="private.txt", # create this and add some text
    users=["[email protected]"],
)
do.sync(); ds.sync()
datasets = ds.datasets.get_all()

Write an analysis.py that reads the dataset and produces a result in our case this is just the length of the data. Inside a job, resolve_dataset_file_path automatically resolves to the private data:

# analysis.py
import json
import syft as sy

data_path = sy.resolve_dataset_file_path("census")
with open(data_path, "r") as f:
    data = f.read()

with open("outputs/result.json", "w") as f:
    json.dump({"length": len(data)}, f)

Submit the job and retrieve results:

# Submit job
ds.submit_python_job(
    user="[email protected]",
    code_path="analysis.py",
)
ds.sync(); do.sync()

# Data owner Approves & runs job
do.jobs[0].approve()
do.process_approved_jobs(share_outputs_with_submitter=True)
do.sync(); ds.sync()
result = open(ds.jobs[-1].output_paths[0]).read()

Packages

Package Description
syft-rds Remote Data Science client: login_do/login_ds, datasets, jobs
syft-datasets Dataset management and sharing
syft-job Job submission and execution
syft-permissions Permission system for Syft datasites
syft-perms User-facing permission API for Syft datasites
syft-bg Background services TUI dashboard for SyftBox
syft-notebook-ui Jupyter notebook display utilities

Development

# Install in development mode
uv pip install -e .

# Run tests
just test-unit          # Unit tests (fast, mocked)
just test-integration   # Integration tests (slow, real API)

Built by OpenMined — building open-source technology for privacy-preserving data science and AI.

Support

For questions about PySyft, reach out via #support on Slack.

Community

Supported by the OpenMined Foundation, the OpenMined Community is an online network of over 17,000 technologists, researchers, and industry professionals keen to unlock 1000x more data in every scientific field and industry.

Contributors

OpenMined and Syft appreciates all contributors, if you would like to fix a bug or suggest a new feature, please reach out via Github or Slack!

Contributors

About OpenMined

OpenMined is a non-profit foundation creating technology infrastructure that helps researchers get answers from data without needing a copy or direct access. Our community of technologists is building Syft.

Supporters

License

Apache License 2.0
Person icons created by Freepik - Flaticon

PySyft (OpenMined/PySyft)

distributed-computing
Searching Database…

10K ·GitHub
What is this?PySyft (the 'syft' package) lets you perform data science on data that stays on someone else's server, so researchers can get answers from data without needing a copy or direct access to it.
Is this a library I import, or a standalone app?It is a Python library/sync engine you import as `syft`, paired with a separate package (`syft-rds`) that manages datasets and jobs.
How do I start using it?Install the `syft` package and `import syft as sy` to use the sync engine; for managing datasets and jobs you additionally use `syft-rds` via `from syftrds import logindo, loginds`.
Do I need PyTorch to use it?The project is built around PyTorch and deep-learning/federated-learning workflows, based on its listed topics, though the exact dependency requirements aren't detailed in this README excerpt.
Will my existing PySyft code keep working after this update?No — syft 0.10+ is a new architecture that succeeds the old syft-client; if you rely on the legacy PySyft ≤0.9 API you need to pin to an older syft version instead of upgrading.
How does it keep data private if I never copy it?It's built by OpenMined specifically so researchers can get answers from data without needing a copy or direct access to the data itself, keeping the data on its original server.
What kind of techniques does Syft use to protect data?Based on its GitHub topics, Syft combines cryptography, secure computation, and federated learning to let computations run on remote data without exposing it.
Is there an older version I should know about?Yes, prior to 0.10 the project had a different architecture (syft-client); if you need that legacy behavior you should pin to a PySyft ≤0.9 release.
Creator
OpenMined
Size
766.3 MB
Stars
10K
Age
9y
Commits · 90 Days