Building blocks for SyftBox applications to communicate with each other and external services.
SyftBox Extras provides essential packages that enable:
- π Secure file permissions with the new
syft.pub.yaml
format - π End-to-end encryption using the X3DH protocol
- π Inter-app communication via
syft://
URLs - π External API integration through HTTP bridging
- π¦ Object serialization for distributed communication
- ποΈ Application scaffolding with client and workspace management
The packages serve different layers of the SyftBox communication stack:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Application Layer β
β β’ SyftBox Apps use these packages for communication β
β β’ Receive data via syft:// or http:// URLs β
β β’ Use syft-core for permissions and client management β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Communication Layer β
β β’ syft-event: Handles syft:// URLs with routing β
β β’ syft-http-bridge: Bridges HTTP β filesystem β
β β’ syft-rpc: Request/Response serialization β
β β’ syft-crypto: End-to-end encryption using X3DH β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Infrastructure Layer β
β β’ SyftBox Cache Server: Optional Encrypted data routing β
β β’ No direct TCP connections needed β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Foundation package providing client configuration, workspace management, and the new permissions system.
Key Features:
- π New
syft.pub.yaml
permission format with terminal flags - π Auto-conversion from old
syftperm.yaml
format - π Workspace and datasite management
- π SyftBox URL handling
Event-driven RPC system for handling syft://
URL requests between applications.
Key Features:
- π Simple routing with
@router.on_request()
- π¨ Request/Response pattern
- π Filesystem watching for events
- πΊοΈ Automatic schema generation
Low-level serialization protocol supporting complex Python objects and RPC primitives.
Key Features:
- π Serialize/deserialize Python objects
- π¦ Support for Pydantic models and dataclasses
- π Full UTF-8 support
- π Type validation and security
Enables SyftBox apps to communicate with external HTTP APIs through filesystem transport.
Key Features:
- π HTTP client that works through filesystem
- π€ Automatic request/response serialization
- π Host whitelisting for security
- β‘ Connection pooling and caching
End-to-end encryption utilities for SyftBox using a simplified X3DH protocol implementation.
Key Features:
- π Forward secrecy with ephemeral keys
- π Mutual authentication via signed prekeys
- π‘ Asynchronous communication through DID documents
- π High performance with 2 DH operations instead of 4
- π W3C DID standards compliance
syft-proxy (DEPRECATED)
Previously provided HTTP β syft:// translation. This functionality is now integrated into the SyftBox Cache Server.
Install all packages:
# Install the packages from PyPI
pip install syft-core
pip install syft-event
pip install syft-rpc
pip install syft-http-bridge
pip install syft-crypto
## Higher-Level Abstraction
For easier development, check out [FastSyftBox](https://github.com/OpenMined/fastsyftbox) - a FastAPI-compatible server template that combines syft-core, syft-rpc, syft-events, and syft-http-bridge into one cohesive system.
## Documentation
- π [Architecture Overview](docs/architecture-overview.md)
- π [syft-core Documentation](docs/syft-core.md)
- π [syft-event Documentation](docs/syft-event.md)
- π [syft-rpc Documentation](docs/syft-rpc.md)
- π [syft-http-bridge Documentation](docs/syft-http-bridge.md)
- π [syft-crypto Documentation](packages/syft-crypto/README.md)
- π [syft-proxy Documentation](docs/syft-proxy.md) (Deprecated)
## Development
### Running Tests
Test all packages:
```bash
# Unix/macOS
./test.sh
# Windows
./test.ps1
# Or test individual packages
cd packages/syft-core
uv run pytest
Run linting with auto-fix:
# Unix/macOS
./lint.sh
# Windows
./lint.ps1
The original experimental examples are still available:
Start the pong RPC server:
just run-pong
Make a ping RPC request to the pong server:
just run-ping
The HTTP proxy functionality has been moved to the SyftBox Cache Server.
- syft-files - File management package (not yet started)
- Distributed Tracing - Better debugging across services
- Schema Registry - Centralized type definitions
We welcome contributions! Please see our contributing guidelines (coming soon).
Apache License 2.0