# Workload Sandboxing

How Fabric isolates workloads for security

## Overview

Every workload on Fabric runs in a sandboxed environment. This protects:

- Device owners from malicious code
- Job submitters from data leaks
- The network from compromised nodes

* * *

## Sandbox Technology

Fabric uses OS-native sandboxing mechanisms for each platform:

**macOS:**

- Uses Apple built-in sandboxing
- Same technology used by App Store apps
- No additional software required

**Linux:**

- Uses kernel namespaces
- Provides process, network, and filesystem isolation

**Windows:**

- Uses restricted process tokens
- Process group isolation
- Limited system call access

* * *

## What is Restricted

**Network access:**

- Outbound network connections are blocked
- Workloads cannot access the internet
- Cannot communicate with other processes

**Filesystem access:**

- Limited to temporary working directory
- Cannot read system files
- Cannot write outside workspace
- Workspace is deleted after job completion

**System calls:**

- Limited to necessary operations
- Cannot access hardware directly
- Cannot spawn unrestricted processes

* * *

## What is Allowed

**Read access:**

- System libraries (for Python packages to work)
- Temporary workspace files
- Input data provided by the job

**Write access:**

- Temporary workspace only
- Output files designated by the workload

**Compute:**

- Full CPU access (within resource limits)
- GPU access (if job requires it)
- Memory up to configured limits

* * *

## Resource Limits

Each job has configurable limits:

- **Timeout:** Maximum execution time (default: 30 minutes)
- **Memory:** Maximum RAM usage
- **CPU:** Process priority

Jobs exceeding these limits are terminated and marked as failed.

* * *

## Custom Workloads

Custom workloads uploaded by enterprises run with the same sandboxing.

The sandbox prevents custom code from:

- Accessing the device owner files
- Making network requests
- Persisting data between jobs
- Interfering with other processes

* * *

## Proof of Execution

After each job, the agent generates a Proof of Execution containing:

- SHA256 hash of workload code
- SHA256 hash of input data
- SHA256 hash of output
- Execution timing
- Anonymized node identifier

This provides verification that the job was executed correctly.

* * *

## Privacy Protection

**For device owners:**

- Your personal files are never accessible to workloads
- Your identity is anonymized to job submitters
- Workloads cannot exfiltrate data (no network access)

**For job submitters:**

- Your code and data are processed in isolation
- Other workloads cannot access your data
- Results are uploaded securely
