Skip to main content

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

Syft-client

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

Docs

Features

  • Privacy-preserving — Private data never leaves the data owner's machine; only approved results are shared
  • Transport-agnostic — Works over Google Drive today, extensible to any file-based transport
  • Offline-first — Full functionality even when peers are offline; changes sync when connectivity resumes
  • Peer-to-peer with explicit auth — Data owners must approve each collaborator before any data flows
  • Isolated job execution — Jobs run in sandboxed Python virtual environments with controlled access to private data
  • Dataset sharing with mock/private separation — Data scientists explore mock data, then submit jobs that run on the real thing

Quick Start

uv pip install syft-client
import syft_client as sc
# Login (colab auth, for non-colab pass token_path)
do = sc.login_do(email="do@org.com")
ds = sc.login_ds(email="ds@org.com")

# Peer request & approve
ds.add_peer("do@org.com")
do.approve_peer_request("ds@org.com")

# Create & sync dataset
do.create_dataset(
    name="census",
    mock_path="mock.txt",
    private_path="private.txt",
    users=["ds@org.com"],
)
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_client as sc

data_path = sc.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="do@org.com",
    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-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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

syft_client-0.1.117.tar.gz (106.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

syft_client-0.1.117-py3-none-any.whl (123.6 kB view details)

Uploaded Python 3

File details

Details for the file syft_client-0.1.117.tar.gz.

File metadata

  • Download URL: syft_client-0.1.117.tar.gz
  • Upload date:
  • Size: 106.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for syft_client-0.1.117.tar.gz
Algorithm Hash digest
SHA256 efbe9efbea3e3436c8fbe56487f1264b062a969e88390211863048cd6973858b
MD5 d8702cef5c1150345be7808dcb5428bb
BLAKE2b-256 c5925ca376a38cc3d62b679292110efb075ea5ac368ee7534840640fe2e531ca

See more details on using hashes here.

File details

Details for the file syft_client-0.1.117-py3-none-any.whl.

File metadata

  • Download URL: syft_client-0.1.117-py3-none-any.whl
  • Upload date:
  • Size: 123.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for syft_client-0.1.117-py3-none-any.whl
Algorithm Hash digest
SHA256 6dd9f0a4347dba2942f68cfc8938529df33b8ac7723bbe09f7c74463b79e5f6c
MD5 b877f768d1271ed5f307ee7438753d56
BLAKE2b-256 8a599c6c0333c9b922d258bc95319932c27a15ebf0b9b37f00149cd3fe7c6e4a

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page